I think we're looking at different things. I see consistent data format and consistent equity progression. See pic attached. Equity starts 487 USD on August 18th and ends 538.5 USD on Sep 13th (DD/MM/YYYY date format).
Is it that in line with what you see?
Can you help answer these questions from other members on futures io?
Here I am. I spent a couple of hours putting together the approach I adopted and the features developed in my portfolio management sw.
Hope you enjoy the pdf (forgiving any typo)
Thanks for sharing this!
I have been thinking about a way to implement this with Ninjatrader and 100+ strats, but other work obligations have left my dev time for trading extremely limited.
This will serve as a nudge to get me started again
Couple of questions:
- Do you do the walk-forward in Ninjatrader, or do you run that of platform?
- Is it you manually switching on/off strats every week, or have you implemented it so it is automatic? (I've found Ninjatrader is not so keen on allowing me to enable/disable strats automatically. It is possible, but I have found it is easiest to just have a test at the beginning of the script--> if(!allowedToTrade) return; kind of thing
- Do you use stats form Ninjatraders performance review, or do just grab the trades and calculate this in python instead?
- Are you using .csv's for crossplatform interaction? I've planned to use some database (haven't decided which) for this bit. That way I can just query it from wherever in the process for the results, optimisation parameters, on-off etc
Anyway, this is a cool project!
I hope I will get mine up and running and not get lost in the endless possibilities for optimizing it.
The following user says Thank You to s2los for this post:
Hi s2los, thanks gor your kind feedback. See my answers [A] below
- Do you do the walk-forward in Ninjatrader, or do you run that of platform?
[A]: WF is in Python. Each WE the trade/stop mask is calculated and applied to the next week. Equity is shown for one year back today.
- Is it you manually switching on/off strats every week, or have you implemented it so it is automatic? (I've found Ninjatrader is not so keen on allowing me to enable/disable strats automatically. It is possible, but I have found it is easiest to just have a test at the beginning of the script--> if(!allowedToTrade) return; kind of thing
[A] Manually. I did a lot of automation in the process but not this
- Do you use stats form Ninjatraders performance review, or do just grab the trades and calculate this in python instead?
[A] the latter. I take only trades and do everything off-line. Well, I wrote an equity curve management in NT and it's possible to enable it on each strategy I design. But it resulted to be not a practical way to manage portfolios with more than 10 or 20 algos.
- Are you using .csv's for crossplatform interaction? I've planned to use some database (haven't decided which) for this bit. That way I can just query it from wherever in the process for the results, optimisation parameters, on-off etc
[A] csv with some kind of talking strategy name. In this way python knows which instrument was traded by that file. More, I can group strategies and plot a sub-equity curves. For examples, I have many strategies based on a fisher transform engine. I call all of them FISH_xxxx and the export tool in NT is exporting trades with FISH_xxxx.csv filename.
I hard coded grouping names in the portfolio management sw, by clicking on the list (you can see the thin-long window on the left) so to have an immediate picture of how those engines are behaving in general. The same for instrument, I can have a sub-equity grouping, say, MGC, where all strategies trading MGC are grouped.
Anyway, this is a cool project!
I hope I will get mine up and running and not get lost in the endless possibilities for optimizing it.
[A] my suggestion is to think a way to export data first. It can make the difference
Calculation time is about 2 minutes for 75 strategies, each of them one year long.
In my approach, I collect all trades in a global trading dataframe and resample all to a common time step. The highest resampling, the fastest it goes, the lowest the accuracy. I use 2H resampling (2 hours).
With weekly or monthly table I mean a weekly or monthly "report", in a table. Not ready yet. But yesterday I added a day-of-the-week report, that I was curios to develop since a lot of time. Results attached, Monday to Friday, last 4 months.
For file naming and instrument recognizing, see my answer to s2los