From C2 Labs - New Beta Test: Portfolio Time Machine

From the C2 Labs:

https://collective2.com/beta/portfolio-time-machine

What is it?

People have asked for a more advanced “Grid” which lets users select strategies based on performance criteria that existed in the past, and which allows you to see how strategies selected due to this past data would have performed in the future.

We’ve been working on just such an application. It is called Portfolio Time Machine. It’s a mashup of the Grid, plus the Portfolio Builder, plus a large historical database.

How it works

You can set math filters which pick strategies AS OF a certain date. For example, if you move the date slider to July 1, 2015, then you can ask PTM to choose those strategies with a Sharp ratio of >= 1 as of July 2015.

Then you can press the “PLAY” button to run that portfolio forward, and to see how it would have done.

We’ve tried hard to prevent hindsight selection bias from affecting the data. There’s a firm algorithm about which strategies are included in the historical database as of any particular date, and the statistics in the database – while still limited in scope – are not tainted by future information. So, for example, you use July 2015 data to pick a set of strategies, no information about what happened after July 2015 will be used for that selection.

Caveats

This is most definitely an early beta release.

I’m posting the link here to solicit feedback and suggestions. The UI is wonky, performance can be slow, and there’s a lot of rough edges.

But it’s a start. Let me know what you think.

https://collective2.com/beta/portfolio-time-machine

3 Likes

Imo this is a needed, powerful and very professional feature. I know quite a few other copy trading websites for forex trading and none of them has anything like it. Those which have a portfolio feature don´t even get the performance and drawdown calculations right if you have more than 1 strategy in the portfolio… Unfortunately most people don´t question what they see thus they trade way too agressive by accident and burn their account. So please make absolutely sure that your calcuations make sense. I´ll test it and give you feedback when I´m back at my office around 30th of June.

On the first look I wonder why we would not have the same filters as we have in the grid? Would be awesome to have all of them - calculated on the starting point in the past of course. That sure is a lot of work but it´s worth it!

Good job, keep it coming! :slight_smile:

Thanks for building this. You mentioned that this allows select based on historical Sharpe, but at least when I’m using it now, some values seem to update only infrequently. 7 day/30 day/90 day returns change as they should, but Sharpe (for instance) are static for long periods.

For example, for Copper Pea Capital, the Sharpe on 2017-01-02 is the same for every period until 2017-04-24 (with a value of 3.80456). It does indeed change after that, because on 2017-05-04 it’s 3.80780. And then stays the same until 2017-06-04. Could you provide insights into how these are calculated, and when they’re accurate?

I love the idea! And the beta is off to a good start. In the “grid” section: I’d add more of the common grid search criteria like total return and drawdown, also, I couldn’t get the Start Date to work. In the “results” section, in addition to the graph, I’d display return percentages of each strategy and for the portfolio for the Out of Sample period. Good work.

The idea is really great! Thank you for starting looking on this!

I’ve notice the following difference in the system list on the morning of 06/22: the grid returned around 600 systems, PTM returned around 350 systems on 06/22. All filters were removed. I assumed that on the last date both lists should be around the same. Do you have internal filtering?

Also it would be informative to start portfolio test from the initial portfolio value, maybe show return, max drawdown, sharpe and calmar ratio for portfolio equity as results.

Very cool idea with a lot of potential. This is the sort of thing that Funds of Funds in the hedge fund world spend significant effort on.

A few initial thoughts:

  • To avoid selection bias the data must include systems of the time, especially ones that later get killed or abandoned.
  • After playing for a bit things went wonky and I’m not sure I’m back to a working setup. It would be nice to have a reset button to get back to a known state.
  • Drawdown stats would be helpful
  • I’m running into NaN%, not sure why

I agree great idea. Need a reset button to restart with all strategies in the database from scratch

Re: Portfolio Time Machine:

  1. NaN% problem is fixed.

  2. Problem with select-strategies-by-starting-date logic is fixed.

  3. Yes, the logic is extremely careful about selection bias. The strategies that are included at any point in time follow a specific logical test. To say it a different way, all three of these selection mechanisms: back-test, out-of-sample, and go-forward-real-life-trading (soon to come) – use the same selection logic, and are not affected by hindsight bias.

For example: if Strategy A is doing fabulous on January 2, 2015, but then crashes on December 1, 2015, and is “killed” by the Trade Leader… the strategy will still be selected “as of” January 2 (if the performance selection criteria are met as of that date).

@MatthewKlein Thank you for the interesting tool!

I’ve noticed that in the strategy list PTM shows only strategies older than 4 months on selected date in the past. Did you plan to filter young strategies out like this or it is a bug?

@Andrey - Can you clarify what you mean, perhaps with an example? Feel free to PM me if it’s easier.

Systems in the table are sorted by start date. On the 2017-07-11 youngest system shown is started on 2017-03-12, approx 4 months old on 0217-07-11. The Grid has a lot of systems started in april, may, june.

On the 2016-04-22 youngest system shown is started on 2015-12-19, approx 4 months old on 2016-04-22.

The results are not making sense to me. I did the following run and got an annualized rate of return for out of sample of 44%. However, looking at each sample individually none of them even had 44% annualized for the out of sample period. So no matter how I play with the weighting of the different strategies I don’t seem to understand how it should be showing 44% annualized rate of return for the period of 1/1/2015-10/4/2017. Any help understanding (or fix) would be great. BTW I think this is a great idea overall!


These results don’t seem right to me:


I think I found the error. Some of the strategies get wildly different results based on if AutoTrader fees and typical brokerage commissions are used. I know it is easy to ask for everything, but adding in the ability to check with or without autotrader fees etc would be helpful. I know that would probably create a whole host of programming problems.

1 Like

@MatthewKlein there is something wrong with time machine. It doesn’t visualize anything in my case. pls see attached picture
time machine

Try clicking on the infinity sign to auto-select “top strategies” in the table.

Like this:

Pasted_Image_10_6_17__11_32_AM

I check the box for “Stocks” but some of the strategies selected trade futures not stocks.

If you check the “Stocks” selector once, you will see this:

Portfolio_Time_Machine

This means “Strategy must have traded stocks at some point… among other assets.”


Click it a second time and you see:

Portfolio_Time_Machine

This means “Strategy must NEVER have traded stocks at any point.”


Click it again to restore it to:

Portfolio_Time_Machine

This means “I don’t care if a strategy traded stocks or not.”


By playing with these toggles, you can filter your search so that strategies are returned which meet your criteria.

If you want ONLY stock strategies, and strategies which never traded anything else – ever – you probably want this:

Portfolio_Time_Machine

I am selecting stock and futures systems in the grid and time machine. Simply sorted by sharpe (top to bottom).
Pls have a look below, Sharpe ratios are different and also the list of systems is different (using 8th Oct as date).

Any reason?