[R-SIG-Finance] Backtesting trade systems

Robert Sams robert at sanctumfi.com
Fri Jul 17 12:19:38 CEST 2009


Hi Josh, 

Ah, yes.. the RollingFunctions code is totally peripheral to the tradesys framework and was thrown in there so that some simple examples could be run without adding package dependencies. But now that you mention it, we can make TTR a suggested package and use its functions liberally in the examples and vignette. I think I'll do that.

Any function can be used in the expressions passed to the el, es, xl, xs, and makecols parameters of tradesys(), and TTR contains many of the functions that one needs. The packages are very complementary, which is great.

Robert

> -----Original Message-----
> From: Joshua Ulrich [mailto:josh.m.ulrich at gmail.com] 
> Sent: 16 July 2009 18:08
> To: Robert Sams
> Cc: Mark Breman; r-sig-finance at stat.math.ethz.ch
> Subject: Re: [R-SIG-Finance] Backtesting trade systems
> 
> Robert,
> 
> In the "details" section of your RollingFunctions 
> documentation, you note that you want to add "LAG, TR, ATR, 
> EWMA, etc."  All of these functions, and more, are already in TTR.
> 
> TTR uses xts internally, which provides support all major 
> time-series classes, not just zoo/xts.  Additionally, many of 
> TTR's functions are very fast because they use compiled code.
> 
> Best,
> Josh
> --
> http://www.fosstrading.com
> 
> 
> 
> On Thu, Jul 16, 2009 at 9:41 AM, Robert 
> Sams<robert at sanctumfi.com> wrote:
> > Hi Mark,
> >
> > I have started a package called tradesys which, I think, is a clean 
> > solution. The project is registered on r-forge 
> > https://r-forge.r-project.org/projects/tradesys/ and the 
> initial code 
> > base with documentation will be checked-in by the end of the day 
> > London time. As a taster:
> >
> >> library(tradesys)
> >> data(spx)
> >> tail(spx)
> >             Open   High    Low  Close     Volume
> > 2009-05-12 910.52 915.57 896.46 908.35 6871750400
> > 2009-05-13 905.40 905.40 882.80 883.92 7091820000
> > 2009-05-14 884.24 898.36 882.52 893.07 6134870000
> > 2009-05-15 892.76 896.97 878.94 882.88 5439720000
> > 2009-05-18 886.07 910.00 886.07 909.71 5702150000
> > 2009-05-19 909.67 916.39 905.22 908.13 6616270000
> >> x <- tradesys(spx, el=MA(Close, 60) > MA(Close, 120), es=MA(Close, 
> >> 60)
> > <= MA(Close, 120))
> >> tail(trades(x, uselog=TRUE))
> >    phase      etime      xtime time nobs  eprice  xprice    pnl ror
> > 107    EL 2006-09-21 2007-09-12  356  244 1324.89 1471.10 146.21
> > 0.264117052
> > 108    ES 2007-09-12 2007-11-09   58   42 1471.10 1467.59   3.51
> > 0.006027153
> > 109    EL 2007-11-09 2008-01-03   55   36 1467.59 1447.55 -20.04
> > -0.034689959
> > 110    ES 2008-01-03 2008-06-10  159  109 1447.55 1358.98  88.57 
> > 0.159301490
> > 111    EL 2008-06-10 2008-07-21   41   28 1358.98 1261.82 -97.16
> > -0.187159273
> > 112    ES 2008-07-21 2009-05-19  302  209 1261.82  909.67 352.15
> > 0.825619186
> >> tail(equity(x, uselog=TRUE))
> >           trade states    delta    price          ror   equity
> > 2009-05-12   112     -1 1.331220 6.814016  0.018107970 38.02601
> > 2009-05-13   112     -1 1.307543 6.808377  0.007373275 38.30638
> > 2009-05-14   112     -1 1.297973 6.784729  0.030694874 39.48219
> > 2009-05-15   112     -1 1.259318 6.794318 -0.012075942 39.00541
> > 2009-05-18   112     -1 1.274712 6.786796  0.009588169 39.37940
> > 2009-05-19   112     -1 1.262606 6.813082 -0.033188777 38.07244
> >
> > Please checkout and play with the code at your leisure. Anyone 
> > interested in write-access to the repository should contact 
> me directly.
> >
> >
> > Robert
> >
> >
> > ________________________________
> >
> >        From: r-sig-finance-bounces at stat.math.ethz.ch
> > [mailto:r-sig-finance-bounces at stat.math.ethz.ch] On Behalf Of Mark 
> > Breman
> >        Sent: 16 July 2009 15:15
> >        To: r-sig-finance at stat.math.ethz.ch
> >        Subject: [R-SIG-Finance] Backtesting trade systems
> >
> >
> >        Hello,
> >
> >        I have spend quit some time now looking for a package that 
> > allows me to backtest (technical) trading systems based on single 
> > financial instruments with R.
> >
> >        I had a look at Rmetrics, blotter, fTrading, 
> > PerformanceAnalytics, backtest, quantmod, TTR etc, but not one of 
> > these fill my requirements. It's not that they are not 
> usefull, on the 
> > contrary, they are all filled with terrific statistical stuff, but 
> > it's not the simple, practical and straightforward approach 
> that I am 
> > looking for as a trader rather than as a statisticus.
> >
> >        So I have decided to build my own solution, reusing 
> as much as 
> > possible from these existing packages. (As a former 
> software engineer 
> > I know how much time and effort goes into buiding reliable 
> software, 
> > so the more reuse the better). As I am quite new to R and 
> statistics 
> > in general, there is a lot to learn for me here...
> >
> >
> >        What I have build so far is a very basic set of functions 
> > called "tradesim.R" (I have attached it to this post). A very basic 
> > example of how these functions can be used for a 
> backtest-run can be 
> > found in "tradesim_example.R". The example runs a backtest with 
> > end-of-day data from AAPL, using a (rather poor) trading 
> system based 
> > on the RSI indicator (from the TTR package).
> >
> >        Now I have read in some older post on this list that others 
> > were also searching for a backtesting package. I even read a post 
> > proposing to start a group effort creating such a package. 
> I suspect 
> > that some of you might be interested in what I made so far 
> and maybe 
> > would like to put in a effort creating such a package together. I 
> > certainly know that it's a lot easier to create good software as a 
> > group, rather than by a single person...
> >
> >        So if you are interested have a look at what I got 
> so far and 
> > let me know what you think.
> >
> >        Regards,
> >
> >        -Mark-
> >
> >
> >
> > _______________________________________________
> > R-SIG-Finance at stat.math.ethz.ch mailing list 
> > https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> > -- Subscriber-posting only.
> > -- If you want to post, subscribe first.
> >
> 



More information about the R-SIG-Finance mailing list