Skip to content

A fully functional Binance BTC options data scraping and analysis system that supports obtaining comprehensive data, including options contract information, historical candlestick data, order book snapshots, transaction records, mark prices, and open interest.

Notifications You must be signed in to change notification settings

LambertAlpha/binance_options

Repository files navigation

Binance BTC期权数据爬取系统

一个功能完整的Binance BTC期权数据爬取和分析系统,支持获取期权合约信息、历史K线、订单簿快照、成交记录、标记价格、持仓量等全面数据。

🌟 主要功能

核心数据采集

  • 期权合约信息: 自动获取所有BTC期权合约的基本信息
  • 历史K线数据: 支持多种时间周期(1m, 5m, 15m, 30m, 1h, 4h, 1d)
  • 订单簿快照: 实时订单簿深度数据
  • 成交记录: 最近成交明细
  • 标记价格: 期权标记价格和希腊字母
  • 持仓量: 期权未平仓合约数据

📊 期权链(T型表格)功能 NEW

  • 完整期权链: 获取类似交易界面的T型期权表格数据
  • 实时价格: 包含买卖价、标记价格、隐含波动率
  • 希腊字母: Delta, Theta, Gamma, Vega等风险指标
  • 持仓量数据: 各执行价的持仓量统计
  • 多种格式: 支持JSON和CSV格式输出

数据存储与分析

  • 增量存储: 避免重复数据,节省存储空间
  • 多格式支持: CSV、JSON格式存储
  • 数据分析: 合约分布、价格统计、交易量分析
  • 状态监控: 实时数据状态检查

高级功能

  • 异步爬取: 提高大批量数据获取效率
  • 定时任务: 支持自动化数据更新
  • 错误处理: 完善的错误处理和重试机制
  • 速率限制: 自动处理API速率限制

🚀 快速开始

1. 环境准备

# 安装依赖
pip install -r requirements.txt

# 创建数据目录
mkdir -p data/klines data/orderbook data/trades data/mark_prices data/open_interest data/option_chains

2. 基本使用

获取最近7天数据

# 完整数据爬取(最近7天)
python btc_options_crawler.py --mode full --days 7

# 快速更新模式
python btc_options_crawler.py --mode quick --days 7

获取期权链(T型表格)数据 NEW

# 获取所有到期日的期权链数据
python btc_options_crawler.py --mode option_chain

# 获取特定到期日的期权链数据
python btc_options_crawler.py --mode option_chain --expiry 2025-01-31

# 运行期权链数据示例
python example_option_chain.py

其他功能

# 查看系统状态
python btc_options_crawler.py --mode status

# 启动定时任务
python btc_options_crawler.py --mode scheduler

3. 期权链数据格式

期权链数据包含以下信息:

T型表格格式:

Call_OI | Call_IV | Call_Δ | Call_Mark | Call_Bid | Call_Ask | Strike | Put_Bid | Put_Ask | Put_Mark | Put_Δ | Put_IV | Put_OI
--------|---------|--------|-----------|----------|----------|--------|---------|---------|----------|-------|--------|--------
   150  |  0.6234 | 0.7234 |   2845.67 |  2840.00 |  2850.00 | 90000  | 125.50  | 135.50  |   130.25 |-0.276 | 0.5987 |   89
   245  |  0.5891 | 0.6789 |   2234.12 |  2230.00 |  2240.00 | 95000  | 245.00  | 255.00  |   250.00 |-0.321 | 0.6123 |  134

数据字段说明:

  • Call_OI/Put_OI: Call/Put持仓量
  • Call_IV/Put_IV: Call/Put隐含波动率
  • Call_Δ/Put_Δ: Call/Put Delta值
  • Call_Mark/Put_Mark: Call/Put标记价格
  • Call_Bid/Put_Bid: Call/Put买入价
  • Call_Ask/Put_Ask: Call/Put卖出价
  • Strike: 执行价格

📁 项目结构

Binance_options/
├── README.md                 # 项目说明文档
├── requirements.txt          # Python依赖包
├── config.py                # 配置文件
├── data_models.py           # 数据模型定义
├── binance_api.py           # Binance API接口
├── data_storage.py          # 数据存储功能
├── btc_options_crawler.py   # 主爬虫程序
├── example_usage.py         # 基本使用示例
├── example_option_chain.py  # 期权链数据示例 NEW
└── data/                    # 数据存储目录
    ├── btc_option_contracts.csv
    ├── klines/              # K线数据
    ├── orderbook/           # 订单簿数据
    ├── trades/              # 成交数据
    ├── mark_prices/         # 标记价格数据
    ├── open_interest/       # 持仓量数据
    └── option_chains/       # 期权链数据 NEW

💡 使用示例

示例1: 获取期权链数据

from binance_api import BinanceOptionAPI
from data_storage import DataStorage

# 初始化
api = BinanceOptionAPI()
storage = DataStorage()

# 获取期权链数据
option_chain_data = api.get_option_chain_data()

# 显示摘要
storage.display_option_chain_summary(option_chain_data)

# 保存为T型表格
storage.save_option_chain_data(option_chain_data)

示例2: 获取最近7天的历史数据

from btc_options_crawler import BTCOptionsCrawler

crawler = BTCOptionsCrawler()

# 获取最近7天的完整数据
crawler.run_full_crawl(days_back=7)

示例3: 获取特定合约的实时数据

from binance_api import BinanceOptionAPI

api = BinanceOptionAPI()

# 获取特定合约的标记价格
mark_price = api.get_mark_price("BTC-250131-100000-C")

# 获取订单簿
orderbook = api.get_orderbook("BTC-250131-100000-C")

# 获取持仓量
open_interest = api.get_open_interest("BTC-250131-100000-C")

🔧 配置说明

API配置

  • BINANCE_BASE_URL: Binance期权API基础URL
  • REQUEST_TIMEOUT: 请求超时时间
  • RATE_LIMIT_DELAY: 请求间隔时间
  • MAX_RETRIES: 最大重试次数

数据配置

  • KLINE_INTERVALS: 支持的K线时间周期
  • DEFAULT_KLINE_LIMIT: 默认K线数据数量
  • ORDERBOOK_DEPTH: 订单簿深度

📊 数据输出

期权链数据输出

  1. 完整JSON数据: data/option_chains/option_chain_TIMESTAMP.json
  2. T型表格CSV: data/option_chains/option_chain_table_EXPIRY_TIMESTAMP.csv

其他数据输出

  1. 合约信息: data/btc_option_contracts.csv
  2. K线数据: data/klines/SYMBOL_INTERVAL_DATE.csv
  3. 订单簿: data/orderbook/orderbook_snapshots_DATE.csv
  4. 成交记录: data/trades/SYMBOL_trades_DATE.csv
  5. 标记价格: data/mark_prices/mark_prices_TIMESTAMP.csv
  6. 持仓量: data/open_interest/open_interest_TIMESTAMP.csv

⚠️ 注意事项

  1. API限制: 请遵守Binance API的速率限制
  2. 网络稳定: 确保网络连接稳定
  3. 存储空间: 期权数据量较大,请确保足够的存储空间
  4. Python版本: 需要Python 3.7+
  5. 依赖版本: 使用最新的依赖包版本以确保兼容性

🔄 版本更新

v2.0.0 (最新)

  • ✅ 新增期权链(T型表格)数据获取功能
  • ✅ 修复API端点兼容性问题
  • ✅ 优化数据存储格式
  • ✅ 新增标记价格和持仓量数据采集
  • ✅ 改进错误处理和重试机制

v1.0.0

  • ✅ 基础期权数据爬取功能
  • ✅ K线、订单簿、成交数据采集
  • ✅ 数据存储和分析功能

🆘 故障排除

常见问题

  1. API请求失败

    • 检查网络连接
    • 确认API端点可访问
    • 检查请求频率是否过高
  2. 数据格式错误

    • 更新到最新版本
    • 检查API响应格式变化
  3. 依赖安装失败

    • 使用虚拟环境
    • 更新pip版本
    • 检查Python版本兼容性

📧 联系方式

如有问题或建议,请通过以下方式联系:

  • 创建Issue进行讨论
  • 提交Pull Request贡献代码

免责声明: 本工具仅供学习和研究使用,使用时请遵守相关法律法规和交易所规定。

About

A fully functional Binance BTC options data scraping and analysis system that supports obtaining comprehensive data, including options contract information, historical candlestick data, order book snapshots, transaction records, mark prices, and open interest.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages