Learning
VOL. VII · NO. 135 · OTC Derivatives · 21 JUL 2026

Product Option

OTC 衍生品 · 21 JUL 2026 · 7 min read · 1,072 words
· · ·

产品深度:场外期权(OTC Options)

期权是结构化产品的”乐高积木”。理解期权,你就理解了结构化产品的全部。


一、你需要知道的关键业务规则

flowchart LR
    subgraph 期权要素
        A[标的 Underlying]
        B[行权价 Strike]
        C[期限 Tenor]
        D[期权费 Premium]
    end
    subgraph 方向
        Call[看涨 Call<br/>买入上涨权利]
        Put[看跌 Put<br/>买入下跌保护]
    end
    subgraph 行权方式
        EU[欧式 European<br/>到期日行权]
        US[美式 American<br/>随时行权]
        BER[百慕大 Bermuda<br/>指定日行权]
    end
    A & B & C --> Call
    A & B & C --> Put
    Call --> EU & US & BER
    Put --> EU & US & BER

1.1 期权合约要素

要素说明系统字段
标的(Underlying)挂钩资产underlying_code
行权方式欧式(到期行权)/美式(随时行权)exercise_style
期权方向看涨(Call)/看跌(Put)option_type
行权价(Strike)约定买卖价格strike_price
期限生效日→到期日expiry_date
名义本金期权覆盖的金额notional
期权费(Premium)买方支付的权利金premium
权利金支付日期权费支付时间premium_payment_date
结算方式现金结算/实物交割settlement_type

1.2 常见的业务场景

场景一:保护性对冲

客户持有100万股茅台股票,担心短期下跌
→ 买入欧式看跌Put,行权价在当前价95%
→ 如果茅台跌超5%,Put盈利弥补持仓亏损
→ 成本:支付期权费(假设 2% 名义本金)

场景二:方向性投资

客户看好券商板块
→ 买入一篮子券商股的看涨Call
→ 如果券商股涨了,获得杠杆收益
→ 如果跌了,最大损失 = 期权费

场景三:收益增强

客户持有中证500ETF不动,但预期近期不涨
→ 卖出虚值看涨Call(Covered Call)
→ 收到期权费作为额外收益
→ 如果暴涨超过行权价,客户可能被行权

二、定价输入参数

系统里需要维护的定价参数(PM需知道每个参数的来源):

参数符号数据来源更新频率
标的价格S市场实时行情实时
行权价K合约条款固定
剩余期限T计算:到期日-当前日每日更新
无风险利率rLPR/SHIBOR/国债收益率每日/每次利率变动
隐含波动率σ彭博/Wind/自建曲面每日
分红率q券商预期/历史数据季度更新

对设计系统的含义:定价引擎是”参数入→价格出”的黑盒,你的工作不是写引擎,而是确保参数正确输入、结果正确输出。


三、Greeks——交易员每天都在看的东西

3.1 每个Greek的含义

Greek含义举例交易员怎么说
Delta标的价格涨1元,期权价格变多少Call的Delta=0.6 → 股票涨1元,期权涨0.6元”今天Delta偏了,得买点股票对冲”
Gamma标的价格涨1元,Delta变多少Gamma大的期权→Delta变化快→需频繁对冲”这个期权Gamma太大,对冲不过来”
Vega波动率变1%,期权价格变多少Vega=500 → 波动率涨1%→期權价值涨500元”波动率起来了,Vega要小心”
Theta过一天,期权价值损失多少Theta=-200 → 每天亏200元时间价值”时间在流逝,这个期权每天亏2万”
Rho利率变1%,期权价格变多少长期期权Rho显著”利率降了,我的看涨Rho在亏”

3.2 Greeks 在系统里的用法

Greeks 计算不是一次性的——它需要:

  • 每日计算(用于风险报告)
  • 实时监控(用于预警)
  • 历史回溯(用于分析)

系统数据字段(每个持仓、每天一条):

{
  "position_id": "OPT20240101-001",
  "calc_date": "2024-06-26",
  "delta": 0.6532,
  "gamma": 0.0087,
  "vega": 12500.00,
  "theta": -3800.00,
  "rho": 2100.00,
  "delta_cny": 6532000.00,  // Delta × 名义本金
  "vega_cny": 1250000.00     // Vega × 1% 波动率变动
}

四、行权与结算处理

4.1 行权流程

到期日

判断:到期是否实值(Call: S > K, Put: S < K)

是实值 → 自动行权(默认)

计算行权盈亏 = max(S-K, 0) × 数量(Call)

现金结算(支付差额)或实物交割(交付股票)

交易关闭

4.2 提前平仓

客户可以在到期前申请平仓(需要双向报价):

平仓价 = 当前期权市场价值
平仓损益 = 平仓价 - 建仓时期权费

五、场外期权的黑话

黑话意思业务含义
”平价/平值”行权价=当前价(ATM)Delta ≈ 0.5
”实值”行权价<当前价(Call)(ITM)Delta > 0.5
”虚值”行权价>当前价(Call)(OTM)Delta < 0.5
”波动率曲面”不同行权价+期限的波动率矩阵定价核心输入
”波动率微笑”虚值和实值波动率高于平值市场特征
”时间价值”期权价-内在价值(纯粹的时间价值)Theta的源
”内在价值”立即行权的价值max(S-K, 0)
“期权费”买方支付的权利金premium
”自动行权”到期实值自动执行系统自动处理
”overwrite”卖出备兑看涨(Covered Call)收益增强策略

六、系统实现(ODTS 中的期权处理)

以下基于 ~/odts1/hedging-as~/odts1/eds-price-server 的实际代码。

6.1 定价引擎入口

步骤系统核心代码路径
询价hedging-asaction/quotation/QuotationAction.java
定价编排hedging-aspricing/service/PricingService.java → getPrice()
产品识别edslibpayoff/PayoffFactory.create(productType, params)
估值方法edslibvaluation/MonteCarloValuation.evaluate()ClosedFormValuation.evaluate()
独立引擎eds-price-serverPricingEngine.java(始自 2016,30+ 产品)
Greeksgpricingenginepricing/GPricingEngine.java — Delta/Gamma/Vega/Theta/Rho 完整计算

6.2 交易簿记

步骤系统核心代码路径
前端录入new-edswebsrc/views/option-contract/ (Vue 2 SPA)
后端合约eds-web-appContractController.java, ContractAction.java
领域模型hedging-ascontract/Contract.java
持久化hedging-ascontract/ContractSaveService.java → Oracle ODTSDB

6.3 Greeks 在代码里的实际落地

Greeks 是每笔交易的每日计算结果,存储在 EOD 批处理的结果中:

hedging-as/src/com/cicc/service/eod/GreeksStep.java    — EOD 第 6 步
hedging-as/src/com/cicc/service/strHedgePositionEod/
├── DeltaCalculator.java     — 每笔合约 Delta
├── GammaCalculator.java     — 每笔合约 Gamma
└── VegaCalculator.java      — 每笔合约 Vega

输出字段映射:OptionNPV / DeltaNPV / GammaNPV / ThetaNPV / VegaNPV / RhoNPV,汇总时用 PositionAggregator.java 按标的维度聚合全台头寸。

6.4 行权处理代码

hedging-as/src/com/cicc/action/eod/
├── FixingStep.java          — EOD 第 2 步:定盘价(行权判定基础)
└── BarrierCheckStep.java    — EOD 第 4 步:期权是否为实值

更多细节见 ODTS-05 交易生命周期ODTS-35 定价引擎演变ODTS-15 对冲工作流


下一产品:product-snowball.md 雪球深度