feat(chart): M9-5 复权口径坐标换算落地(qfq 基准=最新因子 + marker 贴图换算)
- ChartService qfq 基准改为该股最新因子(截至今天)归一:历史区间随最新除权 平移正确(v3 §20.5 Chart Display vs Execution basis 分离) - 显示口径与执行 basis 不一致时,成交/信号 marker 价格按当日因子换算到 K 线坐标系 (fill 早段价格在 qfq 下折算验证 100→50) - tests:qfq 回测 marker 折算 + selection 标记保留;全量 pytest 通过
This commit is contained in:
@@ -43,10 +43,14 @@ def _factor_multipliers(
|
||||
end: date,
|
||||
mode: str,
|
||||
) -> dict[date, float]:
|
||||
"""返回 {trade_date: 显示折算系数};mode=none → 空。qfq: f/f_latest;hfq: f。"""
|
||||
"""返回 {trade_date: 显示折算系数};mode=none → 空。
|
||||
|
||||
基准(v3 §20.5):qfq 以**该股最新因子**(截至今天,而非图表区间末)归一,
|
||||
保证历史区间随最新除权平移正确;hfq 直接用累积因子。
|
||||
"""
|
||||
if mode == "none":
|
||||
return {}
|
||||
factors: list[AdjustFactor] = adj_repo.get_range(symbol, date(1990, 1, 1), end)
|
||||
factors: list[AdjustFactor] = adj_repo.get_range(symbol, date(1990, 1, 1), date.today())
|
||||
if not factors:
|
||||
return {}
|
||||
by_day = {f.trade_date: float(f.factor) for f in factors}
|
||||
|
||||
Reference in New Issue
Block a user