feat: 阶段4重评温区按市场感知——regenerate_all批量/reassess_with_context单票重评,港股持仓用港股温区(smoothed markets.hk/market_regime表hk),A股走原路径逐字节不变

This commit is contained in:
hmo
2026-08-14 18:06:37 +08:00
parent 21b16751c5
commit 54814bb257
+32 -14
View File
@@ -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