假设你是一家外卖站点的站长,要从阿明和阿强两位骑手里选一位金牌骑手,负责全站最黄金的商圈。阿明总在月底爆单,偶尔单日收入破千,却也常因超时被投诉扣钱;阿强每天稳定收入三百,从不大起大落。光看“谁赚得多”够吗?显然不够。你还得追问三个问题:他赚得稳不稳?他最惨的时候亏多少?遇上台风天(行情突变)还能不能准时送达?量化交易里的策略评估指标,就是回答这三问的“骑手体检表”:夏普比率衡量“每冒一分险换多少回报”,最大回撤记录“从巅峰摔到谷底有多深”,Calmar比率看“一年收益与最惨亏损的性价比”,稳健性评估则检验他在各种天气下的发挥是否稳定。本文就以这套“体检表”为线索,从收益度量、风险度量讲到综合评估体系,帮你看懂如何客观评判一个量化策略的实盘成色。

岗位关联

对量化与 AI 金融从业者而言,掌握策略评估指标是判断模型能否从回测走向实盘的分水岭,是从“能写出赚钱的策略”走向“能承担资金与风控责任”的必修基本功。

目录
  1. 可视化演示
  2. 收益度量指标
  3. 风险度量指标
  4. 夏普比率
  5. 最大回撤详解
  6. Calmar比率
  7. 稳健性评估
  8. 市场环境适配
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

本节配有交互动效(进入视口后自动加载,约 3KB)。

策略净值曲线与回撤——收益与风险可视化 净值曲线:策略累计收益走势 回撤区域:峰值到谷底最大跌幅 峰值标记:历史最高净值点 谷底标记:最大回撤最低点 MDD = max(1 - V(t)/max(V(0..t))) × 100%

收益度量指标

站长要选拔金牌骑手,第一步永远是翻看两位骑手的“日收入账本”。但账本上一堆数字没法直接比——阿明干了半年,阿强干了一年,怎么比谁更能赚?聪明的站长会把收入折算成“年化收入”,把时长不同、起点不同的人拉到同一把尺子上量。量化交易的第一步,同样是把策略的净值曲线折算成各种口径的收益指标。

最基础的是累计收益率,它回答“从起点到终点一共赚了多少”。但它有个大毛病:时间长短不同,累计收益就没法比。于是有了年化收益率,把总收益按时间比例折算成“每年赚多少”。更进一步,市场涨的时候人人赚钱,要看清策略的真本事,还得扣掉市场本身的贡献,这就是超额收益——好比骑手在“平台无差别派单”的底薪之外,靠路线规划多赚的那部分。

技术细节上,先计算累计收益率,再做年化折算:假设策略跑了一年半(约 378 个交易日),总收益 20%,我们就用一年 252 个交易日的口径把 20% 摊成“每年约 13%”。

站长最后在台账上写下两个年化数字:阿明年化六万,阿强年化五万二。数字好看并不等于可以签约——他还得看看这两份收入的“稳定性”,这就引出下一节的风险度量。

Rannual=(1+Rtotal)mT−1\displaystyle R_{annual} = (1 + R_{total})^{\frac{m}{T}} - 1
其中 m 是“一年内的计息周期数”(股市常取 252 个交易日),T 是策略实际运行的总周期数。它把不同时间长度的策略收益统一成“每年百分之多少”。
  1. 算累计总收益先用期末净值减期初净值,再除以期初本金,得到全程总收益率。
    Rtotal=VT−V0V0\displaystyle R_{total} = \frac{V_T - V_0}{V_0}
  2. 加 1 转为增长倍数把百分比形式的收益转换成净值增长倍数,方便后续做时间折算。
    1+Rtotal\displaystyle 1 + R_{total}
  3. 按时间比例取幂用一年的周期数 m 除以总周期数 T 作为指数,把总倍数“摊”到每年。
    (1+Rtotal)mT\displaystyle (1 + R_{total})^{\frac{m}{T}}
  4. 减 1 还原年化把年化倍数减 1,恢复成“每年赚百分之几”的常用口径。
    Rannual=(1+Rtotal)mT−1\displaystyle R_{annual} = (1 + R_{total})^{\frac{m}{T}} - 1

风险度量指标

光看收入高没有用。阿明年化六万,但收入像过山车:月初爆单月尾封号;阿强五万二,每天稳稳当当地跑。站长心里明白:波动越大,他越难预测明天的账,也越担心阿明哪天撑不住辞职。这种“收入忽高忽低”的程度,在量化里就叫波动率。

波动率用日收益率的标准差来度量,把“每天偏离平均多少”量化成一个数字;再乘 √252(一年约 252 个交易日)做年化。注意波动率对上涨和下跌都敏感,所以衍生出只统计下跌一侧的下行波动率——毕竟投资者真正害怕的是亏钱。而最大回撤更极端,直接刻画“从最高点摔到最低点有多惨”,这一节先建立概念,第四节再展开。

站长在阿明的档案里看到一行刺眼的记录:日收入波动率是阿强的三倍。这就像策略净值曲线上的大起大落——波动率是“颠簸指数”,颠得越狠,乘客(投资者)越容易晕车离场。

σannual=σdaily×252\displaystyle \sigma_{annual} = \sigma_{daily} \times \sqrt{252}
一年约 252 个交易日。收益随时间线性累加,但波动的累积按平方根增长,所以日波动率乘以 √252 才能近似得到年化波动率。
  1. 构造日收益序列用相邻两日净值的差除以前一日净值,得到每天的涨跌百分比。
    rt=Pt−Pt−1Pt−1\displaystyle r_t = \frac{P_t - P_{t-1}}{P_{t-1}}
  2. 计算日波动率对日收益序列求标准差,衡量每天收益偏离均值的平均幅度。
    σdaily=1n−1∑t=1n(rt−rˉ)2\displaystyle \sigma_{daily} = \sqrt{\frac{1}{n-1} \sum_{t=1}^{n}(r_t - \bar{r})^2}
  3. 年化放大乘上年交易日数的平方根,把“一天的风险”折算成“一年的风险”。
    σannual=σdaily×252\displaystyle \sigma_{annual} = \sigma_{daily} \times \sqrt{252}

夏普比率

收入看过了,颠簸也测过了,站长要拍板了:到底谁的综合素质高?直觉上,最好的骑手当然是“每受一分颠簸的罪,就多赚一份钱”——量化里第一把这样的尺子就是夏普比率。

夏普比率 =(策略年化收益 − 无风险利率)÷ 年化波动率。分子先扣掉“躺平也能赚的钱”(比如国债收益),留下靠策略本事赚的超额收益;分母是承担的风险。结果就是“每承担 1 单位波动,换来多少超额回报”。一般认为夏普大于 1 算合格,大于 2 属优秀。但夏普有两个著名盲区:第一,它把上涨波动和下跌波动同等惩罚,而投资者其实只恨下跌;第二,它假设收益近似正态分布,对极端尾部风险不敏感。这两个盲区要靠后两节补上。

站长一算账:阿明夏普 0.8,阿强夏普 1.9——阿明每颠簸一分才换来八厘收益,阿强几乎“稳赚不颠”。结论很清楚:性价比上阿强完胜。

Sharpe=Rp−Rfσp\displaystyle Sharpe = \frac{R_p - R_f}{\sigma_p}
R_p 是策略年化收益,R_f 是无风险利率,σ_p 是年化波动率。夏普比率是量化圈最通用的“风险调整后收益”比拼标准。
  1. 算策略年化收益用第一节的方法把累计收益折算成年化水平,作为分子的第一部分。
    Rp=(1+Rtotal)mT−1\displaystyle R_p = (1 + R_{total})^{\frac{m}{T}} - 1
  2. 算超额收益减去无风险利率,剔除“躺着也能赚的钱”,留下策略真正的超额贡献。
    Rp−Rf\displaystyle R_p - R_f
  3. 除以年化波动用年化波动率作分母,把收益“归一化”成每单位风险的回报。
    σp=σdaily×252\displaystyle \sigma_p = \sigma_{daily} \times \sqrt{252}
  4. 得到夏普比值把前两步合并成一个除法式子,这就是夏普比率的完整表达式。
    Sharpe=Rp−Rfσp\displaystyle Sharpe = \frac{R_p - R_f}{\sigma_p}

最大回撤详解

站长正准备签阿强,突然想起去年台风夜:阿强连人带车摔了,歇了两周,收入直接清零。任何骑手都有“最惨时刻”,而投资策略的“最惨时刻”就是最大回撤。如果说波动率是“日常颠簸”,最大回撤就是“塌方式下跌”,专门考验你能扛多深。

最大回撤的定义很严格:从净值的历史最高点,一路跌到之后的最低点,这个跌幅的最大值。它回答的问题很朴素:“如果你运气差到在巅峰进场,最多会亏多少?”它比波动率更贴近真实心态,因为人们最难忘的不是每天的起伏,而是从高点的跌落。回撤还有一个残酷的不对称性:亏 20% 只需涨 25% 回本,亏 50% 却要涨 100% 才能回本($R_{recover} = D/(1-D)$),回撤越深,恢复越难。

站长把台风夜那两周的亏空标红:阿强的最大回撤是 30%。他心里清楚,真实世界往往是“跌起来比回测更狠”,这 30% 已经足够考验绝大多数人的心脏了——最大回撤是给投资者做“心脏体检”的指标。

MDD=max⁡t∈[0,T]max⁡s≤tPs−Ptmax⁡s≤tPs\displaystyle MDD = \max_{t \in [0,T]} \frac{\max_{s \leq t} P_s - P_t}{\max_{s \leq t} P_s}
P_t 是 t 时刻净值;max_{s≤t} P_s 是截至 t 的历史最高净值。整个式子遍历每个时刻,算出“当前相对最高点跌了多少”,再取其中的最大值。
  1. 追踪历史峰值每走到一个新时刻,先找出截至该时刻的净值最高点,作为比较基准。
    peakt=max⁡s≤tPs\displaystyle \text{peak}_t = \max_{s \leq t} P_s
  2. 计算瞬时回撤用峰值减当前净值再除以峰值,得到当前从高点回落的百分比。
    ddt=peakt−Ptpeakt\displaystyle \text{dd}_t = \frac{\text{peak}_t - P_t}{\text{peak}_t}
  3. 取最深回撤在全部时间点上取回撤的最大值,即整个历史中最惨的一次下跌。
    MDD=max⁡t∈[0,T]ddt\displaystyle MDD = \max_{t \in [0,T]} \text{dd}_t

Calmar比率

综合两张表格,站长发现一个难题:阿明贡献了更高的峰值收入,阿强则从不大起大落。到底用哪张表拍板?他想起行业里的一个老规矩:看“一年赚的钱”和“最惨一次性亏损”的账,这个比值就是 Calmar 比率。

Calmar 比率 = 年化收益率 ÷ 最大回撤的绝对值。它把“最坏时刻”放进分母:每承受 1% 的最大回撤,换来多少年化收益。夏普比率用波动率做分母,关心的是“全程平均颠簸的性价比”;Calmar 用最大回撤做分母,关心“巅峰到谷底的性价比”。实战中,Calmar 特别适合过滤“尾部风险型”策略:某策略平时波动不大、夏普挺高,但某次黑天鹅直接腰斩——夏普看不出来,Calmar 立刻现形。反过来它也有局限:只看“最深的那个点”,忽略回撤持续的时间;新策略样本期短,最大回撤估计不足,Calmar 容易虚高,需搭配足够长的样本。

站长用 Calmar 算完账,阿强 2.1,阿明 0.5。他恍然大悟:“我不怕你平时颠簸,就怕你把最关键的黄金商圈大单搞砸一次。” Calmar 就是那把专盯“最惨时刻”的尺子。

Calmar=Rannual∣MDD∣\displaystyle Calmar = \frac{R_{annual}}{|MDD|}
R_annual 为年化收益率,|MDD| 为最大回撤的绝对值。Calmar 大于 1 时,说明年化收益能覆盖最大回撤,属于比较优秀的水平。
  1. 算年化收益率把策略全程收益折算成年化口径,与回撤的时间维度保持一致。
    Rannual=(1+Rtotal)mT−1\displaystyle R_{annual} = (1 + R_{total})^{\frac{m}{T}} - 1
  2. 取最大回撤绝对值最大回撤是下跌方向的百分比,取绝对值得到“损失幅度”。
    ∣MDD∣\displaystyle |MDD|
  3. 两者相除年化收益除以最大回撤,得到每承受 1% 最深回撤换来的年化收益。
    Calmar=Rannual∣MDD∣\displaystyle Calmar = \frac{R_{annual}}{|MDD|}

稳健性评估

体检报告全绿还不够。站长把阿强叫来:“上次台风天你发挥怎么样?如果平台改派单规则,你还跑得动吗?”这些“换环境考试”的做法,在量化里叫稳健性评估——检验策略在数据换一批、参数动一动、成本加一加之后,还赚不赚钱。

回测漂亮的策略常常是“过拟合”的:研究员调参数调到历史数据上完美,但换到新数据立刻失灵。对付过拟合有三大武器:一是样本外检验,把时间序列切成训练段和样本外段,只让策略“看过”前半段再考后半段;二是滚动前推(walk-forward),不停滚动地“训练一小段、验证下一小段”;三是参数敏感性分析,把参数略微扰动,看业绩是否剧烈崩塌。实际工程里还要把交易成本、滑点算进去——一个“扣完成本就不赚钱”的策略不值得实盘。

站长拿着“用晴天数据集训、再考雨天路线”的模拟记录,发现阿强样本外成绩只缩水了一成,而阿明从没做过这种演练——稳健性评估的意义,就是把“考试型选手”和“实战型选手”分开。

ROOS=∏k=1K(1+rk)−1\displaystyle R_{OOS} = \prod_{k=1}^{K}(1 + r_k) - 1
把历史数据切成 K 个“训练→验证”滚动窗口,r_k 是第 k 个验证窗口(样本外部分)的收益率。这个累计值越接近样本内表现,说明策略的泛化能力越强。
  1. 滚动切窗把历史区间切成 K 个“训练+验证”对,模拟不断用过去预测未来。
    windowk=[traink,testk]\displaystyle \text{window}_k = [\text{train}_k, \text{test}_k]
  2. 收集样本外收益每段的验证窗口算出一个收益率 r_k,它们共同构成样本外成绩单。
    rk=VkendVkstart−1\displaystyle r_k = \frac{V_k^{end}}{V_k^{start}} - 1
  3. 连乘复利把所有 1+r_k 连乘,模拟资金在滚动窗口中被持续投资。
    ∏k=1K(1+rk)\displaystyle \prod_{k=1}^{K}(1 + r_k)
  4. 还原累计收益连乘结果减 1,得到纯样本外累计收益率,用来和样本内表现对比。
    ROOS=∏k=1K(1+rk)−1\displaystyle R_{OOS} = \prod_{k=1}^{K}(1 + r_k) - 1

市场环境适配

最后一个问题:平台下个月要调整派单算法,雨雪天单量翻倍,阿强还能不能保住金牌?市场就像天气,不会永远晴朗。一个策略在牛市是印钞机,到了熊市可能就是绞肉机——所以评估的最后一步,是看它在不同“天气”下的适应力。

实践中,把历史行情按状态划分:牛市(指数持续上涨)、熊市(持续下跌)、震荡市(来回拉锯),再分别统计策略在每个状态下的收益、回撤和夏普。还可以做压力测试,模拟极端行情(如 2020 年 3 月流动性危机)下的最坏结果。最后要设定策略生命周期预警:一旦实盘表现显著劣于历史分布,比如回撤超过历史最大回撤的 1.5 倍,就要降仓或停用重审。

站长在阿强的档案上盖下“金牌骑手”章,备注却写着“每季度复检一次”。市场环境会变,策略会衰减,评估不是一次性的体检,而是长期的健康管理。

Sharperegime=μregime−rfσregime\displaystyle Sharpe_{regime} = \frac{\mu_{regime} - r_f}{\sigma_{regime}}
把样本按市场状态分组后,分别计算各组内的均值收益 μ 与标准差 σ,再套用夏普公式,得到该市场状态下的“局部性价比”。
  1. 标记市场状态按指数涨跌或波动水平,把每个时间段归类为牛、熊或震荡市。
    regimet∈{bull,bear,range}\displaystyle \text{regime}_t \in \{\text{bull}, \text{bear}, \text{range}\}
  2. 分组统计参数只取某一市场状态下的策略收益切片,计算平均收益和标准差。
    μregime=1n∑t∈regimert,σregime=1n−1∑t∈regime(rt−μregime)2\displaystyle \mu_{regime} = \frac{1}{n} \sum_{t \in \text{regime}} r_t, \quad \sigma_{regime} = \sqrt{\frac{1}{n-1} \sum_{t \in \text{regime}} (r_t - \mu_{regime})^2}
  3. 代入夏普公式将分组统计结果套进夏普公式,得到该市场状态的独立性价比。
    Sharperegime=μregime−rfσregime\displaystyle Sharpe_{regime} = \frac{\mu_{regime} - r_f}{\sigma_{regime}}

AI 应用场景

量化私募的策略“体检评审”流水线

阶段:模型评估与上线决策

解决的问题:传统投研评审依赖研究员自报收益、回避回撤,口头汇报容易“报喜不报忧”。AI 平台把夏普、最大回撤、Calmar、样本外衰减比等指标全自动计算并生成标准化“体检卡”,让策略上会评审像骑手体检一样有据可查。

具体案例:某量化私募的 AI 投研平台每周对 1200 个候选因子策略做滚动回测,自动计算夏普、Calmar、最大回撤与样本外/样本内收益比;低于风控阈值的策略自动打上黄色预警进入人工复核,基金经理只需审阅红黄名单,评审时间从一天缩短到半小时。

智能投顾的“风险星级”翻译器

阶段:产品化与用户风险匹配

解决的问题:普通投资者看不懂“年化波动率 18%”,却听得懂“最多可能亏 8%”。用最大回撤和 Calmar 把专业指标翻译成用户能感知的风险标签,是智能投顾提升信任感的关键。

具体案例:某券商 App 的智能投顾在推荐基金组合时,用“骑手体检表”的思路计算组合的最大回撤与 Calmar,把“最大回撤 8%”翻译成“历史最差时约亏 8%”的风险胶囊,并结合用户风险测评分数做匹配,显著降低投诉率。

Python 演示

python54 行
import math def compute_metrics(returns, rf_annual=0.02, periods=252):    """给定日收益率序列, 计算年化收益/波动/夏普/最大回撤/Calmar"""    n = len(returns)    if n == 0:        return None     total = 1.0    for r in returns:        total *= (1 + r)     if total > 0:        r_annual = total ** (periods / n) - 1    else:        r_annual = -1.0     mean = sum(returns) / n    var = sum((r - mean) ** 2 for r in returns) / (n - 1)    vol_annual = math.sqrt(var) * math.sqrt(periods)     if vol_annual > 0:        sharpe = (r_annual - rf_annual) / vol_annual    else:        sharpe = 0.0     peak = 1.0    nav = 1.0    max_dd = 0.0    for r in returns:        nav *= (1 + r)        peak = max(peak, nav)        dd = (peak - nav) / peak        max_dd = max(max_dd, dd)     calmar = r_annual / max_dd if max_dd > 0 else 0.0     return {        "annual_return": r_annual,        "annual_vol": vol_annual,        "sharpe": sharpe,        "max_drawdown": max_dd,        "calmar": calmar,    } if __name__ == "__main__":    demo_returns = [        0.006, -0.004, 0.008, -0.006, 0.010, -0.012, 0.007, -0.005,        0.009, -0.008, 0.011, -0.009, 0.005, -0.007, 0.008,    ]    m = compute_metrics(demo_returns)    if m:        for key, value in m.items():            print(f"{key}: {value:.4f}")
目的:输入策略的日收益率序列,一键算出年化收益、年化波动率、夏普比率、最大回撤和 Calmar 比率,相当于给策略做一次“骑手体检”。
  1. total *= (1 + r)把每天的净值倍数连乘,资金按复利滚动。
  2. r_annual = total ** (periods / n) - 1按时间比例把累计收益折算成年化收益。
  3. vol_annual = math.sqrt(var) * math.sqrt(periods)日波动率乘 √252 放大到年度。
  4. sharpe = (r_annual - rf_annual) / vol_annual if vol_annual > 0 else 0.0每承担 1% 年化波动换来的超额收益,波动为零时记 0。
  5. peak = max(peak, nav)实时刷新历史最高净值。
  6. dd = (peak - nav) / peak当前净值相对巅峰的回撤比例。
  7. calmar = r_annual / max_dd if max_dd > 0 else 0.0年化收益除以最大回撤的绝对值,最大回撤为零时记 0。

常见误区

误区“这个策略三年翻了 3 倍,回测曲线一路向上,肯定是个好策略!”很多新手选策略的第一眼永远只看累计收益,完全不问这收益背后忍受了多大波动、扛过多大回撤。

正解收益必须与风险放在一起看。夏普比率把波动率放进分母,Calmar 把最大回撤放进分母,都是在回答“这份收益是便宜买来的,还是拿命换来的”。就像站长不会因为阿明某个月收入破纪录就发金牌——他还要看那个月阿明吃了多少张超时罚单。翻 3 倍的背后若是 50% 的回撤,多数投资者在回撤中途就已割肉离场,根本等不到翻倍。

为何常见:累计收益是单一、直观的数字,而风险是多维、无形的东西。大脑天然对“多赚了”敏感,对“可能亏多少”迟钝,这是认知偏误在作怪。

误区“夏普 3 的肯定碾压夏普 1.5 的,直接满仓干!”初学者喜欢用单一指标排名,并把高夏普等同于稳赚不赔。

正解夏普有三大盲区:把上涨波动和下跌波动同等惩罚;假设收益接近正态分布,对极端尾部风险不敏感;本质是事后统计,样本外会衰减。所以高夏普也要结合最大回撤、Calmar 和样本外检验一起看。就像站长不能只凭“平均每天赚得稳”就提拔骑手,还要看他在台风演练里的表现。

为何常见:一个数字最容易被拿来排名和炫耀,而“夏普”这个名字听起来很官方,容易被当成“标准答案”。

误区“回测显示最大回撤只有 8%,那我实盘最多也就亏 8%,放心梭哈。”

正解回测是事后的,参数经过反复调整的结果,天然存在过拟合;实盘还要叠加交易成本、滑点、流动性冲击、策略拥挤等因素,真实回撤通常显著大于回测。业界习惯按“回撤放大 1.5~2 倍 + 样本外验证通过”来做压力预期。就像台风夜的演练成绩不能代表真实台风的破坏力,真实路况永远比沙盘复杂。

为何常见:人们容易把精心设计的回顾性测试结果误当成对未来的承诺,忽略了“事后看和事前看”的信息不对称。

误区“把一百个策略按夏普排个序,取前 10% 就完事了。”

正解单一指标排序会漏掉策略在其余维度上的短板:有的夏普高但回撤极深,有的 Calmar 好但极端行情下一击即溃,有的样本内惊艳、样本外崩盘。正确做法是构建“体检矩阵”:收益、波动、回撤、Calmar、稳健性、市场环境适配多维度打分,再结合策略容量与交易成本综合决策。就像站长从收入、波动、台风演练、投诉率多个维度给骑手打分,而不是只看月收入排名。

为何常见:排序是大脑处理多目标决策时最省力的捷径,但“多目标优化”本质上不存在一个唯一的排序,简化成单指标必然丢失关键信息。

面试题

Q1. 夏普比率的分子表示什么?

单选题 · easy

  • A.策略收益减去无风险收益← 正确答案
  • B.策略收益减去基准指数收益
  • C.策略收益加上无风险收益
  • D.策略年化收益与最大回撤之差

答案:A。夏普比率的分子是“超额收益”,即策略收益减去无风险利率,衡量扣掉“躺赚”部分后的真本事。选项 B 减基准指数对应的是信息比率的思想;C 方向反了;D 混淆了 Calmar 的分母。就像骑手扣掉底薪后,剩下的才是值得表扬的额外本事。

Q2. 日波动率转化为年化波动率时,近似乘以多少?

单选题 · easy

  • A.12,一年的月份总数
  • B.52,一年的周数总数
  • C.√252,交易日数的开方← 正确答案
  • D.252,一年的交易日数

答案:C。收益随时间线性累加,波动率则按时间平方根累积。一年约 252 个交易日,所以日波动率要乘 √252(约 15.87)得到年化波动率。A 是月份数、B 是周数、D 是纯天数,都偏离了波动率的时间聚合规则。

Q3. 净值从峰值 1.2 跌到最低 0.6,最大回撤是多少?

单选题 · easy

  • A.约 50%,以历史峰值为基准计算← 正确答案
  • B.约 40%,以初始净值为基准计算
  • C.约 60%,以起始本金为基准计算
  • D.约 100%,用差值除以最低净值

答案:A。最大回撤的分母是“历史峰值”而不是初始净值或最低净值,因此 (1.2-0.6)/1.2=50%。B 以初始净值 1.0 为基准得到 40%,C 用差值除以起始本金得到 60%,D 用差值除以最低净值得到 100%,都是错误口径。回撤必须站在“从峰值看跌了多少”的角度计算。

Q4. Calmar 比率的分母使用哪个指标?

单选题 · mid

  • A.策略年化收益率的波动程度
  • B.策略随市场整体波动的幅度
  • C.策略历史最大回撤的绝对值← 正确答案
  • D.货币市场的无风险利率水平

答案:C。Calmar = 年化收益 ÷ 最大回撤的绝对值,分母是最大回撤。A 是夏普的分母(波动率),B 与市场波动相关,D 与 Calmar 无关。Calmar 关注的是“最坏时刻”而非“平均颠簸”,这正是它与夏普互补的地方。

Q5. 策略亏损 50% 后,回到本金需要上涨多少?

单选题 · mid

  • A.上涨和亏损幅度相等的 50%
  • B.上涨大约 75% 才能完全回本
  • C.需要上涨 100% 才能完全回本← 正确答案
  • D.需要上涨 150% 才能完全回本

答案:C。回撤恢复具有不对称性:亏 50% 后本金只剩 50%,需要涨 100% 才能回到原点,公式为 D/(1-D)=0.5/0.5=1。A 只能回本一半,B 和 D 都不满足回本条件。这也是最大回撤对心理冲击如此之大的数学根源。

Q6. 关于夏普比率的局限,下列哪项描述是错误的?

单选题 · hard

  • A.它把上涨下跌波动同等计入风险
  • B.它依赖近似正态分布的收益假设
  • C.它能精准捕捉极端下跌的尾部风险← 正确答案
  • D.它是基于历史数据的事后统计指标

答案:C。夏普的局限性包括:对上涨与下跌波动一视同仁、假设收益近似正态、以及事后统计会样本外衰减。它恰恰不擅长刻画极端尾部风险,所以 C 描述错误。A、B、D 都是公认的局限。就像体检表测不出“突然心梗”的概率,夏普也测不出黑天鹅。

Q7. 某策略样本内夏普 3.0,样本外仅 1.2,最合理的判断是?

单选题 · hard

  • A.实盘应完全复制样本内的表现
  • B.存在过拟合且实盘表现会打折← 正确答案
  • C.说明市场环境一直都没有变化
  • D.应该直接加大仓位以博取高收益

答案:B。样本内夏普 3.0 到样本外 1.2 是明显的“衰减”,这是过拟合的典型信号,说明策略对历史噪声过度敏感,实盘表现大概率会打折扣。A 过于乐观,C 无法从夏普差异推断市场状态,D 在过拟合信号下加仓是危险的错误操作。

Q8. 下列哪些属于策略稳健性评估的手段?

多选题 · mid

  • A.滚动前推的样本外检验← 正确答案
  • B.对关键参数做敏感性分析← 正确答案
  • C.把无风险利率直接调高两倍
  • D.计入交易成本和冲击成本← 正确答案

答案:ABD。稳健性评估的常用手段包括:滚动前推的样本外检验(A)、参数敏感性分析(B)、以及把交易成本和冲击成本计入后的压力测试(D)。C 调整无风险利率只是改动假设参数,并不是稳健性检验手段。就像台风演练要换天气、换路线、加负重,才算真正考验骑手。

Q9. 关于策略评估指标,以下哪些说法是正确的?

多选题 · hard

  • A.最大回撤刻画最差时点入场的浮亏← 正确答案
  • B.卡玛比率是年化收益除以最大回撤← 正确答案
  • C.波动率只捕捉下跌方向的单边风险
  • D.压力测试用来模拟极端行情的表现← 正确答案

答案:ABD。A 正确,最大回撤刻画“最差时点入场”的最深浮亏;B 正确,Calmar 正是年化收益÷最大回撤;D 正确,压力测试就是模拟极端行情。C 错误,波动率同时统计上涨和下跌两侧,只有下行波动率才只捕捉单边风险。夏普和波动率都“分不清方向”,这正是它们需要被补充的原因。

Q10. 关于回撤恢复的不对称性,以下哪些是正确的?

多选题 · mid

  • A.恢复所需涨幅通常大于回撤的幅度← 正确答案
  • B.回撤 20% 后需要涨 25% 才能回本← 正确答案
  • C.回撤越深恢复难度呈加速上升趋势← 正确答案
  • D.回撤 10% 后仅需上涨约 9% 回本

答案:ABC。A、B、C 都正确:恢复所需涨幅大于回撤幅度,回撤 20% 需要涨 25% 回本,且回撤越深恢复难度呈加速上升。D 错误,回撤 10% 需要涨 11.1%(10%/90%)而不是 9%。这条不对称性提醒我们:控制回撤比追求收益更优先。