这是一个强大的 Jupyter Notebook 工具,专为股票和期权投资组合分析而设计。该工具允许用户通过 Interactive Brokers 获取实时市场数据,使用 Black-Scholes 模型计算期权价格,并生成直观的 3D 可视化图表来展示不同价格和时间情景下的盈亏情况。
- 数据获取:从 Interactive Brokers 获取实时股票数据和历史波动率
- 期权定价:使用 Black-Scholes 模型计算期权理论价格
- 盈亏计算:综合计算期权组合和正股持仓的总体盈亏
- 3D 可视化:生成多维度的盈亏图表,帮助分析不同价格和时间下的投资表现
要运行此 Notebook,您需要安装以下 Python 库:
ib_insync- Interactive Brokers API 的 Python 封装numpy- 科学计算库matplotlib- 数据可视化库scipy- 科学计算和统计分析库nest_asyncio- 解决 Jupyter 中的事件循环问题
pip install -r requirements.txtjupyter lab- 您需要安装并运行 Interactive Brokers 的 Trader Workstation (TWS) 或 IB Gateway
- TWS/Gateway 需要允许 API 连接(默认端口为 7496)
- 您需要有效的 Interactive Brokers 账户和市场数据订阅
- 启动 Interactive Brokers 的 TWS 或 IB Gateway 并登录
- 打开 Jupyter Notebook 并运行本 Notebook
- 按顺序执行各个代码单元
- 在最后一个代码单元中自定义您的期权组合和股票持仓:
# 设置股票代码
symbol = "NVDA"
# 定义你自己的期权组合
my_portfolio = [
{'type': 'call', 'strike': 120, 'quantity': 1, 'expiration': '2025-04-11'},
{'type': 'call', 'strike': 110, 'quantity': -1, 'expiration': '2025-03-28'}
# 添加更多期权...
]
# 设置股票持仓
my_stock_position = 100
# 运行可视化
visualize_3d_pnl(symbol, my_portfolio, my_stock_position)负责与 Interactive Brokers 建立连接并获取股票数据,包括当前价格和历史波动率。
使用标准 Black-Scholes 公式计算期权理论价格,支持看涨期权和看跌期权。
计算不同价格和时间情景下期权组合和股票持仓的综合盈亏。
生成四个图表:
- 总盈亏(期权+股票)的 3D 图
- 期权盈亏的 3D 图
- 股票盈亏的 3D 图
- 到期日的 2D 盈亏曲线
- 如果无法连接到 Interactive Brokers,请检查 TWS/Gateway 是否正在运行并允许 API 连接
- 为获得准确的期权定价,波动率参数非常重要
- 本工具假设无风险利率为 5%,您可以根据实际情况修改
- 可视化结果仅供参考,实际交易中还需考虑交易成本、流动性和其他市场因素
本项目仅供学习和研究使用,交易决策请自行负责。使用 Interactive Brokers API 时请遵守其服务条款。
