CONTROLLED RESEARCHNO TRADING仅工作区研究资产、策略参数、Sandbox 回测任务与报告可受控写入 · 不构成投资建议
VERSIONED METRICS / FAIL-CLOSED ATTRIBUTION
Phase 2.27 回测指标与风险归因
仅展示最小沙盒样例的独立复算结果;不是全市场、正式或实盘业绩。
METRICS VERSIONrisk_attribution_v1.0
HISTORICAL RUNS14 PRESERVED
METRIC SNAPSHOTS1
OFFICIAL RESULTSFALSE
BENCHMARK ATTRIBUTION BRIDGE
基准与主动收益归因
基准贡献000300.SH-2.18%
主动贡献NET - BENCHMARK-10.57%
归因合计 / 目标净收益RECONCILIATION-12.74% / -12.74%
平衡误差TOLERANCE 1e-100
COST ATTRIBUTION BRIDGE
费用归因
费用前收益GROSS BEFORE COST-12.51%
佣金 / 滑点 / 税费NEGATIVE CONTRIBUTIONS-0.06% / -0.09% / -0.09%
归因合计 / 目标净收益RECONCILIATION-12.74% / -12.74%
平衡误差accounting bridge on initial cash; not timing-aware transaction attribution0
PRIMARY RETURN ATTRIBUTION
统一收益归因桥
基准贡献BENCHMARK CONTRIBUTION-2.18%
费用前主动贡献ACTIVE BEFORE COST-10.33%
佣金 / 滑点 / 税费COST CONTRIBUTIONS-0.06% / -0.09% / -0.09%
归因合计 / 目标净收益arithmetic horizon attribution; not holdings-based Brinson attribution-12.74% / -12.74%
平衡误差FAIL CLOSED IF OUTSIDE TOLERANCE0
QUALITY & PRICE CONTRACT
复算质量
对齐观测NO IMPUTATION129
缺失 / 非有限值FAIL CLOSED0 / 0
Raw price 字段使用version_locked_adjusted_values_only0
输入 / 结果指纹IMMUTABLE SNAPSHOT62862c06bfd7e6ead6…
GOVERNANCE GATES
业务门禁
正式回测CLOSED
策略CLOSED
模拟交易CLOSED
实盘交易CLOSED
research_only=true · is_official=false · read_only=true
IMMUTABLE METRIC DEFINITIONS
指标口径字典
Checksum: c4de369d1ecc33b15e6df3eb540ca95da11b1d53c3f9423501fa43812ee037b5 · missing value: fail closed / no imputation
| 指标 | 公式 | 输入 | 年化口径 | 缺失处理 | 适用限制 |
|---|---|---|---|---|---|
| beta | population_covariance(strategy, benchmark) / population_variance(benchmark) | date-aligned daily strategy and benchmark returns | none | reject; null when benchmark variance is zero | linear historical sensitivity only |
| alpha | mean(strategy - daily_rf - beta * (benchmark - daily_rf)) * 252 | aligned daily returns, beta and declared risk-free rate | arithmetic daily alpha times 252 | reject; null when beta is undefined | single-factor arithmetic attribution |
| win_rate | count(daily_return > 0) / observations | daily net returns | none | reject | daily hit rate, not trade win rate |
| calmar_ratio | annualized_return / abs(max_drawdown) | annualized return and max drawdown | uses annualized return | null when max drawdown is zero | unstable on short samples |
| max_drawdown | min(value / running_peak - 1) | initial cash followed by daily net portfolio values | none | reject | path-dependent historical observation |
| sharpe_ratio | mean(daily_return - daily_rf) / population_stddev(daily_return) * sqrt(252) | daily net returns; declared annual risk-free rate | risk-free rate divided by 252; ratio times sqrt(252) | reject; null when volatility is zero | assumes stable independent return distribution |
| total_return | ending_portfolio_value / initial_cash - 1 | net portfolio values derived from adjusted prices | none | reject | sandbox result; not realized or promised return |
| sortino_ratio | mean(daily_return - daily_rf) / sqrt(mean(min(daily_return, 0)^2)) * sqrt(252) | daily net returns; declared annual risk-free rate | ratio times sqrt(252) | reject; null when downside deviation is zero | sensitive to sample length and chosen target return |
| tracking_error | population_stddev(strategy_daily_return - benchmark_daily_return) * sqrt(252) | aligned daily returns | sqrt(252) | reject | historical active-risk estimate |
| annualized_return | (1 + total_return) ** (252 / observations) - 1 | net total return and observed trading periods | 252 trading days | reject | not meaningful for very short samples |
| historical_var_95 | max(0, -5th percentile daily_return) | daily net returns | none; one-day loss fraction | reject | historical non-parametric estimate; tail loss can exceed VaR |
| information_ratio | mean(active_daily_return) / population_stddev(active_daily_return) * sqrt(252) | aligned daily returns | ratio times sqrt(252) | null when tracking error is zero | sensitive to benchmark and sample selection |
| historical_cvar_95 | max(0, -mean(returns at or below 5th percentile)) | daily net returns | none; one-day expected tail loss fraction | reject | especially unstable in small samples |
| active_total_return | strategy_total_return - benchmark_total_return | net strategy return and aligned benchmark return | none | reject | arithmetic horizon difference, not compounded daily active return |
| annualized_volatility | population_stddev(daily_return) * sqrt(252) | daily net returns | sqrt(252) | reject | historical dispersion; does not predict future risk |
| max_drawdown_duration | maximum consecutive observations below the running peak | initial cash followed by daily net portfolio values | none; trading observations | reject | counts observations rather than calendar days |
| benchmark_total_return | ending_benchmark_close / initial_benchmark_close - 1 | date-aligned existing benchmark close series | none | reject without imputation | depends on declared benchmark choice |
| cost_attribution_bridge | gross_before_cost - commission - slippage - tax = net_total_return | net return and mutually exclusive cost components divided by initial cash | none | reject; imbalance fails closed | accounting bridge, not timing-aware transaction attribution |
| return_attribution_bridge | benchmark + active_before_cost - commission - slippage - tax = net_total_return | benchmark return, net return and mutually exclusive costs divided by initial cash | none | reject; imbalance fails closed | arithmetic horizon attribution, not holdings-based Brinson attribution |
| benchmark_attribution_bridge | benchmark_contribution + active_contribution = net_total_return | horizon strategy and benchmark total returns | none | reject; imbalance fails closed | two-component arithmetic attribution |