Skip to content

财报季必看:用跨式策略预测苹果股价,Python+AI 代码实战

作者:老余捞鱼

原创不易,转载请标明出处及原作者。

写在前面的话:财报季是股市波动最大的时期,股价会因业绩表现剧烈波动。本文介绍了一种利用期权数据(跨式策略)预测股价走势的方法。文章详细演示了如何使用OpenBB SDK获取期权数据,并以Costco和苹果公司股票为例,通过Python+AI 计算跨式交易价格,估算股价变动范围。文末还提供了结合历史波动率和隐含波动率的代码脚本,帮助交易者预测未来股价。

财报季是股市最激动人心的时刻之一。根据公司业绩是否超出预期,股票价格会出现剧烈波动。对于交易者来说,预测这些走势可以带来巨大的获利机会。

公司的盈利报告展示了其财务情况和未来的发展潜力。市场的预测和实际公布的业绩常常存在差距,这会引起股票价格的显著变动。

熟悉市场动态的交易者,他们的预测已经反映在期权价格里。通过研究这些价格,我们可以了解市场对于公司公布业绩后股票走势的预期。

在本文中,我将指导你使用一种直接的方法,利用期权数据预测股价走势,特别是通过一种叫做跨式的策略。最后你还将掌握使用临近到期期权来估计盈利后市场预期价格走势的 Python 代码。

一、什么是跨式策略 ?

在金融投资中,跨式策略(The Straddle Strategy)是一种期权交易策略,通过这种方式,投资者可以在市场价格大幅波动时获利,无论是向上还是向下波动。

1.1 策略使用环境与方法

跨式策略的核心在于对市场波动性的预期。投资者通常在以下情况下使用此策略:

该策略执行会同时买入到期日相同的价内(ATM)看涨期权和价外(ATM)看跌期权,且两者的执行价格和到期日相同。原因如下:

  • 到期时,期权的价值主要基于其时间价值,其中包括预期的价格变动。
  • 交易者通常会选择在财报发布后马上到期的期权,这样我们就可以用它们的价格来衡量预期走势。

1.2 策略的风险与收益

收益

  • 无限收益潜力:如果市场价格大幅上涨,看涨期权的收益是无限的;如果市场价格大幅下跌,看跌期权的收益也可以是无限的。
  • 波动性收益:即使市场价格在短期内波动,投资者也可能从中获利。

风险

  • 高成本:同时购买两种期权意味着需要支付两份期权的权利金,这可能会导致较高的初始投资成本。
  • 时间价值损失:如果市场价格在到期日附近没有显著波动,投资者可能会面临时间价值的损失,导致期权失效。

跨式策略是一种灵活且具有潜在高收益的期权交易策略,非常适合财报发布前,因为通过购买相同到期日的价内看涨期权和价外看跌期权,可以用分析期权价格来推断市场预期。

二、策略实现

我们将会使用 OpenBB SDK 来获取和分析期权数据。

2.1 导入库和设置

首先,安装并设置 OpenBB。还添加 API 密钥,用来获取股票数据。

from datetime import datetime, timedelta
import pandas as pd
from openbb import obb

# Set preferences and API key
obb.user.preferences.output_type = "dataframe"
obb.user.credentials.nasdaq_api_key = "PLACE_HOLDER"

2.2 获取收益公告

我们将下载未来两周内即将发布的收益公告列表。

# Get earnings calendar for the next 14 days
earnings_calendar = obb.equity.calendar.earnings(
    start_date=(datetime.now() + timedelta(days=1)).date(),
    end_date=(datetime.now() + timedelta(days=14)).date(),
    provider="nasdaq"
)

2.3 选择股票

检查 earnings_calendar 数据表,并选择一家即将在周四公布业绩的股票。在这个例子中,我们将使用Costco(COST)公司。

symbol = "COST"
last_price = (
    obb
    .equity
    .price
    .quote(symbol, provider="yfinance")
    .T
    .loc["last_price", 0]
)

2.4 下载期权链数据

获取(COST)在业绩发布后即将到期的期权数据。

options = obb.derivatives.options.chains(symbol, provider="cboe")
expiration = datetime(2024, 3, 8).date()  # Adjust to match the earnings schedule
chain = options.query("`expiration` == @expiration")

2.5 构建跨式期权组合

找到平价认购期权和认沽期权,然后计算跨式期权的价格。

# Get ATM strike price
strikes = chain.strike.to_frame()
call_strike = (
    strikes
    .loc[strikes.query("`strike` > @last_price").idxmin()]["strike"]
    .iloc[0]
)

# Filter ATM call and put options
atm_call = chain.query("`strike` == @call_strike and `option_type` == 'call'")
atm_put = chain.query("`strike` == @call_strike and `option_type` == 'put'")

# Combine and calculate straddle price
atm = pd.concat([atm_call, atm_put])
straddle_price = round(atm.ask.sum(), 2)
print(f"Straddle Price: {straddle_price}")

2.6 计算隐含移动

最后,根据跨式期权的价格估算市场预期的价格波动幅度。

# Calculate implied move
days = (atm.expiration.iloc[0] - datetime.now().date()).days
implied_move = ((1 + straddle_price / last_price) ** (1 / days) - 1)
print(f"Implied Move: {implied_move * 100:.2f}%")

例如,如果跨式期权的价格是20美元,而股票的最新交易价格是500美元,市场可能预期在业绩公布后股价会有1.74%的波动。

三、实例分析

现在你已经有了上面的代码,我们将如下实例分析:

  1. 对多只具有相同到期日和业绩公布日的股票进行分析。
  2. 将隐含波动与业绩公布后的实际价格变动进行比较。
  3. 优化你的策略,以发现潜在的盈利机会。

3.1 苹果公司实例

截至 2025 年 1 月 16 日,苹果公司(AAPL)的交易价格为 231.69 美元,比前一交易日收盘价下跌约 2.6%。

为了预测苹果公司(AAPL)明天的股价(基于当前价格231.69美元),我们可以使用历史波动率(例如平均真实波动幅度,ATR)或从期权市场得出的隐含波动率。

以下是一个使用ATR和隐含波动率来估算明天股价范围的Python脚本:

import yfinance as yf
from datetime import datetime, timedelta

# Fetch historical data
symbol = "AAPL"
data = yf.download(symbol, start=datetime.now() - timedelta(days=30), end=datetime.now())
data['ATR'] = data['High'] - data['Low']

# Calculate the Average True Range (ATR) for the last 14 days
atr = data['ATR'][-14:].mean()

# Current price
current_price = 231.69

# Predict tomorrow's range using ATR
tomorrow_high = round(current_price + atr, 2)
tomorrow_low = round(current_price - atr, 2)

# Display ATR-based range
print(f"ATR-Based Prediction for Tomorrow ({symbol}):")
print(f"Low: ${tomorrow_low}")
print(f"High: ${tomorrow_high}")

# Optionally, include implied move from straddle
# Assuming a straddle price (e.g., $10)
straddle_price = 10  # Replace this with actual straddle price from options data
implied_move_percent = straddle_price / current_price
implied_move = current_price * implied_move_percent

print("\nIncluding Implied Move:")
print(f"Implied Move: ±${round(implied_move, 2)}")
print(f"Low: ${round(current_price - implied_move, 2)}")
print(f"High: ${round(current_price + implied_move, 2)}")

3.3 计算过程

基于 ATR 的预测:

  • 使用历史价格波动率(ATR)来估计可能的价格范围。
  • 例如,如果 ATR 为 5 美元,则范围为

预期输出示例

  • 基于 ATR 的范围: 最低价:226.69 美元 最高价:236.69 美元
  • 隐含变动区间: 最低价:221.69 美元 最高价:241.69 美元

3.4 运作原理

  • 历史数据:使用 yfinance 获取苹果公司(AAPL)过去30天的交易数据,以计算平均真实波动幅度(ATR)。
  • 基于ATR的预测:利用ATR,结合今日的收盘价,估算明天可能的最高价和最低价。
  • 期权市场隐含波动:通过假设的跨式期权价格,估算明天的股价波动范围。

四、观点总结

财报季期间股价常因业绩预期剧烈波动。本文提出利用跨式期权策略预测走势,通过OpenBB SDK获取期权数据。最后结合历史波动率(ATR)与期权隐含波动率,通过Python脚本估算财报后股价潜在波动区间,为交易决策提供量化依据。

  • 财报发布是影响股价的关键事件,市场对公司未来表现的预期与实际业绩之间的差距往往会引发股价波动。
  • 期权交易者的预期已经体现在期权价格中,通过分析这些价格,我们可以了解市场对财报发布后股价走势的预期。
  • 跨式期权策略能够有效利用期权数据来预测股价的大幅波动,尤其是在财报发布后。
  • 使用 Python 和 OpenBB SDK 可以帮助交易者自动获取期权数据,并通过编程方式分析和预测股价走势。
  • 结合历史波动率(如平均真实波动幅度,ATR)和期权市场的隐含波动率,可以为股价预测提供更全面的视角。

感谢您阅读到最后,希望这篇文章为您带来了新的启发和实用的知识!如果觉得有帮助,请不吝点赞和分享,您的支持是我持续创作的动力。祝您投资顺利,收益长虹!如果对文中内容有任何疑问,欢迎留言,我会尽快回复!


本文内容仅限技术探讨和学习,不构成任何投资建议。

Published inAI&Invest专栏

Be First to Comment

    发表回复