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;