[R-SIG-Finance] quantstrat: A bug in rules.R for stoplimits?
Joshua Ulrich
josh.m.ulrich at gmail.com
Sun Apr 14 11:47:34 CEST 2013
Hi Ivan,
This was fixed in r1430 a few days ago.
Best,
--
Joshua Ulrich | about.me/joshuaulrich
FOSS Trading | www.fosstrading.com
R/Finance 2013: Applied Finance with R | www.RinFinance.com
On Sat, Apr 13, 2013 at 11:33 PM, Ivan Popivanov
<ivan.popivanov at gmail.com> wrote:
> The code which decides the next index for stoplimit orders looks like:
>
> cross<-sigThreshold(label='tmpstop',column=col,threshold=tmpprice,relationship=relationship)
> if(any(cross[timespan])){
> # find first index that would cross after this index
> newidx <- curIndex + which(cross[timespan])[1] - 1
> # insert that into dindex
> assign.dindex(c(get.dindex(),newidx))
> }
>
> To me, what the above says is: if we have a cross, set the new index to the
> first cross. However, the first cross could be the timestamp corresponding
> to the current index (easiest to repro by hacking the Low price for a long
> stoplimit). If that's the case, newidx is set to the current index, in other
> words, the stoplimit is not respected until the next date we decide to stop
> (from the vectorization of the math) for another reason.
>
> In the attached file, I have provided a possible fix and the original file,
> for easy diff.
>
> Regards,
> Ivan
>
> My fix:
>
>
> cross<-sigThreshold(label='tmpstop',column=col,threshold=tmpprice,relationship=relationship)
> if(any(cross[timespan])) {
> # find first index that would cross after this index
> crosses = which(cross[timespan])
> if(crosses[1] != 1) {
> # The first cross is not on the current index
> newidx <- curIndex + crosses[1] - 1
> } else if(length(crosses) > 1) {
> # The first cross is on the current index, but
> there is another index
> newidx <- curIndex + crosses[2] - 1
> } else {
> # Only one cross and it's on the current index
> newidx <- NA
> }
> if(!is.na(newidx)) {
> # insert that into dindex
> assign.dindex(c(get.dindex(),newidx))
> }
> }
>
> _______________________________________________
> R-SIG-Finance at 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.
More information about the R-SIG-Finance
mailing list