I would like to look at how we can use simulations to get a better understanding of how some aspect of a trading system holds up relative to a bunch of random trades.
In this example, I look at entries on weekly data for SPY. The entry signal is to buy if the previous week closed down.
Over the time frame (2005-2014, about 10 years), it was long about 44% of the time, and out the rest.
In the simulation function, we generate random entry signals that will see us long about the same amount of time.
We track some metrics of system performance, in this case total return, average trade return and accuracy (i.e. how often a buy signal was correct).
I then use ggplot to make some density plots of the simulation metrics, marking the mean of the simulation results in red and the corresponding system metric in blue.
It looks like this
I basically want to see the blue line far away from the red line. In this case it seems fairly decent. You can also generate some p-values based off the simulation data as well.
For comparison, here is a daily system that is long if the previous close was above the 200 day simple moving average.
We can see there’s not a lot of difference between the moving average results and just entering randomly. (Note the accuracy metric has a different x-axis scale than the previous plot).
I use a similar idea for putting risk or open trade management ideas through their paces, seeing how well they hold up when managing random entries.
Code is up here. Thanks for reading