diff --git a/static/index.html b/static/index.html index 34035f36..dfa58d88 100644 --- a/static/index.html +++ b/static/index.html @@ -2153,8 +2153,9 @@ function renderResearch() { '
加载中...
' + '
' + ''; - // 首次渲染即加载策略列表(无子Tab切换) - loadStrategyList(); + // 首次渲染即加载策略列表(无子Tab切换)。 + // 2026-08-15 修复:不能在此直接 loadStrategyList()——此时 btPeriod.value 还是初始默认 '1m', + // 与下方恢复 savedPt='2y' 后的调用并发竞态,1m 响应后到会覆盖 2y 渲染(周期错乱+综合分被小样本置信打崩)。 loadEvolutionBox(); loadStrategyRegimeBanner(); // 恢复用户上次选择的周期(防自动刷新重置,2026-07-30老爸抓包) @@ -2515,7 +2516,12 @@ 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; - comp = Math.round((ret + w + sh + pfc + dd) * (s._confidence || 1)); + // 2026-08-15:温区行置信用温区自己样本量(regime_winrates 来自全量 strategy_regime_perf, + // 与所选周期无关)——用整体 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); + comp = Math.round((ret + w + sh + pfc + dd) * rconf); } const cagr = rwPf ? rwPf.cagr_pct : null; const ddV = rwPf ? rwPf.portfolio_max_dd_pct : null;