Hey folks, here's another update from me. First was
https://elitetrader.com/et/threads/fully-automated-futures-trading.289589/page-209#post-5055797 and second was
https://elitetrader.com/et/threads/fully-automated-futures-trading.289589/page-217#post-5127521.
TL;DR - in a nasty drawdown, same as a few other folks I've seen here (hang in there Kernfusion!

)
Here's the money shot since inception (comparing to S&P 500 because that's what I got data for, in future, I'll probably benchmark against 60/40 as that's what I would put my money in if I wasn't doing this. I know it's not apples to apples, but it's what makes sense for me):
View attachment 242944
Here's the nasty bit:
View attachment 242945
Was it not for extreme volatility and luck at the beginning, I'd be down, and not up 7% (I am still down a few percent in cash terms because I didn't deposit full amount all at once when I opened my account, but over the course of 2 months).
Since the last time, I've focused a bit on refactoring of the system architecture and a bit on research. Few words on each.
The system is 80% (I got a few more weeks to get to 100%) event-driven, meaning that different components send events between each other to communicate. For example, instrument component is in charge of fetching new prices, and when it gets a new price, it emits NewPrice event, which forecasting component is registered to receive. Forecasting is executed and that emits ForecastUpdated, which position component receives and so on. This makes is very easy to test each component in isolation as well as end-to-end test everything together. I also implemented event logging so in one place I can see exactly what's happening. I didn't want to complicate things so all this event passing is done in-memory, withing a single process (system works with daily prices so I got all the time in the world). Some day I might move to a proper messaging platform like PubSub on Google Cloud or roll out my own (I had good results with Redis before).
Here's a snapshot of what that looks like:
Code:
2020-10-27 19:56:51,169 INFO PROD messagebus Handling message PositionUpdated(timestamp=datetime.datetime(2007, 9, 5, 23, 0), symbol='GBP', position=Decimal('2.553'), avg_position=Decimal('4.331'))
2020-10-27 19:56:51,246 INFO PROD messagebus Handling message ScheduleTrade(timestamp=datetime.datetime(2007, 9, 5, 23, 0), symbol='GBP', contract_ym=202012, quantity=1)
2020-10-27 19:56:51,248 INFO PROD messagebus Handling message ForecastUpdated(timestamp=datetime.datetime(2007, 9, 5, 23, 0), symbol='PL', forecast=Decimal('-2.507), instrument_risk=Decimal('0.136))
Besided that, I spent a bunch of time making my own backtesting plumbing that also has reporting. I tried PyFolio, but it seems not to be maintained anymore and I didn't need half of what they have. 2 screenshots above are from that work, it's all in Jupyter. I've made it modular so I can just pass in trades and it spits out all the stats. That means that I get the same stats for realized performance (I just pass in my executed trades) as for backtest (I hook up ScheduleTrade event to execute a trade in the backtest plumbing). Here's one more screenshot, this time from a backtest.
View attachment 242946
I'm adding more stuff into this, but I've realized there's an infinite number of stats and graph one can add, so this seems like "less-is-more" type of a thing.
For research, I've settled on the notebook-per-topic approach, so I have notebooks like ForecastAnalysis (analyses average forecasts for rules), DiversificationMultipliers, RealizedPerformance and so on. I haven't yet solved the problem of versioning Jupyter notebooks in git, all the methods out there seem like hacks to me, but I think this might be one of those things where there's no ideal solution.
I'm planing to add 9 more markets (currently trading 12) few weeks after the elections, I don't have any solid data on this but I thought I didn't want to double my account and add markets and exposure just before US elections, maybe that's just being too conservative, but I'll sleep better.

I am a bit concerned with the current drawdown but I'm still not touching anything. In the backtest, the system did have one nasty drawdown of 55% around 2007 (mostly due to ESTX50, see below) so it's not like this is atypical.
I do have one question for folks here, do you have markets that are not profitable (or are even losers) in the long term backtest in your portfolio? ESTX50 is that for me, over the 20 year backtest, that just consistently loses money. I'm not pulling it out of portfolio yet because I don't want to cherrypick (I realize that what happened in the past is not the best indication of future) but 20 years does seem like a good amount of data, and it includes 2 bigger crisis periods as well. Do you pull markets like that out or keep them in?