From e145dacfb275533c571f9a6b510a09889ea25c65 Mon Sep 17 00:00:00 2001 From: hmo Date: Thu, 30 Jul 2026 01:47:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BB=BC=E5=90=88=E5=88=86=E5=8A=A0?= =?UTF-8?q?=E7=BD=AE=E4=BF=A1=E7=B3=BB=E6=95=B0(=E6=A0=B7=E6=9C=AC?= =?UTF-8?q?=E9=87=8F=C3=97=E6=99=AE=E9=80=82=E6=9C=88=E4=BB=BD)=E2=80=94?= =?UTF-8?q?=E2=80=94v6.2=E7=B1=BB=E5=B0=8F=E6=A0=B7=E6=9C=AC=E5=8D=95?= =?UTF-8?q?=E7=AA=97=E5=8F=A3=E7=AD=96=E7=95=A5=E4=BB=8E=E6=A6=9C=E9=A6=96?= =?UTF-8?q?=E6=89=93=E8=90=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/index.html | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/static/index.html b/static/index.html index 80595079..66427c73 100644 --- a/static/index.html +++ b/static/index.html @@ -2016,7 +2016,12 @@ function renderStrategyTable(strategies) { const sh = Math.min(Math.max(st.sharpe_ratio || 0, 0), 20) / 20 * 20; const pfc = Math.min(st.profit_factor || 0, 5) / 5 * 15; const dd = (1 - Math.min(pff.portfolio_max_dd_pct || 0, 50) / 50) * 15; - s._composite = Math.round(ret + wr + sh + pfc + dd); + // 置信系数:样本量(<40笔递减) × 普适月份(<6月递减)——小样本/单窗口策略的可信度打折 + const n = st.total_trades || 0; + const months = (st.universality || {}).months || 0; + const conf = Math.min(1, n / 40) * (months > 0 ? Math.min(1, months / 6) : 1); + s._confidence = conf; + s._composite = Math.round((ret + wr + sh + pfc + dd) * conf); } // 保存数据用于列排序 window._strats = strategies; @@ -2107,7 +2112,7 @@ function renderStrategyTable(strategies) { '' + s.version + (isCurrent ? ' 当前' : '') + ((s.market && s.market !== 'all') ? ' ' + (s.market === 'hk' ? '港' : 'A') + '' : '') + '' + '' + (s.name || '') + (smallSample ? ' ⚠️' : '') + '' + '' + (st.sizing_slots ? st.sizing_slots + '仓' : '10仓') + '' + - cell('composite', s._composite, v => v, 'font-bold text-amber-300') + + cell('composite', s._composite, v => v + (s._confidence != null && s._confidence < 1 ? '×' + s._confidence.toFixed(2) + '' : ''), 'font-bold text-amber-300') + cell('universality_score', (st.universality || {}).score, v => v + '/' + (st.universality || {}).months + '月') + cell('full_return_pct', (st.portfolio_full || {}).total_return_pct, v => v + '%' + ((st.portfolio_full||{}).std ? '±' + (st.portfolio_full||{}).std + '' : ''), 'font-bold text-amber-300') + cell('capital_final', (st.portfolio_full||pf).capital_final, v => '¥' + (v/10000).toFixed(0) + '万') +