From d4cba2d96fea9611bb425b9e38c425ca23ead96d Mon Sep 17 00:00:00 2001 From: hmo Date: Wed, 29 Jul 2026 23:54:42 +0800 Subject: [PATCH] =?UTF-8?q?remove:=20=E5=88=A0=E9=99=A4=E9=9B=86=E4=B8=AD?= =?UTF-8?q?=E4=BB=93=E5=88=97=E2=80=94=E2=80=94=E6=8C=91=E8=A3=85=E8=BF=90?= =?UTF-8?q?=E6=B0=94=E6=8C=87=E6=A0=87=E4=B8=8D=E8=AF=A5=E5=AD=98=E5=9C=A8?= =?UTF-8?q?=EF=BC=8C=E5=8F=AA=E7=95=99MC=E5=85=AC=E5=B9=B3=E5=8F=A3?= =?UTF-8?q?=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/index.html | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/static/index.html b/static/index.html index fa92bec1..8c3d6d08 100644 --- a/static/index.html +++ b/static/index.html @@ -2033,7 +2033,7 @@ function renderStrategyTable(strategies) { } // 找每列最优值用于高亮 const best = { win_rate: -999, sharpe_ratio: -999, profit_factor: -999, avg_profit_pct: -999, - total_return_pct: -999, cagr_pct: -999, portfolio_max_dd_pct: 999 }; + cagr_pct: -999, portfolio_max_dd_pct: 999 }; for (const s of strategies) { const st = s.summary_stats || {}; const pf = st.portfolio || {}; @@ -2041,7 +2041,6 @@ function renderStrategyTable(strategies) { if (st.sharpe_ratio != null) best.sharpe_ratio = Math.max(best.sharpe_ratio, st.sharpe_ratio); if (st.profit_factor != null) best.profit_factor = Math.max(best.profit_factor, st.profit_factor); if (st.avg_profit_pct != null) best.avg_profit_pct = Math.max(best.avg_profit_pct, st.avg_profit_pct); - if (pf.total_return_pct != null) best.total_return_pct = Math.max(best.total_return_pct, pf.total_return_pct); if (pf.cagr_pct != null) best.cagr_pct = Math.max(best.cagr_pct, pf.cagr_pct); if (pf.portfolio_max_dd_pct != null) best.portfolio_max_dd_pct = Math.min(best.portfolio_max_dd_pct, pf.portfolio_max_dd_pct); } @@ -2053,7 +2052,7 @@ function renderStrategyTable(strategies) { // 条件格式色条:计算每列 min/max,单元格背景按相对大小画色条 const CURRENT_STRATEGY = 'v7.1'; const ranges = {}; - const cols = ['composite','universality_score','total_return_pct','capital_final','cagr_pct','total_trades','avg_hold_days','win_rate','avg_profit_pct','sharpe_ratio','profit_factor','portfolio_max_dd_pct']; + const cols = ['composite','universality_score','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) { let mn = Infinity, mx = -Infinity; for (const s of strategies) { @@ -2088,7 +2087,6 @@ function renderStrategyTable(strategies) { th('composite', '综合', 'text-right') + th('universality', '普适', 'text-right') + th('full_return', '全参与', 'text-right') + - th('total_return', '集中仓⚠️', 'text-right', '该策略最优激进仓位下的挑装收益——含上车运气,方差大') + th('capital_final', '最终资产', 'text-right') + th('cagr', '年化', 'text-right') + th('trades', '执行数', 'text-right', '实际参与组合模拟的交易笔数;信号总数=为鼠标悬停查看') + @@ -2103,7 +2101,6 @@ function renderStrategyTable(strategies) { const hasResult = st.total_trades != null; const smallSample = hasResult && st.total_trades < 40; const isCurrent = s.version === CURRENT_STRATEGY && (s.market || 'all') !== 'hk'; - const retCls = pf.total_return_pct == null ? '' : (pf.total_return_pct >= 0 ? 'text-green-400' : 'text-red-400'); 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') + '' : '') + '' + @@ -2112,7 +2109,6 @@ function renderStrategyTable(strategies) { cell('composite', s._composite, v => v, 'font-bold text-amber-300') + cell('universality_score', (st.universality || {}).score, v => v + '/' + (st.universality || {}).months + '月') + cell('total_return_pct', (st.portfolio_full || {}).total_return_pct, v => v + '%' + ((st.portfolio_full||{}).std ? '±' + (st.portfolio_full||{}).std + '' : ''), 'font-bold text-amber-300') + - cell('total_return_pct', pf.total_return_pct, v => v + '%', retCls + ' ' + hl(pf.total_return_pct, best.total_return_pct)) + cell('capital_final', (st.portfolio_full||pf).capital_final, v => '¥' + (v/10000).toFixed(0) + '万') + cell('cagr_pct', (st.portfolio_full||pf).cagr_pct, v => v + '%', hl((st.portfolio_full||pf).cagr_pct, best.cagr_pct)) + cell('total_trades', st.total_trades, v => (pf.positions_taken||0) + '/' + (v > 999 ? Math.round(v/1000) + 'k' : v), '', false) +