I use CSIData and love them. Yes, software is a bit clunky at times, but once it is setup, you just schedule it to update automatically. I rarely have to interact with the software; only when adding new instruments, which isn't too often. 150 futures isn't enough? BTW, if you want to trade different contracts of the same instrument, say June Crude Oil (CL) and December Crude Oil (CL), that only counts as one future.
With dynamic optimisation there actually is no upper limit on how many futures can be traded. Of course there a diminishing returns to diversification. Onboarding more futures has other advantages too, like making your statistical tests more meaningful or stabilising estimated measures like turnover, forecasts scalars and so forth.
I personally wouldn't pay any extra money for additional data-sources (even extra 10$ per month will become a lot of money over the lifetime), the IB's data is of mediocre quality but it's cheap and I think sufficient for this type of trading. Getting additional 150 futures might be beneficial, but probably only marginally and the amount of work onboarding them is something to consider.. Also, I think Rob has a lot more than 100 instruments in his system and he is using IB data..
The diminishing returns here arrive very quickly. Unless you are trading very slow systems, or have a very limited number of years of data, you only need a few instruments to get stable estimates of these things. Rob
I have a question about carry, regarding the carry offset (current - front vs front - current). I see a few instruments in my data that use a carry offset of +1 despite having reasonable volume in the second month. Consider the term structure of orange juice in the screenshot as an example. Does OJ have in pysystemtrade an offset of +1 for historic reasons when the volume profile of OJ was different? I tend to simply change the CarryOffset parameter of such instruments but am not sure, if I am missing something.
GAT has pointed out pysystemtrade simulates drawdowns based on the fixed capital basis (e.g. 100K in this case), but in live trading risk is adjusted based on real capital base. This graph is supposed to approximately visualize what the realized drawdown would be as capital declined and risk was scaled down on an optimised portfolio where the vol target is cranked up. Max Fixed Drawdown: 79.31% Max Declining Drawdown: 57.19% Drawdown Difference: 22.12%