Evaluating Backtest Results/ Constructive Criticism

There was a trading strategy which I used to manually execute a few months back but am no longer able to as things just got busier. So, I thought I could somehow automate it but it took a while to figure out the data sources and to convert the strategy from what was in my head to actual code. I recently finished implementing it and did a custom backtest using data starting from 2018. I'm still fairly new to algo/quant trading although I have been manually trading for some years - so I would like to get some help on how I can evaluate my backtest results.

Here are the details of the backtest & strategy:

Strategy is just rolling statistics based, no ML or anything fancy.

Backtest time period: Jan 2018 - present (can't go further back than jan 2018, limited by data)

Stock universe: only trading US stocks with daily average turnover >$5M since inception/IPO

Timeframe: Interday

Strategy overview: Long only, news-reaction based combined with volume & price action (all data is adjusted). Signal (just says long or nothing) is generated EOD and trade is executed at open next morning at market price. No take-profit or stop-loss used in backtest. Position is sold at close 5 days after initial buy - this is fixed as I didnt want to make it too complex to begin with.

Sharpe: 4.02

T-test: Tested if the mean daily log returns are >0. I'm getting a p-value of 0.0067 but I'm a bit skeptical of using the t-test here as I'm not sure if the log-returns of the strategy actually meet the assumptions for this test.

Total #trades since inception: 231

%Profitable trades: 55.8%

Mean daily portfolio holdings P/L(%): 1.06% (includes days where gains were unrealized)

Cumulative returns over backtest: ~140%, the profits from one trade(buy+sell) are not reinvested.

Max leverage at any time: 3.6

Max #stocks held at any time: ~12

Position Sizing: Fixed, same amount of money invested in each stock.

In the graph below the red line/markers show the # of stocks in the portfolio at that time.As you can see the strategy trades way less frequently in 2019... I'm not sure why this is ? I'm coming to think that this strategy trades less in bear/uncertain markets as compared to bull.

​

https://preview.redd.it/57hcw0b4b0a41.jpg?width=2260&format=pjpg&auto=webp&s=89655a69b428e4bca61a136afe2e37ae4fedfb77

Posted Jan 10, 2020, 8:28 PM UTC

413
[deleted]•

[deleted]

2
stackstisticsOP•

I’m not sure how many more details I can give about the alpha without actually giving away the strategy - let me try to think about a way to explain the strategy in a more generic way so that you can comment.

Regarding the slippage - that’s an interesting point and could probably add some points to the return per trade if implemented in real time. But for backtesting I’m not sure if it would make a significant difference ? Correct me if I’m wrong.

1
[deleted]•

[removed]

1
[deleted]•

Strategy is no ML or anything fancy.

Good, AFAIK !

Long only, news-reaction based combined with volume & price action (all data is adjusted).

When using old data (any data before last 10 days) may work fine as they are not moving target. You need to apply same logic to current (within 2 days) data and set buy and then sell. Monitor this for 30 days, 60 days and 90 days from now on, and see the results. I suspect some bias, for current data, may affect your returns even though the logic works for old data.

2
stackstisticsOP•

Why do you suspect this ?

1
[deleted]•

[removed]

1
[deleted]•

I always get similar issues and many bloggers here stated the same.

1
PM_MeUsernameIdeas•

It looks like on the surface you’ve got something to work with, but you should definitely let it paper trade for a few months before you go live.

A few concerns I would have would be the lack of long term backtesting data. I understand that you’re limited based on data, and that’s no fault of your own, but that would cause concern for me since your sample size is so small.

I would also be concerned about the lack of trades in 2019. Is it possible that your alpha only worked strongly in 2018 alone? This ties into the lack of long term backtesting data. If you had many years of data you could mitigate that concern to see if it performs in other years as well.

2
stackstisticsOP•

Agreed. I’m thinking it’s either one of 2 things for why it doesn’t trade that much in 2019 - either that the market dynamic is just different or maybe some other entity is using a similar signal. I really doubt that it’s the latter because I don’t think the strategy is scalable and also because it’s a pretty simple strategy.

1
PM_MeUsernameIdeas•

Yeah it seems to me on the surface that it’s having trouble finding signals. What data limitations did you run into that’s preventing you from running longer term backtesting?

2
stackstisticsOP•

I’m using 2 main sources of data and one of them only goes back to 2018 - so I can’t generate the signal for dates prior to 2018.

1
[deleted]•

[removed]

1
[deleted]•

[removed]

1
[deleted]•

[removed]

1