期权定量分析

概率锥 (Probability Cones)

图片描述

图片描述

概率锥 (Probability Cones) 指标源码解析与数学原理


一、 核心数学模型与原理

概率锥的理论基础源于金融工程中的 几何布朗运动(Geometric Brownian Motion, GBM) 模型。在该模型下,资产价格的对数收益率服从正态(或重尾)分布,其不确定性(波动范围)随时间的推移按 时间平方根法则(Square Root of Time Rule) 呈锥形扩散。

                     ┌── Upper 3σ (99.73%)
                     │── Upper 2σ (95.45%)
                     │── Upper 1σ (68.27%)
锚点价格 S₀ ─────────┼── Mean (中枢漂移轴)
                     │── Lower 1σ
                     │── Lower 2σ
                     └── Lower 3σ
          t=0                t=i (未来 K 线)

1. 对数收益率 (Log Returns)

金融资产价格变化存在非对称性与累乘效应,因此采用连续复利的对数收益率:

$$r_t = lnleft(frac{S_t}{S_{t-1}}right)$$

  • $S_t$:当前周期的数据源价格(如 close)。
  • $S_{t-1}$:上一周期的价格。

2. 均值漂移率 ($mu$)

在历史回溯窗口 $N$ (i_lookback,默认 500 根 K 线) 内,计算对数收益率的期望值:

  • 算术平均值 (Average)
    $$mu = frac{1}{N} sum_{t=1}^{N} r_t = text{SMA}(r, N)$$

  • 中位数 (Median)
    $$mu = text{Median}(r, N)$$

在长期价格序列中,中位数对异常值(黑天鹅极值)具有更强的鲁棒性


3. 波动率与偏差算法 ($sigma$)

指标提供了三种历史波动率算法以及一种自定义隐含波动率(IV)导入机制:

(1) 标准差 (Standard Deviation)

适用于标准正态分布假设:
$$sigma_{text{std}} = sqrt{frac{1}{N-1} sum_{t=1}^{N} (r_t – mu)^2}$$

(2) 平均绝对偏差 (MAD – Mean Absolute Deviation)

用于降低离群值影响,反映收益率的平均离散程度:
$$text{MAD} = frac{1}{N} sum_{t=1}^{N} |r_t – mu|$$

(3) 拉普拉斯偏差 (Laplace Deviation)

假设资产收益率服从重尾分布(拉普拉斯分布/双指数分布),公式为:
$$sigma_{text{laplace}} = sqrt{2 cdot text{MAD}^2} = sqrt{2} cdot text{MAD}$$

(4) 年化隐含波动率转换 (Custom IV)

当开启 i_useCustomIV 时,指标将年化百分比波动率 $mathrm{IV}$ 转换至单根 K 线周期的波动率:
$$sigma_{mathrm{IV}} = frac{mathrm{IV}}{100 times sqrt{mathrm{PeriodsPerYear}}}$$

  • 例如:加密货币日线 $mathrm{PeriodsPerYear} = 365$,股市日线 $mathrm{PeriodsPerYear} = 252$。

4. 概率锥推演公式

定义起点(锚点)价格为 $S_0$,漂移率为 $mu$,单周期偏差为 $sigma$。向未来第 $i$ 根 K 线($i = 0, 1, 2, dots, text{forecastBars}$)进行推演:

均线(漂移轴)

$$text{Mean}_i = S_0 cdot e^{mu cdot i}$$

  • 若关闭漂移 (i_driftToggle = false),则 $mu = 0$,中枢线为水平线 $text{Mean}_i = S_0$。

上下偏差锥线 (Upper / Lower Lines)

$$text{Upper}_{i, k} = S_0 cdot e^{mu cdot i + k cdot sigma cdot sqrt{i + text{open}}}$$

$$text{Lower}_{i, k} = S_0 cdot e^{mu cdot i – k cdot sigma cdot sqrt{i + text{open}}}$$

  • $k$:偏差倍数(如第 1、2、3 层圆锥对应的 $k_1, k_2, k_3$)。
  • $sqrt{i + text{open}}$:时间平方根扩散因子。open 参数控制锚点起点是否包含初始波动(开启时 $text{open}=1$,闭合时 $text{open}=0$)。

二、 代码结构与函数拆解

Pine Script 源码采用了模块化的设计架构,整体分为六大部分:

┌────────────────────────────────────────────────────────┐
│ 1. 常量与类型定义 (User Types & Color Strings)        │
├────────────────────────────────────────────────────────┤
│ 2. 输入选项配置 (Inputs: Custom IV, Anchors, Cones)     │
├────────────────────────────────────────────────────────┤
│ 3. 自定义对象与方法 (Type definitions & lineStyle)    │
├────────────────────────────────────────────────────────┤
│ 4. 概率锥计算核心函数 (coneValues, coneLine, coneFill)  │
├────────────────────────────────────────────────────────┤
│ 5. 动态锚点定位与波动率计算                             │
├────────────────────────────────────────────────────────┤
│ 6. 绘图渲染逻辑 (barstate.islast 执行)                  │
└────────────────────────────────────────────────────────┘

1. 自定义数据类型 (User-Defined Types)

为了便于多层级数据的传递与管理,代码定义了三个封装对象:

  • deviations:存储各层上下轨道的偏差倍数与计算得到的单周期波动率。
  • coneValues:存储未来所有预测点上的价格数组 (array)。
  • coneLineStyle:封装线条样式(颜色、样式、线宽、开关)。

2. 核心算法函数

coneValues()

循环生成从 $i = 0$ 到 forecastBars 的所有区间价格,并压入对应数组:

coneValues(float sourceAnchor, bool driftToggle, float mean, int forecastBars, bool anchorOpenToggle, deviations newDeviations) =>
    int anchorOpen = anchorOpenToggle ? 1 : 0
    // 遍历预测周期
    for i = 0 to forecastBars
        float periodSqrt = math.sqrt(i + anchorOpen)
        float driftFactor = driftToggle ? mean * i : 0.0
        // 利用指数扩散计算上轨与下轨价格
        float upperVal = sourceAnchor * math.exp(driftFactor + newDeviations.dev1 * newDeviations.stdev * periodSqrt)
        // ... 压入数组存储

coneLine()

利用 line.new() 在图表上绘制或更新线条。代码优化了内存消耗,只在最后一根 K 线更新 line 坐标。支持阶梯状(stepped)与平滑连接两种模式。

coneFill()

使用 Pine Script 独特的 linefill.new() 方法,在相邻的两条 line 对象之间创建动态色彩填充区。


3. 动态锚点计算 (Anchor Index)

指标支持三种确定概率锥起点的方式:

  1. ANCHOR_BAR:基于当前 K 线向后回溯 N 根 K 线。
  2. ANCHOR_DATE:锁定在用户指定的特定日期。
  3. ANCHOR_HTF:自动锁定在更高时间框架(如周线 W、月线 M)的起点。

转换公式:

int anchorSubscript = switch i_anchorType
    ANCHOR_BAR  => i_coneLock ? i_barsBack + (bar_index - barLock[1] - 1) + i_anchorOffset : i_barsBack + i_anchorOffset
    ANCHOR_DATE => bar_index - anchorDate + i_anchorOffset
    ANCHOR_HTF  => anchorBarssince + i_anchorOffset

三、 参数与符号对照表

Pine Script 变量 数学符号 参数含义 默认设置
i_source $S$ 计算数据源 close
i_lookback $N$ 统计回溯周期 500
i_forecastBars $H$ 向未来预测的 K 线数量 30
meanSwitch $mu$ 对数收益率期望漂移率 自动选择
deviationSwitch $sigma$ 单周期波动率/偏差 历史标准差或转换 IV
i_customIV $mathrm{IV}$ 年化隐含波动率 (%) 50.0%
i_periodsPerYear $P$ 每年 K 线总数 365
i_firstUpperDeviation $k_1$ 第一层上偏差倍数 (标准差层级 1) 1.0
i_secondUpperDeviation $k_2$ 第二层上偏差倍数 (标准差层级 2) 2.0
i_thirdUpperDeviation $k_3$ 第三层上偏差倍数 (标准差层级 3) 3.0

四、 实战应用场景

  1. 期权卖方安全边界规划 (Options Selling Boundary)
    利用自定义 IV 模式生成概率锥,1σ 覆盖约 68.27% 的价格范围,2σ 覆盖约 95.45%。期权卖方(Sell Call / Sell Put)可参照 2σ 或 3σ 概率锥边界设定卖出虚值期权的行权价。

  2. 波动率挤压与突破评估 (Volatility Breakout)
    当价格突破 2σ 或 3σ 概率锥边界时,表明市场发生了超出统计常态的非理性冲高或暴跌,可作为超买超卖逆向交易或顺势突破交易的信号。

  3. 未来价格目标位预测 (Price Target Forecasting)
    结合均线漂移轴(Mean Line),可以评估在趋势延续假设下,资产价格在特定未来时间点的统计期望中枢。

上一篇