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

