
该策略涉及在到期前一周卖空流动性最强的前月OTM标准普尔500指数看跌期权,持有至到期,并等权重投资组合,不包括流动性不足的证券。
资产类别: 期权 | 地区: 美国 | 周期: 每日 | 市场: 股票 | 关键词: 时机,期权
I. 策略概要
投资范围包括流动性最强的标准普尔500指数期权,不包括价格低于0.1美元的流动性不足的证券。选择交易量最大的前月看跌期权的前25%,分类为平值期权(ATM)、实值期权(ITM)或虚值期权(OTM)。每个月,投资者在到期前一周卖空前月虚值看跌期权,并持有至到期。投资组合等权重,头寸维持一周。该策略针对流动性强、交易活跃的期权,同时侧重于卖空接近到期的虚值看跌期权。
II. 策略合理性
在期权周期的最后几天,交易活动非常活跃。期权回报主要在到期日前不久产生。到期日前不久的这种期权溢价反映了价格跳跃风险,而不是波动率风险。具体而言,期权的凸性风险在接近到期日时急剧增加,使其对标的价格的跳跃更加敏感。波动率风险在接近到期日时没有起到如此大的作用。
III. 来源论文
The Timing of Option Returns [点击查看论文]
- 阿德里亚诺·托西亚,亚历山大·齐格勒。惠灵顿管理公司。苏黎世大学金融系。
<摘要>
我们通过实证记录了卖空虚值标准普尔500看跌期权的回报集中在到期前的几天。远月期权几乎没有回报,近月期权也只在期权周期结束时才有回报。期权溢价在周期结束时的集中反映了期权风险特征的变化。具体而言,期权的凸性风险在接近到期日时急剧增加,使其对标的价格的跳跃更加敏感。相比之下,波动率风险在接近到期日时作用较小。我们的结果表明,希望获取看跌期权溢价的投机者应仅在周期最后几天卖空近月期权,而希望防范下行风险的投资者应使用远月期权以降低对冲成本。


IV. 回测表现
| 年化回报 | 8.69% |
| 波动率 | 3.11% |
| β值 | 0.751 |
| 夏普比率 | 2.8 |
| 索提诺比率 | 0.613 |
| 最大回撤 | N/A |
| 胜率 | 100% |
V. 完整的 Python 代码
from AlgorithmImports import *
#endregion
class TimingOptionReturns(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2010, 1, 1)
self.SetCash(100000)
data = self.AddEquity("SPY", Resolution.Minute)
self.symbol = data.Symbol
option = self.AddOption("SPY", Resolution.Minute)
option.SetFilter(-20, 20, 0, 7)
def OnData(self, slice):
if self.symbol not in slice:
return
for i in slice.OptionChains:
chains = i.Value
if not self.Portfolio.Invested:
puts = list(filter(lambda x: x.Right == OptionRight.Put, chains))
if not puts: return
underlying_price = slice[self.symbol].Value
expiries = [i.Expiry for i in puts]
# Determine expiration date nearly one month.
expiry = min(expiries, key=lambda x: abs((x.date() - self.Time.date()).days - 7))
strikes = [i.Strike for i in puts]
# Determine 5% out-of-the-money strike.
otm_strike = min(strikes, key = lambda x:abs(x - float(0.95) * underlying_price))
otm_put = [i for i in puts if i.Expiry == expiry and i.Strike == otm_strike]
if otm_put:
# Sell 10% OTM put.
options_q = int(self.Portfolio.MarginRemaining / (underlying_price * 100))
self.Sell(otm_put[0].Symbol, options_q)