[R-SIG-Finance] Writing sell rules with quantstrat

Sergey Pisarenko drseergio at gmail.com
Wed Feb 15 16:19:48 CET 2012


Thank you for useful ideas, Brian. These are helpful and I'll check
the slides you have mentioned.

--
Kind Regards,
Sergey Pisarenko.

On Wed, Feb 15, 2012 at 3:11 AM, Brian G. Peterson <brian at braverock.com> wrote:
> On Tue, 2012-02-14 at 22:14 -0800, Sergey Pisarenko wrote:
>> Hi,
>>
>> I have been working with quantstrat and for the most part have been
>> able to re-write my existing code to fit within the framework. I see
>> that "buy" signals work and "enter" rules are triggered.
>>
>> I currently do not grasp how to implement sell rules. I would like to
>> create 2 sell rules:
>>  1. when profit for a specific position reaches 15%
>>  2. when a position is kept for a year
>>
>> >From what I have read from the examples the correct method to use is
>> "add.rule". Here's something I have already:
>>
>> seller <- function(data, timestamp, portfolio, symbol) {
>>   posn <- getPosQty(portfolio, symbol, timestamp)
>>   if (posn != 0) {
>>   }
>> }
> <...>
>> It is clear that the code must go in the "seller" function. I also
>> understand that sell order is created by using "addOrder" function. I
>> am not sure how to check current profit inside of the function,
>> though.
>>
>> What would be the correct approach to check the current profit for a
>> position inside of the rule function?
>
> In your *entry* rule, you enter at market, so you're guaranteed a
> fill.
>
> Your 'exit' rule for the profit taker order is then clear.  Enter it at
> the same time as a stoplimit for 15% more than your entry signal price.
> This won't be precisely 15% more than the close price on the next bar,
> but is likely fine for a backtest (you could also look ahead, but I
> don't recommend adding these kinds of biases).  It is certainly easier
> than running all the calculation to check net profit on every bar after
> entering a position.
>
> A timed rule could certainly be done in your 'seller' function, but for
> efficiency I would probably add an indicator function that would check
> my entry indicator, and place a new 'signal' one year later.  Then you
> put an entry rule to exit then if you have a position.
>
> If you haven't already done so, find Guy Yollin's lecture slides on
> quantstrat from UW.  He demonstrates some interesting custom order
> sizing functions that could also give you ideas.
>
> Regards,
>
>   - Brian
>
>
>
>
> --
> Brian G. Peterson
> http://braverock.com/brian/
> Ph: 773-459-4973
> IM: bgpbraverock
>



More information about the R-SIG-Finance mailing list