From 4987d6b56e75e92834cbedfdc7f43b477d283bb3 Mon Sep 17 00:00:00 2001 From: xxm Date: Sun, 16 Aug 2026 00:33:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B8=A9=E5=8C=BA=E8=A1=A8=E6=A0=BC?= =?UTF-8?q?=E8=A1=A5=E5=A4=8F=E6=99=AE+=E7=9B=88=E4=BA=8F=E6=AF=94?= =?UTF-8?q?=E5=88=97(=E6=95=B0=E6=8D=AE=E5=B7=B2=E6=9C=89,=E5=8F=AA?= =?UTF-8?q?=E5=B7=AE=E6=98=BE=E7=A4=BA)+=E6=9B=B4=E6=96=B0=E8=BF=87?= =?UTF-8?q?=E6=97=B6=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/index.html | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/static/index.html b/static/index.html index f895159f..d4561dd1 100644 --- a/static/index.html +++ b/static/index.html @@ -2453,8 +2453,8 @@ function renderStrategyTable(strategies) { const sh = Math.min(Math.max((rwPf.sharpe_ratio || 0), 0), 20) / 20 * 20; const pfc = Math.min((rwPf.profit_factor || 0), 5) / 5 * 15; const dd = (1 - Math.min(rwPf.portfolio_max_dd_pct || 0, 50) / 50) * 15; - // 2026-08-15:温区行置信用温区自己样本量(regime_winrates 来自全量 strategy_regime_perf, - // 与所选周期无关)——用整体 conf 会把温区综合分错误打折(如 1m 视角整体只有 1 笔 → 全部归零) + // 2026-08-15:温区行置信用温区自己样本量(regime_winrates 来自预计算表 strategy_regime_perf_by_period, + // 按所选周期计算)——用整体 conf 会把温区综合分错误打折(如 1m 视角整体只有 1 笔 → 全部归零) const rn = tr || 0; const rm = rw.universality ? (rw.universality.months || 0) : 0; const rconf = Math.min(1, rn / 40) * (rm > 0 ? Math.min(1, rm / 6) : 1); @@ -2474,6 +2474,8 @@ function renderStrategyTable(strategies) { cell('avg_hold_days', rw.avg_hold_days != null ? rw.avg_hold_days : null, v => v + 'd') + cell('cagr_pct', cagr, v => v + '%', 'font-bold text-amber-300') + cell('composite', comp, v => v, 'font-bold text-amber-300') + + cell('sharpe_ratio', rw.sharpe_ratio != null ? rw.sharpe_ratio : null, v => v) + + cell('profit_factor', rw.profit_factor != null ? rw.profit_factor : null, v => v) + cell('universality_score', univ, v => v + '/' + (univM || '?') + '月') + cell('portfolio_max_dd_pct', ddV, v => v + '%', '') + ''; @@ -2494,6 +2496,7 @@ function renderStrategyTable(strategies) { th('version', '版本', 'text-left') + th('name', '名称', 'text-left') + th('win_rate', '胜率', 'text-right') + th('avg_profit', '平均收益', 'text-right') + th('trades', '笔数', 'text-right') + th('hold', '均持仓', 'text-right') + th('cagr', '年化', 'text-right') + th('composite', '综合', 'text-right') + + th('sharpe', '夏普', 'text-right') + th('profit_factor', '盈亏比', 'text-right') + th('universality', '普适', 'text-right') + th('max_dd', '回撤', 'text-right') + '操作' + metas.map(s => renderRegimeRow(s, rg)).join('') +