diff --git a/evolution/evolution_api.py b/evolution/evolution_api.py index c47dd2c6..514dc940 100644 --- a/evolution/evolution_api.py +++ b/evolution/evolution_api.py @@ -131,7 +131,7 @@ def get_combo_dashboard(): p5 = s.get("portfolio", {}) members[v] = { "role": "趋势市主战" if v == "v_next4" else "震荡/下跌市接管", - "version": "v_weak" if used_sel else "v_mr", + "version": ("v_weak" if used_sel else "v_mr") if v == "v_mr" else v, "is_sel": used_sel, "trades": s.get("total_trades"), "win_rate": s.get("win_rate"), diff --git a/static/index.html b/static/index.html index 533b182b..270872d6 100644 --- a/static/index.html +++ b/static/index.html @@ -2068,7 +2068,7 @@ async function renderResearchCombo() { '🧬 当前组合方案' + '市场阶段: ' + regName + '' + (regime.adx ? ' ADX=' + regime.adx + '' : '') + '' + '' + - '
v_next4 趋势追涨 + v_mr 均值回复,按大盘市场阶段自动分工(strategy_lifecycle 6.5 实盘落地)
' + + '
策略家族(§39/§40):v_next4 趋势池 + v_weak 弱市甜区 + s2_panic 极端恐慌买超跌——同时运行、票自己对号入座、信号零重叠
' + '
'; for (const rt of (d.routing || [])) { const active = regime.regime === rt.regime; @@ -2328,6 +2328,12 @@ function renderStrategyTable(strategies) { }; // 条件格式色条:计算每列 min/max,单元格背景按相对大小画色条 const CURRENT_STRATEGY = 'v_next4'; + const CURRENT_FAMILY = new Set(['v_weak', 's2_panic', 'v_next4']); + const DEPRECATED = { + 'v_mr': '已证伪§12: 2018熊市依赖, 去2018后avg+2.14%/wr49.8%掷硬币, 组合回撤45%', + 'v_mr_sel': '已证伪§12: 144笔中54%集中在2018-10, 单一事件依赖不可信', + 'v_combo': '未采纳: 2年+47.9%但5年验证2023/24震荡转折年亏损(B动量族假突破)', + }; const ranges = {}; const cols = ['composite','universality_score','full_return_pct','capital_final','cagr_pct','total_trades','avg_hold_days','win_rate','avg_profit_pct','sharpe_ratio','profit_factor','portfolio_max_dd_pct']; for (const c of cols) { @@ -2378,10 +2384,11 @@ function renderStrategyTable(strategies) { const pf = st.portfolio || {}; const hasResult = st.total_trades != null; const smallSample = hasResult && st.total_trades < 40; - const isCurrent = s.version === CURRENT_STRATEGY && (s.market || 'all') !== 'hk'; + const isCurrent = (s.version === CURRENT_STRATEGY || CURRENT_FAMILY.has(s.version)) && (s.market || 'all') !== 'hk'; + const deprecatedReason = DEPRECATED[s.version]; const rowCls = 'border-b border-slate-800/50 hover:bg-slate-800/30 cursor-pointer' + (isCurrent ? ' bg-emerald-900/20 border-l-2 border-l-emerald-400' : ''); html += '' + - '' + s.version + (isCurrent ? ' 当前' : '') + ((s.market && s.market !== 'all') ? ' ' + (s.market === 'hk' ? '港' : 'A') + '' : '') + '' + + '' + s.version + (isCurrent ? ' 当前' : '') + (deprecatedReason ? ' 已证伪' : '') + ((s.market && s.market !== 'all') ? ' ' + (s.market === 'hk' ? '港' : 'A') + '' : '') + '' + '' + (s.name || '') + (smallSample ? ' ⚠️' : '') + '' + '' + (st.sizing_slots ? st.sizing_slots + '仓' : '10仓') + (st.conviction_model ? '' : '') + '' + '' + ((s.description && s.description.title) ? '' : '') + '' +