fix: 切窗口fallback补portfolio/portfolio_full组合模拟——执行数positions_taken/全参与total_return/综合分ret分量有数据(calc_summary缺这些导致0/1和0x0.00矛盾)

This commit is contained in:
hmo
2026-08-12 13:34:06 +08:00
parent 2c8aa5ca5d
commit 6460437bb4
+11 -1
View File
@@ -2122,7 +2122,17 @@ def list_strategies(period_tag=None):
sliced = [t for t in trades if t.get('entry_date', '') >= cutoff]
if not sliced:
continue
sliced_summaries[v] = (calc_summary(sliced, 1000000), len(sliced), period_tag)
# 2026-08-12 补充:除 calc_summary 基础指标外,还要算组合模拟 portfolio/portfolio_full——
# 否则执行数(positions_taken)=0、全参与(total_return)=—、综合分 ret 分量=0(老莫发现矛盾)
_summary = calc_summary(sliced, 1000000)
try:
for _t in sliced:
_t.setdefault('boost', 1.0)
_summary['portfolio'] = portfolio_sim(sliced, 1000000, max_positions=10) # 10槽组合
_summary['portfolio_full'] = portfolio_sim(sliced, 1000000, max_positions=100) # 全参与近似
except Exception:
pass
sliced_summaries[v] = (_summary, len(sliced), period_tag)
conn.close()
out = []
for r in rows: