From 54814bb257fa87c7456bb7912ec7c4eff18c190d Mon Sep 17 00:00:00 2001 From: hmo Date: Fri, 14 Aug 2026 18:06:37 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=98=B6=E6=AE=B54=E9=87=8D=E8=AF=84?= =?UTF-8?q?=E6=B8=A9=E5=8C=BA=E6=8C=89=E5=B8=82=E5=9C=BA=E6=84=9F=E7=9F=A5?= =?UTF-8?q?=E2=80=94=E2=80=94regenerate=5Fall=E6=89=B9=E9=87=8F/reassess?= =?UTF-8?q?=5Fwith=5Fcontext=E5=8D=95=E7=A5=A8=E9=87=8D=E8=AF=84,=E6=B8=AF?= =?UTF-8?q?=E8=82=A1=E6=8C=81=E4=BB=93=E7=94=A8=E6=B8=AF=E8=82=A1=E6=B8=A9?= =?UTF-8?q?=E5=8C=BA(smoothed=20markets.hk/market=5Fregime=E8=A1=A8hk),A?= =?UTF-8?q?=E8=82=A1=E8=B5=B0=E5=8E=9F=E8=B7=AF=E5=BE=84=E9=80=90=E5=AD=97?= =?UTF-8?q?=E8=8A=82=E4=B8=8D=E5=8F=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/profile-scripts/strategy_lifecycle.py | 46 ++++++++++++++------ 1 file changed, 32 insertions(+), 14 deletions(-) diff --git a/deploy/profile-scripts/strategy_lifecycle.py b/deploy/profile-scripts/strategy_lifecycle.py index 55ead001..23095a43 100644 --- a/deploy/profile-scripts/strategy_lifecycle.py +++ b/deploy/profile-scripts/strategy_lifecycle.py @@ -2031,19 +2031,34 @@ def reassess_with_context(code, name, price, cost, shares, current_action, # 大盘市场阶段(market_regime)— 与回测 _load_index_ctx 同算法,趋势市放行追涨 market_regime = None try: - # 2026-08-13 平滑温区优先(K=5 regime_tracker),回退原始 market_regime - import sys as _sys - from pathlib import Path as _P - _sp = _P("/home/hmo/MoFin/deploy/profile-scripts") - if str(_sp) not in _sys.path: - _sys.path.insert(0, str(_sp)) - from regime_gate import get_current_regime - _rg = get_current_regime() - if _rg and _rg.get("regime") != "unknown": - market_regime = _rg + # 2026-08-14 阶段4:温区按标的市场(港股持仓用港股温区,A股走原路径) + from market_config import market_for_code as _mfc + if _mfc(code) == 'hk': + import json as _json + from pathlib import Path as _P3 + _sf = _P3("/home/hmo/MoFin/data/market_regime_smoothed.json") + if _sf.exists(): + _d = _json.loads(_sf.read_text(encoding="utf-8")) + _mk = (_d.get("markets") or {}).get("hk") or {} + if _mk.get("current_regime"): + market_regime = {"regime": _mk["current_regime"], "date": _mk.get("current_date", "")} + if not market_regime: + import market_regime as _mr + market_regime = _mr.load_market_regime(market='hk') else: - import market_regime as _mr - market_regime = _mr.load_market_regime() + # 2026-08-13 平滑温区优先(K=5 regime_tracker),回退原始 market_regime + import sys as _sys + from pathlib import Path as _P + _sp = _P("/home/hmo/MoFin/deploy/profile-scripts") + if str(_sp) not in _sys.path: + _sys.path.insert(0, str(_sp)) + from regime_gate import get_current_regime + _rg = get_current_regime() + if _rg and _rg.get("regime") != "unknown": + market_regime = _rg + else: + import market_regime as _mr + market_regime = _mr.load_market_regime() except Exception: pass # market_regime 不可用时不阻塞单只重评 @@ -2280,9 +2295,12 @@ def regenerate_all(stdout=True): # 加载大盘市场阶段(market_regime)— 与回测 _load_index_ctx 同算法, # 趋势市放行追涨买入,震荡/下跌市降级买入信号(v_next4/v_mr 分工的实盘落地) market_regime = None + market_regime_hk = None try: import market_regime as _mr - market_regime = _mr.load_market_regime() + from market_config import market_for_code as _mkt_of + market_regime = _mr.load_market_regime() # A股(原行为不变) + market_regime_hk = _mr.load_market_regime(market='hk') # 港股(2026-08-14 阶段4) if stdout and market_regime: print(f" 市场阶段: {market_regime.get('date')} " f"{_mr.REGIME_DESC.get(market_regime.get('regime'), market_regime.get('regime'))}") @@ -2427,7 +2445,7 @@ def regenerate_all(stdout=True): fundamentals=fund, news_sentiment=news_sentiment, rr_ratio=result.get("rr_ratio", 0), - market_regime=market_regime, + market_regime=(market_regime_hk if (market_regime_hk and _mkt_of(code) == 'hk') else market_regime), ) result["timing_signal"] = enriched