Discussion: Components of a framework

Intro

So I've been lurking here for a while now, but just started to dip my feet into this stuff the past few weeks. When I was doing my initial research about what sort of software I would need to get up and running, many people suggested prebuilt trading pipelines such as Quantopian.

For a few days, I was struggling to find "just the right amount of wheel to reinvent", if that makes sense. I am a linux user and greatly enjoy setting most things up from scratch, from my text editor to my music player. I want to know how everything works, and not rely on the whims of an external entity. Relying on a prebuilt set of proprietary tools immediately went against my gut instinct, and the recent closure of Quantopian has only reaffirmed this.

Now I am realizing that I should be rolling most, if not all, of my infrastructure from scratch. So far, I have been getting myself familiar with pulling down data, processing it with a basic SMAC or MACD strategy, and plotting some basic metrics with matplotlib.

Now obviously I have a lot of work to do when it comes to actually developing a deployable strategy, but I would like to lay the software groundwork to make that as painless as possible. I'm not really even worried about deployment because that's a ways off for me.

Discussion

So my question is this: How is your general infrastructure laid out?

  • Do you keep your backtesting and live trading separated? I envision backtesting being used to narrow down my strategy, which then I could plug into a driver program that actually executes trades.
  • What is your workflow for adding/developing a new strategy?
  • How much of your code is modular/reusable?

Currently, I have each strategy separated into its own file, and then a tiny driver program that prompts me for a symbol and runs it through the strategy. A coupe key metrics are calculated, but i'm really just experimenting.

Ideally, I would like to have modular, reusable code that will allow me to develop strategies quickly and give me an idea of their performance through backtesting. I think that passing pandas dataframes from program to program makes sense as a "universal" data type. For example I could have a maximum_drawdown.py that I can call from any strategy, passing in a dataframe of returns.

  • What key metrics should I be looking at?
  • Do you stick with a few symbols/currency pairs or dynamically search for them?
  • Do you backtest with a papertrading account (keeping track of portfolio) or just by the raw data?
  • Do you look for a strategy that works ok on lots of symbols or really well on one?

Any ideas or input would be appreciated. Thanks!

Submitted October 31, 2020 at 03:46PM by Ken_Mcnutt
via https://ift.tt/34ITNkv

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s