Using quantstrat with options

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Using quantstrat with options

Sal Abbasi
Has anyone used quantstrat with options?  I’ve found lots of examples where people are using it with equities and one where someone is using it with futures but have not been able to find any examples of people using it with options yet.  I’m trying to backtest some index options strategies, and wanted to ask about a pragmatic way of using quantstrat when there are so many symbols involved (one per strike / maturity).   Also there is a lot of market data involved since I’m using 1 minute bars, so I was wondering whether I should create a subset of my market data for the minimum required before feeding it to quantstrat or whether people have done something where quantstrat can look up the data it needs from indexed files on disk as it runs and does not need to hold it in memory.

Best,

Sal
_______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: Using quantstrat with options

braverock
There should conceptually be no difficulty with lots of symbols and 1-
minute data.  We pretty routinely use quantstrat on tick data or 1-
second data.

We pretty regularly segment our backtests with a loop around the calls
to applyStrategy that load data monthly or quarterly, add symbols to
portfolios or create new portfolios for each segment, and then run that
subset of the overall backtest series.

I do not trade options, so I can't help there, but you should be able
to manage the meta-data for the contracts by adding fields to your
instrument definitions.  If things like tick sizes and multipliers are
set correctly for the root symbol, then the accounting should work.

Regards,

Brian

--
Brian G. Peterson
http://braverock.com/brian/
Ph: 773-459-4973
IM: bgpbraverock

On Thu, 2018-03-29 at 12:17 -0500, Sal Abbasi wrote:

> Has anyone used quantstrat with options?  I’ve found lots of examples
> where people are using it with equities and one where someone is
> using it with futures but have not been able to find any examples of
> people using it with options yet.  I’m trying to backtest some index
> options strategies, and wanted to ask about a pragmatic way of using
> quantstrat when there are so many symbols involved (one per strike /
> maturity).   Also there is a lot of market data involved since I’m
> using 1 minute bars, so I was wondering whether I should create a
> subset of my market data for the minimum required before feeding it
> to quantstrat or whether people have done something where quantstrat
> can look up the data it needs from indexed files on disk as it runs
> and does not need to hold it in memory.
>
> Best,
>
> Sal
> _______________________________________________
> [hidden email] 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.
>

_______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: Using quantstrat with options

Sal Abbasi
Thank you.  Just loaded up a few symbols and it seems to be working great so far.

> On Mar 29, 2018, at 12:32 PM, Brian G. Peterson <[hidden email]> wrote:
>
> There should conceptually be no difficulty with lots of symbols and 1-
> minute data.  We pretty routinely use quantstrat on tick data or 1-
> second data.
>
> We pretty regularly segment our backtests with a loop around the calls
> to applyStrategy that load data monthly or quarterly, add symbols to
> portfolios or create new portfolios for each segment, and then run that
> subset of the overall backtest series.
>
> I do not trade options, so I can't help there, but you should be able
> to manage the meta-data for the contracts by adding fields to your
> instrument definitions.  If things like tick sizes and multipliers are
> set correctly for the root symbol, then the accounting should work.
>
> Regards,
>
> Brian
>
> --
> Brian G. Peterson
> http://braverock.com/brian/
> Ph: 773-459-4973
> IM: bgpbraverock
>
> On Thu, 2018-03-29 at 12:17 -0500, Sal Abbasi wrote:
>> Has anyone used quantstrat with options?  I’ve found lots of examples
>> where people are using it with equities and one where someone is
>> using it with futures but have not been able to find any examples of
>> people using it with options yet.  I’m trying to backtest some index
>> options strategies, and wanted to ask about a pragmatic way of using
>> quantstrat when there are so many symbols involved (one per strike /
>> maturity).   Also there is a lot of market data involved since I’m
>> using 1 minute bars, so I was wondering whether I should create a
>> subset of my market data for the minimum required before feeding it
>> to quantstrat or whether people have done something where quantstrat
>> can look up the data it needs from indexed files on disk as it runs
>> and does not need to hold it in memory.
>>
>> Best,
>>
>> Sal
>> _______________________________________________
>> [hidden email] 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.
>>

_______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: Using quantstrat with options

Sal Abbasi
What is a good way to model holding an option till expiry?

The only way I can think about is this:

1.  For each option, add or update the final bar’s price to option expiry value (0 or intrinsic value).  For many options, there is no market data at expiry date / time since the option is too deep in the money or out of the money, so I would have to add the final bar if it does not exist.
2.  Add or update the penultimate bar so the order can be generated at the penultimate bar and executed at the final bar.
3.  Add an indicator for time to maturity
3.  Add a signal for ttm == 1 minute (since my bars are 1 minute long)
4.  Added a rule to exit when ttm == 1 minute (the order is generated at ttm == 1 minute and gets executed when ttm == 0)

Is there a cleaner way to accomplish this?

Best,

Sal

> On Mar 29, 2018, at 3:06 PM, Sal Abbasi <[hidden email]> wrote:
>
> Thank you.  Just loaded up a few symbols and it seems to be working great so far.
>
>> On Mar 29, 2018, at 12:32 PM, Brian G. Peterson <[hidden email]> wrote:
>>
>> There should conceptually be no difficulty with lots of symbols and 1-
>> minute data.  We pretty routinely use quantstrat on tick data or 1-
>> second data.
>>
>> We pretty regularly segment our backtests with a loop around the calls
>> to applyStrategy that load data monthly or quarterly, add symbols to
>> portfolios or create new portfolios for each segment, and then run that
>> subset of the overall backtest series.
>>
>> I do not trade options, so I can't help there, but you should be able
>> to manage the meta-data for the contracts by adding fields to your
>> instrument definitions.  If things like tick sizes and multipliers are
>> set correctly for the root symbol, then the accounting should work.
>>
>> Regards,
>>
>> Brian
>>
>> --
>> Brian G. Peterson
>> http://braverock.com/brian/
>> Ph: 773-459-4973
>> IM: bgpbraverock
>>
>> On Thu, 2018-03-29 at 12:17 -0500, Sal Abbasi wrote:
>>> Has anyone used quantstrat with options?  I’ve found lots of examples
>>> where people are using it with equities and one where someone is
>>> using it with futures but have not been able to find any examples of
>>> people using it with options yet.  I’m trying to backtest some index
>>> options strategies, and wanted to ask about a pragmatic way of using
>>> quantstrat when there are so many symbols involved (one per strike /
>>> maturity).   Also there is a lot of market data involved since I’m
>>> using 1 minute bars, so I was wondering whether I should create a
>>> subset of my market data for the minimum required before feeding it
>>> to quantstrat or whether people have done something where quantstrat
>>> can look up the data it needs from indexed files on disk as it runs
>>> and does not need to hold it in memory.
>>>
>>> Best,
>>>
>>> Sal
>>> _______________________________________________
>>> [hidden email] 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.
>>>
>

_______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: Using quantstrat with options

Frank-2
Traders use bar charts to uncover actionable patterns: double tops, rounded bottoms, selling against a trendline, outside day lower close and lots of others. This is because the price discovery of stocks, futures, FX and bonds follow certain patterns that technical traders use to trade. I have not seen any research that says this can be translated to options.

Implied volatility of option(s) is the closest to price discovery for stocks, bonds ... You can buy historical options to calculate your own volatility or you can buy volatility data from the CBOE.  Option traders use the Black-Scholes, Fisher Black or their own option model to analyze options. Which options, the weighting method all impact the implied volatility.

What would be the ultimate goal of your analysis?

Frank
Chicago, IL
-----Original Message-----
From: R-SIG-Finance <[hidden email]> On Behalf Of Sal Abbasi
Sent: Wednesday, April 04, 2018 10:18 PM
To: Brian G. Peterson <[hidden email]>
Cc: [hidden email]
Subject: Re: [R-SIG-Finance] Using quantstrat with options

What is a good way to model holding an option till expiry?

The only way I can think about is this:

1.  For each option, add or update the final bar’s price to option expiry value (0 or intrinsic value).  For many options, there is no market data at expiry date / time since the option is too deep in the money or out of the money, so I would have to add the final bar if it does not exist.
2.  Add or update the penultimate bar so the order can be generated at the penultimate bar and executed at the final bar.
3.  Add an indicator for time to maturity 3.  Add a signal for ttm == 1 minute (since my bars are 1 minute long) 4.  Added a rule to exit when ttm == 1 minute (the order is generated at ttm == 1 minute and gets executed when ttm == 0)

Is there a cleaner way to accomplish this?

Best,

Sal

> On Mar 29, 2018, at 3:06 PM, Sal Abbasi <[hidden email]> wrote:
>
> Thank you.  Just loaded up a few symbols and it seems to be working great so far.
>
>> On Mar 29, 2018, at 12:32 PM, Brian G. Peterson <[hidden email]> wrote:
>>
>> There should conceptually be no difficulty with lots of symbols and
>> 1- minute data.  We pretty routinely use quantstrat on tick data or
>> 1- second data.
>>
>> We pretty regularly segment our backtests with a loop around the
>> calls to applyStrategy that load data monthly or quarterly, add
>> symbols to portfolios or create new portfolios for each segment, and
>> then run that subset of the overall backtest series.
>>
>> I do not trade options, so I can't help there, but you should be able
>> to manage the meta-data for the contracts by adding fields to your
>> instrument definitions.  If things like tick sizes and multipliers
>> are set correctly for the root symbol, then the accounting should work.
>>
>> Regards,
>>
>> Brian
>>
>> --
>> Brian G. Peterson
>> http://braverock.com/brian/
>> Ph: 773-459-4973
>> IM: bgpbraverock
>>
>> On Thu, 2018-03-29 at 12:17 -0500, Sal Abbasi wrote:
>>> Has anyone used quantstrat with options?  I’ve found lots of
>>> examples where people are using it with equities and one where
>>> someone is using it with futures but have not been able to find any
>>> examples of people using it with options yet.  I’m trying to
>>> backtest some index options strategies, and wanted to ask about a
>>> pragmatic way of using quantstrat when there are so many symbols involved (one per strike /
>>> maturity).   Also there is a lot of market data involved since I’m
>>> using 1 minute bars, so I was wondering whether I should create a
>>> subset of my market data for the minimum required before feeding it
>>> to quantstrat or whether people have done something where quantstrat
>>> can look up the data it needs from indexed files on disk as it runs
>>> and does not need to hold it in memory.
>>>
>>> Best,
>>>
>>> Sal
>>> _______________________________________________
>>> [hidden email] 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.
>>>
>

_______________________________________________
[hidden email] 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.

_______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: Using quantstrat with options

Sal Abbasi
I have an options strategy that I’m trying to backtest.  It involves buying or selling options that are underpriced or overpriced according to my model and delta hedging them.  In some cases I would end up getting rid of the option before expiry and in other cases I would hold the option till expiry. In the cases where I hold till expiry I had to follow the approach below to make this work within quantstrat. I was wondering if somebody had come up with a less “hacky”, more elegant solution.

Best,

Sal

> On Apr 7, 2018, at 2:26 PM, Frank <[hidden email]> wrote:
>
> Traders use bar charts to uncover actionable patterns: double tops, rounded bottoms, selling against a trendline, outside day lower close and lots of others. This is because the price discovery of stocks, futures, FX and bonds follow certain patterns that technical traders use to trade. I have not seen any research that says this can be translated to options.
>
> Implied volatility of option(s) is the closest to price discovery for stocks, bonds ... You can buy historical options to calculate your own volatility or you can buy volatility data from the CBOE.  Option traders use the Black-Scholes, Fisher Black or their own option model to analyze options. Which options, the weighting method all impact the implied volatility.
>
> What would be the ultimate goal of your analysis?
>
> Frank
> Chicago, IL
> -----Original Message-----
> From: R-SIG-Finance <[hidden email]> On Behalf Of Sal Abbasi
> Sent: Wednesday, April 04, 2018 10:18 PM
> To: Brian G. Peterson <[hidden email]>
> Cc: [hidden email]
> Subject: Re: [R-SIG-Finance] Using quantstrat with options
>
> What is a good way to model holding an option till expiry?
>
> The only way I can think about is this:
>
> 1.  For each option, add or update the final bar’s price to option expiry value (0 or intrinsic value).  For many options, there is no market data at expiry date / time since the option is too deep in the money or out of the money, so I would have to add the final bar if it does not exist.
> 2.  Add or update the penultimate bar so the order can be generated at the penultimate bar and executed at the final bar.
> 3.  Add an indicator for time to maturity 3.  Add a signal for ttm == 1 minute (since my bars are 1 minute long) 4.  Added a rule to exit when ttm == 1 minute (the order is generated at ttm == 1 minute and gets executed when ttm == 0)
>
> Is there a cleaner way to accomplish this?
>
> Best,
>
> Sal
>
>> On Mar 29, 2018, at 3:06 PM, Sal Abbasi <[hidden email]> wrote:
>>
>> Thank you.  Just loaded up a few symbols and it seems to be working great so far.
>>
>>> On Mar 29, 2018, at 12:32 PM, Brian G. Peterson <[hidden email]> wrote:
>>>
>>> There should conceptually be no difficulty with lots of symbols and
>>> 1- minute data.  We pretty routinely use quantstrat on tick data or
>>> 1- second data.
>>>
>>> We pretty regularly segment our backtests with a loop around the
>>> calls to applyStrategy that load data monthly or quarterly, add
>>> symbols to portfolios or create new portfolios for each segment, and
>>> then run that subset of the overall backtest series.
>>>
>>> I do not trade options, so I can't help there, but you should be able
>>> to manage the meta-data for the contracts by adding fields to your
>>> instrument definitions.  If things like tick sizes and multipliers
>>> are set correctly for the root symbol, then the accounting should work.
>>>
>>> Regards,
>>>
>>> Brian
>>>
>>> --
>>> Brian G. Peterson
>>> http://braverock.com/brian/
>>> Ph: 773-459-4973
>>> IM: bgpbraverock
>>>
>>>> On Thu, 2018-03-29 at 12:17 -0500, Sal Abbasi wrote:
>>>> Has anyone used quantstrat with options?  I’ve found lots of
>>>> examples where people are using it with equities and one where
>>>> someone is using it with futures but have not been able to find any
>>>> examples of people using it with options yet.  I’m trying to
>>>> backtest some index options strategies, and wanted to ask about a
>>>> pragmatic way of using quantstrat when there are so many symbols involved (one per strike /
>>>> maturity).   Also there is a lot of market data involved since I’m
>>>> using 1 minute bars, so I was wondering whether I should create a
>>>> subset of my market data for the minimum required before feeding it
>>>> to quantstrat or whether people have done something where quantstrat
>>>> can look up the data it needs from indexed files on disk as it runs
>>>> and does not need to hold it in memory.
>>>>
>>>> Best,
>>>>
>>>> Sal
>>>> _______________________________________________
>>>> [hidden email] 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.
>>>>
>>
>
> _______________________________________________
> [hidden email] 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.
>

_______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: Using quantstrat with options

Frank-2
Sal,

OK, that is clear.

1) I would run your model on back data to estimate whatever additional parameters you need with your model. The sum of the squared differences between your model prices and market prices should be substantially less than the sum of the squared differences  for the Black-Scholes or Fisher Black model. Although this is not the kind of back testing I'd do on a stock trading model, it is effective for options.

2) Pick out an expensive option spread. Buy a cheap or fairly priced option and sell an expensive option, i.e. sell this spread. Follow the option spread over time. I don't think you want to model the option prices going forward. Your model identifies mispriced options, which you don't want to use, and volatility bounces around in a non-forecastable way for the Black or Black-Scholes model, leaving you with using historical data. See if the spread makes money.

3) Assume the cheap option has a delta of 0.25 and the expensive option has a delta of 0.50. You'd buy 2 of the cheap options against selling 1 of the expensive options. Watch this trade going forward to see if it makes money. It will make less money than the 1 x 1 spread in 2 above: you are buying double the number of cheap options which will probably lose value and short one expensive option on which you will probably make money. I think the CBOE has a dataset that does include delta and other Greeks. That may be one way of creating a delta neutral spread. Back testing the trade and rebalancing the options over time to keep the trade delta neutral is probably best done using a procedural language like C/C++ or a spreadsheet, not quantstrat.

Best,

Frank
Chicago


-----Original Message-----
From: Sal Abbasi <[hidden email]>
Sent: Sunday, April 08, 2018 2:13 PM
To: Frank <[hidden email]>
Cc: Brian G. Peterson <[hidden email]>; [hidden email]
Subject: Re: [R-SIG-Finance] Using quantstrat with options

I have an options strategy that I’m trying to backtest.  It involves buying or selling options that are underpriced or overpriced according to my model and delta hedging them.  In some cases I would end up getting rid of the option before expiry and in other cases I would hold the option till expiry. In the cases where I hold till expiry I had to follow the approach below to make this work within quantstrat. I was wondering if somebody had come up with a less “hacky”, more elegant solution.

Best,

Sal

> On Apr 7, 2018, at 2:26 PM, Frank <[hidden email]> wrote:
>
> Traders use bar charts to uncover actionable patterns: double tops, rounded bottoms, selling against a trendline, outside day lower close and lots of others. This is because the price discovery of stocks, futures, FX and bonds follow certain patterns that technical traders use to trade. I have not seen any research that says this can be translated to options.
>
> Implied volatility of option(s) is the closest to price discovery for stocks, bonds ... You can buy historical options to calculate your own volatility or you can buy volatility data from the CBOE.  Option traders use the Black-Scholes, Fisher Black or their own option model to analyze options. Which options, the weighting method all impact the implied volatility.
>
> What would be the ultimate goal of your analysis?
>
> Frank
> Chicago, IL
> -----Original Message-----
> From: R-SIG-Finance <[hidden email]> On Behalf Of
> Sal Abbasi
> Sent: Wednesday, April 04, 2018 10:18 PM
> To: Brian G. Peterson <[hidden email]>
> Cc: [hidden email]
> Subject: Re: [R-SIG-Finance] Using quantstrat with options
>
> What is a good way to model holding an option till expiry?
>
> The only way I can think about is this:
>
> 1.  For each option, add or update the final bar’s price to option expiry value (0 or intrinsic value).  For many options, there is no market data at expiry date / time since the option is too deep in the money or out of the money, so I would have to add the final bar if it does not exist.
> 2.  Add or update the penultimate bar so the order can be generated at the penultimate bar and executed at the final bar.
> 3.  Add an indicator for time to maturity 3.  Add a signal for ttm ==
> 1 minute (since my bars are 1 minute long) 4.  Added a rule to exit
> when ttm == 1 minute (the order is generated at ttm == 1 minute and
> gets executed when ttm == 0)
>
> Is there a cleaner way to accomplish this?
>
> Best,
>
> Sal
>
>> On Mar 29, 2018, at 3:06 PM, Sal Abbasi <[hidden email]> wrote:
>>
>> Thank you.  Just loaded up a few symbols and it seems to be working great so far.
>>
>>> On Mar 29, 2018, at 12:32 PM, Brian G. Peterson <[hidden email]> wrote:
>>>
>>> There should conceptually be no difficulty with lots of symbols and
>>> 1- minute data.  We pretty routinely use quantstrat on tick data or
>>> 1- second data.
>>>
>>> We pretty regularly segment our backtests with a loop around the
>>> calls to applyStrategy that load data monthly or quarterly, add
>>> symbols to portfolios or create new portfolios for each segment, and
>>> then run that subset of the overall backtest series.
>>>
>>> I do not trade options, so I can't help there, but you should be
>>> able to manage the meta-data for the contracts by adding fields to
>>> your instrument definitions.  If things like tick sizes and
>>> multipliers are set correctly for the root symbol, then the accounting should work.
>>>
>>> Regards,
>>>
>>> Brian
>>>
>>> --
>>> Brian G. Peterson
>>> http://braverock.com/brian/
>>> Ph: 773-459-4973
>>> IM: bgpbraverock
>>>
>>>> On Thu, 2018-03-29 at 12:17 -0500, Sal Abbasi wrote:
>>>> Has anyone used quantstrat with options?  I’ve found lots of
>>>> examples where people are using it with equities and one where
>>>> someone is using it with futures but have not been able to find any
>>>> examples of people using it with options yet.  I’m trying to
>>>> backtest some index options strategies, and wanted to ask about a
>>>> pragmatic way of using quantstrat when there are so many symbols involved (one per strike /
>>>> maturity).   Also there is a lot of market data involved since I’m
>>>> using 1 minute bars, so I was wondering whether I should create a
>>>> subset of my market data for the minimum required before feeding it
>>>> to quantstrat or whether people have done something where
>>>> quantstrat can look up the data it needs from indexed files on disk
>>>> as it runs and does not need to hold it in memory.
>>>>
>>>> Best,
>>>>
>>>> Sal
>>>> _______________________________________________
>>>> [hidden email] 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.
>>>>
>>
>
> _______________________________________________
> [hidden email] 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.
>

_______________________________________________
[hidden email] 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.