Skip to content

szchan/stock-options-ans

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

股票和期权组合分析工具

alt text

项目简介

这是一个强大的 Jupyter Notebook 工具,专为股票和期权投资组合分析而设计。该工具允许用户通过 Interactive Brokers 获取实时市场数据,使用 Black-Scholes 模型计算期权价格,并生成直观的 3D 可视化图表来展示不同价格和时间情景下的盈亏情况。

主要功能

  1. 数据获取:从 Interactive Brokers 获取实时股票数据和历史波动率
  2. 期权定价:使用 Black-Scholes 模型计算期权理论价格
  3. 盈亏计算:综合计算期权组合和正股持仓的总体盈亏
  4. 3D 可视化:生成多维度的盈亏图表,帮助分析不同价格和时间下的投资表现

技术依赖

要运行此 Notebook,您需要安装以下 Python 库:

  • ib_insync - Interactive Brokers API 的 Python 封装
  • numpy - 科学计算库
  • matplotlib - 数据可视化库
  • scipy - 科学计算和统计分析库
  • nest_asyncio - 解决 Jupyter 中的事件循环问题

安装依赖

pip install -r requirements.txt

运行 Jupyter Notebook

jupyter lab

使用前提

  1. 您需要安装并运行 Interactive Brokers 的 Trader Workstation (TWS) 或 IB Gateway
  2. TWS/Gateway 需要允许 API 连接(默认端口为 7496)
  3. 您需要有效的 Interactive Brokers 账户和市场数据订阅

使用方法

  1. 启动 Interactive Brokers 的 TWS 或 IB Gateway 并登录
  2. 打开 Jupyter Notebook 并运行本 Notebook
  3. 按顺序执行各个代码单元
  4. 在最后一个代码单元中自定义您的期权组合和股票持仓:
# 设置股票代码
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)

功能模块详解

1. IBDataFetcher 类

负责与 Interactive Brokers 建立连接并获取股票数据,包括当前价格和历史波动率。

2. Black-Scholes 期权定价模型

使用标准 Black-Scholes 公式计算期权理论价格,支持看涨期权和看跌期权。

3. 组合盈亏计算

计算不同价格和时间情景下期权组合和股票持仓的综合盈亏。

4. 3D 可视化功能

生成四个图表:

  • 总盈亏(期权+股票)的 3D 图
  • 期权盈亏的 3D 图
  • 股票盈亏的 3D 图
  • 到期日的 2D 盈亏曲线

注意事项

  • 如果无法连接到 Interactive Brokers,请检查 TWS/Gateway 是否正在运行并允许 API 连接
  • 为获得准确的期权定价,波动率参数非常重要
  • 本工具假设无风险利率为 5%,您可以根据实际情况修改
  • 可视化结果仅供参考,实际交易中还需考虑交易成本、流动性和其他市场因素

许可说明

本项目仅供学习和研究使用,交易决策请自行负责。使用 Interactive Brokers API 时请遵守其服务条款。

About

旨在对正股和期权投资组合进行分析

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors