核心指标对照表
依据官方 README stats 方法列表(约 60 个指标,此处列高频核心项)。
| 指标 | 方法 | 含义 | 适用场景 | 注意点 |
|---|---|---|---|---|
| 夏普比率 | qs.stats.sharpe(returns) | 单位总波动的超额收益 | 横评不同策略的风险调整收益 | 同时惩罚上行与下行波动,对非正态收益有偏 |
| 索提诺比率 | qs.stats.sortino(returns) | 只按下行波动调整的超额收益 | 更关注下跌风险、讨厌上行波动被扣分的场景 | 需要明确下行波动口径,结果对阈值敏感 |
| 调整后索提诺 | qs.stats.adjusted_sortino(returns) | 校正后的索提诺比率 | 对收益分布偏度/峰度敏感的更稳健口径 | 以官方实现口径为准 |
| 卡玛比率 | qs.stats.calmar(returns) | 年化收益 / 最大回撤 | 衡量每单位最大回撤换来的收益 | 对最大回撤极其敏感,回撤越大指标越差 |
| 最大回撤 | qs.stats.max_drawdown(returns) | 历史峰值到谷底的最大跌幅 | 评估最坏情况下的亏损承受力 | 只反映历史单次最差,不预测未来 |
| 波动率 | qs.stats.volatility(returns) | 收益率标准差(年化) | 衡量整体价格波动幅度 | 不含方向,只测波动大小 |
| VaR / CVaR | qs.stats.value_at_risk / conditional_value_at_risk | 在险价值 / 期望损失(尾部风险) | 机构风控常用的尾部风险度量 | 依赖置信度与分布假设,CVaR 比 VaR 更保守 |
| 胜率 / 盈亏比 | qs.stats.win_rate / win_loss_ratio | 正收益期占比 / 盈亏比例 | 策略择时/选股的方向性评估 | 按「收益期」而非逐笔交易口径(见下方说明) |
| 盈亏因子 | qs.stats.profit_factor(returns) | 正收益和 / 负收益和 | 衡量盈利期相对亏损期的累计强度 | 比率口径,需结合胜率一起看 |
| 凯利准则 | qs.stats.kelly_criterion(returns) | 理论最优下注比例 | 仓位管理参考,非实际下单建议 | 对收益估计极敏感,实盘常需减半(半凯利) |
常用指标用法
从导入到多指标组合,四步即可落地;返回值为该指标在当前收益序列下的标量结果。
1. 导入并扩展 pandas:import quantstats as qs; qs.extend_pandas() —— 把指标方法挂到 pandas Series 上,之后可直接 stock.sharpe()。
2. 获取收益序列:stock = qs.utils.download_returns('META') —— 下载 META 的日收益序列;也可换成你自己的 pd.Series。
3. 计算夏普:qs.stats.sharpe(stock) 或扩展后 stock.sharpe() —— 返回单位风险的超额收益(示例值 0.76,仅为演示,非真实承诺)。
4. 组合多指标:qs.stats.sortino(stock)、qs.stats.max_drawdown(stock)、qs.stats.calmar(stock) —— 一次算出下行调整收益、最大回撤与卡玛比率,交叉印证策略风险。
指标分类清单(约 60 个)
按分析目的分成六类,每类列代表方法与用途;完整列表以 dir(qs.stats) 输出为准。
| 分类 | 代表方法 | 分析用途 |
|---|---|---|
| 收益 | cagr / expected_return / comp / compsum / geometric_mean / ghpr / ror / avg_return | 看策略「赚了多少、多快」,衡量复利与累计增长 |
| 风险调整 | sharpe / sortino / adjusted_sortino / calmar / rar / risk_return_ratio / information_ratio | 把收益「除以风险」,比较不同风险水平下的性价比 |
| 风险/尾部 | volatility / value_at_risk(var) / conditional_value_at_risk(cvar) / tail_ratio / expected_shortfall / skew / kurtosis | 量化波动与极端亏损,评估尾部风险与分布形态 |
| 回撤 | max_drawdown / drawdown_details / to_drawdown_series / recovery_factor / ulcer_index / upi | 度量峰值回撤与恢复能力,反映最大亏损与回血速度 |
| 胜率/盈亏 | win_rate / win_loss_ratio / avg_win / avg_loss / profit_factor / payoff_ratio / consecutive_wins / consecutive_losses | 拆解盈利期与亏损期的结构,判断择时/选股质量 |
| 其他/进阶 | kelly_criterion / r_squared / greeks / implied_volatility / risk_of_ruin / montecarlo 系列 / outliers 系列 | 仓位管理、期权希腊字母、破产概率、离群值等专项 |
指标选型:什么场景用什么指标
不同分析目的对应不同指标,避免「一把尺子量所有策略」。
| 分析目的 | 推荐指标 | 为什么选它 |
|---|---|---|
| 整体性价比 | sharpe / calmar / rar | 把收益除以风险,横评不同策略的风险调整后表现 |
| 下行风险 | sortino / adjusted_sortino | 只惩罚下跌波动,更贴合「怕亏」的心理与实际风险 |
| 回撤承受 | max_drawdown / ulcer_index / upi | 直接看最坏回撤与回撤持续时间,评估持有体验 |
| 尾部风险 | value_at_risk / conditional_value_at_risk / tail_ratio | 量化极端亏损概率,机构风控常用 |
| 相对基准 | information_ratio / r_squared / rolling_beta | 衡量相对基准的超额收益与跟踪敏感度 |
| 仓位管理 | kelly_criterion / risk_of_ruin | 估算理论最优仓位与破产概率,仅作参考 |
Period-Based vs Trade-Based 口径
1. Win Rate = 正收益期占比,而非逐笔胜率。
2. Consecutive Wins/Losses = 连续正/负收益期,而非连续盈利/亏损交易。
3. Payoff Ratio = 平均正收益期 / 平均负收益期,而非单笔盈亏均值比。
4. Profit Factor = 正收益和 / 负收益和,按周期聚合而非按笔聚合。
常见问题
QuantStats 有多少个指标?
quantstats.stats 模块约 60 个方法,覆盖收益、风险、风险调整、回撤、尾部风险、胜率盈亏等,具体以官方 README 的 dir(qs.stats) 列表为准。
夏普比率怎么算?
qs.stats.sharpe(returns) 或扩展 pandas 后 returns.sharpe(),返回单位风险的超额收益;默认参数与年化口径以官方实现为准。
索提诺和夏普有什么区别?
夏普用总波动(含上行),索提诺只按下行波动惩罚;更怕下跌风险时可优先看 sortino/adjusted_sortino,具体口径以官方实现为准。
Win Rate 是逐笔胜率吗?
不是。它是「正收益期占比」,按收益率序列周期(日/周/月)计算,非逐笔成交口径;对持仓多日的自由交易者会有偏差。
这些指标和 EasyClaw 的量化分析一样吗?
EasyClaw 的 quant-analyst 技能也能输出 Sharpe、最大回撤等风险指标,但它是独立的量化研究路线,与 QuantStats 无已证实集成,两者输出形式与口径可能不同,选择时需自行比对。
指标结果能用于实盘吗?
不能。绩效指标仅代表历史收益序列表现,不构成投资建议或收益保证,实盘需自行核验数据、成本与风险。