[R-SIG-Finance] quantstrat with intraday data
Greetings! Pls forgive me if this is an old topic. I have searched through list archives extensively but I am just not sure if I am using quantstrat correctly with intraday data. I've attached sample minute ohlc data. after loading it, an xts object spy.test would be populated as shown below: > nrow(spy.test) [1] 1074 > head(spy.test) spy.Open spy.High spy.Low spy.Close spy.Volume 2012-03-29 07:32:00 140.14 140.15 140.14140.15800 2012-03-29 07:33:00 140.15 140.15 140.14140.14 2700 2012-03-29 07:36:00 140.16 140.16 140.12140.12 5105 2012-03-29 07:40:00 140.17 140.17 140.17140.17200 2012-03-29 07:41:00 140.15 140.16 140.15140.16 1798 2012-03-29 07:42:00 140.16 140.16 140.16140.16 2052 > tail(spy.test) spy.Open spy.High spy.Low spy.Close spy.Volume 2012-03-30 16:26:00 140.86 140.87 140.85140.87 10900 2012-03-30 16:27:00 140.86 140.86 140.79140.79 27770 2012-03-30 16:28:00 140.84 140.86 140.84140.86 20400 2012-03-30 16:29:00 140.85 140.86 140.84140.86 18500 2012-03-30 16:30:00 140.86 140.86 140.85140.85 11035 2012-03-30 16:31:00 140.85 140.86 140.85140.85 1100 Currently I use something similar to attached test.R to do intraday work. in the code I liquidate everything before close so that I don't need to worry about splits and dividends. Is what I am doing the correct way of using quantstrat with intraday data? Also if in future I will hold overnight positions, How would I make sure dividends and splits are correctly adjusted for pnl and summary statistics? would underlying blotter be smart enough to handle all the housekeeping? Thanks! Jim. spy.test.Rdata Description: Binary data test.R Description: Binary data ___ R-SIG-Finance@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-sig-finance -- Subscriber-posting only. If you want to post, subscribe first. -- Also note that this is not the r-help list where general R questions should go.
Re: [R-SIG-Finance] quantstrat with intraday data
On Wed, 2012-05-02 at 00:00 -0400, Jim Green wrote: > Greetings! > Pls forgive me if this is an old topic. I have searched through list > archives extensively but I am just not sure if I am using quantstrat > correctly with intraday data. <...> > Currently I use something similar to attached test.R to do intraday > work. in the code I liquidate everything before close so that I don't > need to worry about splits and dividends. Is what I am doing the > correct way of using quantstrat with intraday data? That's certainly the easiest answer. blotter contains some support for dividends, but it is only lightly tested, since I personally don't need that functionality. Additional testing, direct feedback, and patches are always welcome. Participation by users is one of the ways these packages grow over time. (and feel free to take those conversations off-list) > Also if in future I will hold overnight positions, How would I make > sure dividends and splits are correctly adjusted for pnl and summary > statistics? would underlying blotter be smart enough to handle all the > housekeeping? No Guarantees (of course that's true of everything in R). My recollection is that the addDiv function will add cash to your account to cover dividends. I don't believe that there is a function for splits. You'd likely need to write that, we'd love the contribution. It shouldn't be hard, as all that needs to happen is that you add a transaction for the split with a price of zero, adding more shares and lowering your average cost to compensate for the split. As xts gains support for differing column classes this summer as part of the funded GSoC project, it will get easier to add additional information to transactions that will definitely include transaction type. Regards, - Brian -- Brian G. Peterson http://braverock.com/brian/ Ph: 773-459-4973 IM: bgpbraverock ___ R-SIG-Finance@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-sig-finance -- Subscriber-posting only. If you want to post, subscribe first. -- Also note that this is not the r-help list where general R questions should go.
Re: [R-SIG-Finance] quantstrat with intraday data
As an alternative to adjusting for dividends in quantstrat or blotter, my qmao package (https://r-forge.r-project.org/R/?group_id=1113) has two functions that adjust intraday data for dividends. `adjustIntraday.yahoo` will download dividend data from yahoo and calculate daily ratios. Those ratios will then be applied to intraday data. `AddCumDiv` simply adds back all dividends to the price series. With adjustIntraday.yahoo, the most recent observations will be the same as the unadjusted data, but the older observations will be lower than those that are unadjusted. With AddCumDiv, the oldest observations will be the same for the adjusted and unadjusted data, but the most recent observations will be higher for AddCumDiv. Although I believe these functions work like they're supposed to, they have not been rigorously tested, so YMMV. bug reports encouraged. Since I just committed the AddCumDiv function a few minutes ago, it is not yet in the R-Forge build (although it is in the repo if you know how to svn checkout). Since it's not in the build yet, I attached it. Regards, Garrett On Wed, May 2, 2012 at 8:02 AM, Brian G. Peterson wrote: > On Wed, 2012-05-02 at 00:00 -0400, Jim Green wrote: >> Greetings! >> Pls forgive me if this is an old topic. I have searched through list >> archives extensively but I am just not sure if I am using quantstrat >> correctly with intraday data. > <...> >> Currently I use something similar to attached test.R to do intraday >> work. in the code I liquidate everything before close so that I don't >> need to worry about splits and dividends. Is what I am doing the >> correct way of using quantstrat with intraday data? > > That's certainly the easiest answer. > > blotter contains some support for dividends, but it is only lightly > tested, since I personally don't need that functionality. Additional > testing, direct feedback, and patches are always welcome. Participation > by users is one of the ways these packages grow over time. (and feel > free to take those conversations off-list) > >> Also if in future I will hold overnight positions, How would I make >> sure dividends and splits are correctly adjusted for pnl and summary >> statistics? would underlying blotter be smart enough to handle all the >> housekeeping? > > No Guarantees (of course that's true of everything in R). > > My recollection is that the addDiv function will add cash to your > account to cover dividends. > > I don't believe that there is a function for splits. You'd likely need > to write that, we'd love the contribution. It shouldn't be hard, as all > that needs to happen is that you add a transaction for the split with a > price of zero, adding more shares and lowering your average cost to > compensate for the split. > > As xts gains support for differing column classes this summer as part of > the funded GSoC project, it will get easier to add additional > information to transactions that will definitely include transaction > type. > > Regards, > > - Brian > > -- > Brian G. Peterson > http://braverock.com/brian/ > Ph: 773-459-4973 > IM: bgpbraverock > > ___ > R-SIG-Finance@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-sig-finance > -- Subscriber-posting only. If you want to post, subscribe first. > -- Also note that this is not the r-help list where general R questions > should go. AddCumDiv.R Description: Binary data ___ R-SIG-Finance@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-sig-finance -- Subscriber-posting only. If you want to post, subscribe first. -- Also note that this is not the r-help list where general R questions should go.
Re: [R-SIG-Finance] quantstrat with intraday data
Thanks for the comment! personally I am hesitant to adjust intraday prices for splits or dividends, and I prefer adjust positions to account for the corp actions. Actually even for simplest technical analysis on daily data, I am still not sure if using dividend/split adjusted data is the right way to do. Jim. On 2 May 2012 11:04, G See wrote: > As an alternative to adjusting for dividends in quantstrat or blotter, > my qmao package (https://r-forge.r-project.org/R/?group_id=1113) has > two functions that adjust intraday data for dividends. > > `adjustIntraday.yahoo` will download dividend data from yahoo and > calculate daily ratios. Those ratios will then be applied to intraday > data. > > `AddCumDiv` simply adds back all dividends to the price series. > > With adjustIntraday.yahoo, the most recent observations will be the > same as the unadjusted data, but the older observations will be lower > than those that are unadjusted. > > With AddCumDiv, the oldest observations will be the same for the > adjusted and unadjusted data, but the most recent observations will be > higher for AddCumDiv. > > Although I believe these functions work like they're supposed to, they > have not been rigorously tested, so YMMV. bug reports encouraged. > > Since I just committed the AddCumDiv function a few minutes ago, it is > not yet in the R-Forge build (although it is in the repo if you know > how to svn checkout). Since it's not in the build yet, I attached it. > > Regards, > Garrett > > On Wed, May 2, 2012 at 8:02 AM, Brian G. Peterson wrote: >> On Wed, 2012-05-02 at 00:00 -0400, Jim Green wrote: >>> Greetings! >>> Pls forgive me if this is an old topic. I have searched through list >>> archives extensively but I am just not sure if I am using quantstrat >>> correctly with intraday data. >> <...> >>> Currently I use something similar to attached test.R to do intraday >>> work. in the code I liquidate everything before close so that I don't >>> need to worry about splits and dividends. Is what I am doing the >>> correct way of using quantstrat with intraday data? >> >> That's certainly the easiest answer. >> >> blotter contains some support for dividends, but it is only lightly >> tested, since I personally don't need that functionality. Additional >> testing, direct feedback, and patches are always welcome. Participation >> by users is one of the ways these packages grow over time. (and feel >> free to take those conversations off-list) >> >>> Also if in future I will hold overnight positions, How would I make >>> sure dividends and splits are correctly adjusted for pnl and summary >>> statistics? would underlying blotter be smart enough to handle all the >>> housekeeping? >> >> No Guarantees (of course that's true of everything in R). >> >> My recollection is that the addDiv function will add cash to your >> account to cover dividends. >> >> I don't believe that there is a function for splits. You'd likely need >> to write that, we'd love the contribution. It shouldn't be hard, as all >> that needs to happen is that you add a transaction for the split with a >> price of zero, adding more shares and lowering your average cost to >> compensate for the split. >> >> As xts gains support for differing column classes this summer as part of >> the funded GSoC project, it will get easier to add additional >> information to transactions that will definitely include transaction >> type. >> >> Regards, >> >> - Brian >> >> -- >> Brian G. Peterson >> http://braverock.com/brian/ >> Ph: 773-459-4973 >> IM: bgpbraverock >> >> ___ >> R-SIG-Finance@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-sig-finance >> -- Subscriber-posting only. If you want to post, subscribe first. >> -- Also note that this is not the r-help list where general R questions >> should go. ___ R-SIG-Finance@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-sig-finance -- Subscriber-posting only. If you want to post, subscribe first. -- Also note that this is not the r-help list where general R questions should go.
Re: [R-SIG-Finance] quantstrat with intraday data
On Wed, May 2, 2012 at 10:57 PM, Jim Green wrote: > Thanks for the comment! personally I am hesitant to adjust intraday > prices for splits or dividends, and I prefer adjust positions to > account for the corp actions. Actually even for simplest technical > analysis on daily data, I am still not sure if using dividend/split > adjusted data is the right way to do. > > Jim. If a stock splits in half, don't you think you should adjust for that before performing technical analysis? You'd treat that big jump in price the same as a real price jump even though if you had a position in the stock, your PnL would be unaffected by the split? ___ R-SIG-Finance@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-sig-finance -- Subscriber-posting only. If you want to post, subscribe first. -- Also note that this is not the r-help list where general R questions should go.
Re: [R-SIG-Finance] quantstrat with intraday data
On 3 May 2012 00:07, G See wrote: > If a stock splits in half, don't you think you should adjust for that > before performing technical analysis? You'd treat that big jump in > price the same as a real price jump even though if you had a position > in the stock, your PnL would be unaffected by the split? sorry I was unclear... that would generate wrong signals.. I think the correct way to use split/dividend adjusted daily data for technical analysis is: 1, for each day, generate signals using adjusted data till before that day, in a walking forward fashion. 2, for pnl logistics, use trade based adjustments or position adjustments. the above are not currently supported by quantstrat and underlying blotter but is really a nice to have. is qmao addressing the them in some way? Jim. ___ R-SIG-Finance@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-sig-finance -- Subscriber-posting only. If you want to post, subscribe first. -- Also note that this is not the r-help list where general R questions should go.
Re: [R-SIG-Finance] quantstrat with intraday data
Jim, So, on any day that there is a dividend or a split, you want to back adjust your data that you're using to calculate the next signal. Every time you back-adjust, you have to recreate your signals. If that's how you want to do it, then I think that in quantstrat world, you're better off running multiple backtests (e.g. 1 for each quarter for a stock that pays quarterly dividends) and gluing them together instead of adjusting on the fly. i.e. try to let the quantstrat part of it be as vectorized as possible. If there were an addSplit function, it would adjust the quantity of shares that you own, but last I looked, the order-sizing functionality of quantstrat was still broken which means that you wouldn't be able to adjust how many shares you trade going forward. So, assuming you're using a fixed quantity of shares for your transactions (which you are unless you patch quantstrat ;-)), AddCumDiv is like a walk-forward adjustment of price (for dividends, but you could pre-adjust your data, in a walk-forward manner, for splits as well). At the very least, it's pretty good proxy. HTH, Garrett On Wed, May 2, 2012 at 11:19 PM, Jim Green wrote: > On 3 May 2012 00:07, G See wrote: >> If a stock splits in half, don't you think you should adjust for that >> before performing technical analysis? You'd treat that big jump in >> price the same as a real price jump even though if you had a position >> in the stock, your PnL would be unaffected by the split? > > sorry I was unclear... that would generate wrong signals.. I think > the correct way to use split/dividend adjusted daily data for > technical analysis is: > 1, for each day, generate signals using adjusted data till before that > day, in a walking forward fashion. > 2, for pnl logistics, use trade based adjustments or position adjustments. > > the above are not currently supported by quantstrat and underlying > blotter but is really a nice to have. is qmao addressing the them in > some way? > > Jim. ___ R-SIG-Finance@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-sig-finance -- Subscriber-posting only. If you want to post, subscribe first. -- Also note that this is not the r-help list where general R questions should go.