Vnpy OptionMaster模块的base.py文件定义了几个关键的数据结构,构成了整个系统的基础。以下是这些数据结构的详细解释:
1. InstrumentData
这是所有金融工具的基类,包含以下主要属性:
- 基本信息: symbol, exchange, vt_symbol
- 交易相关: pricetick, min_volume, size
- 持仓信息: long_pos, short_pos, net_pos
- 价格信息: mid_price
- 其他: tick (最新行情), portfolio (所属投资组合)
主要方法包括更新持仓、更新行情等。
2. OptionData(InstrumentData)
继承自InstrumentData,专门用于表示期权。额外的属性包括:
- 期权特征: strike_price, option_type, option_expiry, days_to_expiry
- 定价模型相关: calculate_price, calculate_greeks, calculate_impv
- 隐含波动率: bid_impv, ask_impv, mid_impv, pricing_impv
- 希腊字母: theo_delta, theo_gamma, theo_theta, theo_vega
- 持仓风险指标: pos_value, pos_delta, pos_gamma, pos_theta, pos_vega
方法包括计算隐含波动率、理论希腊字母、持仓风险等。
3. UnderlyingData(InstrumentData)
表示标的资产,继承自InstrumentData。主要增加了:
- theo_delta: 理论delta,通常为合约大小
- chains: 与该标的关联的期权链字典
4. ChainData
表示期权链,即同一标的的所有期权。主要属性包括:
- 期权集合: options, calls, puts
- 风险指标汇总: pos_value, pos_delta, pos_gamma, pos_theta, pos_vega
- 标的资产: underlying
- 其他: atm_price (平值期权价格), use_synthetic (是否使用合成标的)
方法包括添加期权、计算风险、更新行情等。
5. PortfolioData
代表整个期权投资组合。主要属性有:
- 期权集合: options
- 期权链集合: chains
- 标的资产集合: underlyings
- 汇总风险指标: pos_delta, pos_gamma, pos_theta, pos_vega
方法包括计算整体风险、更新行情和交易、设置利率和定价模型等。
这些数据结构形成了一个层次化的体系:
Portfolio > Chain > Option/Underlying > Instrument
每个层级都聚合了下一级的信息,并提供了相应的计算和更新方法。这种设计使得系统可以方便地管理复杂的期权组合,进行风险计算,并响应市场变化。