From db9f41ce500ee445cc988261a86730cb730a7d12 Mon Sep 17 00:00:00 2001 From: xxm Date: Sat, 15 Aug 2026 22:55:15 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=B7=98=E6=B1=B0=E5=88=A4=E5=AE=9A?= =?UTF-8?q?=E6=94=B9=E7=9B=B4=E6=8E=A5=E8=AF=BB=E9=A2=84=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E8=A1=A8(2y/10y)=E2=80=94=E2=80=94=E4=B8=8D=E5=86=8D=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=E5=B7=B2=E5=BA=9F=E5=BC=83=E7=9A=84=E5=86=85=E5=AD=98?= =?UTF-8?q?=E7=BC=93=E5=AD=98,=E8=AF=BB=E8=A1=A8=E6=AF=AB=E7=A7=92?= =?UTF-8?q?=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server.py | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/server.py b/server.py index e865b99c..24c925f3 100644 --- a/server.py +++ b/server.py @@ -730,23 +730,17 @@ def api_research_strategies(): _elim_reason = None try: _b2, _b10 = _get_benchmarks() - if _b2 is not None and _b10 is not None and pt in ('2y', '10y'): - _r2 = _regime_winrates if pt == '2y' else None - _r10 = _regime_winrates if pt == '10y' else None - # 缓存里拿另一周期(命中才判定,未命中本轮跳过) - _slots_c = _regime_winrates_cache.get("slots") or {} - if _r2 is None and ('2y' in _slots_c): - _r2 = _slots_c['2y'][1] - if _r10 is None and ('10y' in _slots_c): - _r10 = _slots_c['10y'][1] - if _r2 is not None and _r10 is not None: - _v2 = _r2.get(s['version']) or {} - _v10 = _r10.get(s['version']) or {} - if _v2 and _v10: - _best2 = max(r.get('cagr_pct') or -999 for r in _v2.values()) - _best10 = max(r.get('cagr_pct') or -999 for r in _v10.values()) - if _best2 < _b2 and _best10 < _b10: - _elim_reason = f'2y年化{round(_best2,1)}%<大盘{_b2}% 且 10y年化{round(_best10,1)}%<大盘{_b10}%' + if _b2 is not None and _b10 is not None: + # 读表拿 2y/10y 温区数据(毫秒级,数据加工层预计算) + _r2 = _compute_regime_winrates_cached('2y', _approx_regime_universality) + _r10 = _compute_regime_winrates_cached('10y', _approx_regime_universality) + _v2 = _r2.get(s['version']) or {} + _v10 = _r10.get(s['version']) or {} + if _v2 and _v10: + _best2 = max(r.get('cagr_pct') or -999 for r in _v2.values()) + _best10 = max(r.get('cagr_pct') or -999 for r in _v10.values()) + if _best2 < _b2 and _best10 < _b10: + _elim_reason = f'2y年化{round(_best2,1)}%<大盘{_b2}% 且 10y年化{round(_best10,1)}%<大盘{_b10}%' except Exception: _elim_reason = None if _elim_reason: