外观
报告操作
框架默认返回内存分析结果;pkl 和 HTML 须显式保存。建议每次运行使用独立的 output/backtest/<运行时间>/,保存 result.pkl 和 full_report.html,Excel 按需导出。报告服务按 result.pkl 文件名查找运行结果。
保存与导出
完整运行代码分别见股票、基金和期货示例。在运行前创建输出目录,配置 mod.sys_analyser:
python
from pathlib import Path
output_dir = Path("output/backtest/运行标识")
output_dir.mkdir(parents=True, exist_ok=False)
config["mod"]["sys_analyser"].update(
enabled=True, record=True, output_file=str(output_dir / "result.pkl"),
)output_file 是任意指定路径。回测返回值按模块分组,导出使用其中的分析结果:
python
from localquant.mod.localquant_mod_sys_analyser.report import export_full_html
analyser = result["sys_analyser"]
html_path = export_full_html(
analyser, output_dir.name, output_dir / "full_report.html",
)export_full_html(result_dict, run_name, output) 返回输出 Path,默认导出全部可用内容,文件可离线打开。导出失败直接抛出;已有 pkl 可单独重新导出。
读取结果
pkl 中直接保存分析结果,没有外层 sys_analyser:
python
import pandas as pd
analyser = pd.read_pickle(output_dir / "result.pkl")
summary = analyser["summary"]
print({key: summary[key] for key in (
"start_date", "end_date", "total_returns", "annualized_returns",
"max_drawdown", "sharpe",
)})
print(analyser["portfolio"].tail())
print(analyser["trades"].tail())表结构、空表、各资产字段及绩效口径统一见结果参考。结果按结算交易日记录,不能由日终空仓推断当天没有成交。
从文件重新导出
bash
localquant report export output/backtest/运行标识/result.pkl默认写入同目录 full_report.html;-o <文件路径> 指定输出,-n <运行名> 指定名称。也可在 Python 中调用:
python
from pathlib import Path
import pandas as pd
from localquant.mod.localquant_mod_sys_analyser.report import export_full_html
source = Path("output/backtest/运行标识/result.pkl")
analyser = pd.read_pickle(source)
export_full_html(analyser, source.parent.name, source.with_name("full_report.html"))按需导出 Excel:
python
from localquant.mod.localquant_mod_sys_analyser.report import generate_detail_xlsx
for filename, content in generate_detail_xlsx(analyser).items():
(source.parent / filename).write_bytes(content)返回的 {文件名: bytes} 对应交易记录、每日持仓和每日收益。HTML 与 Excel 共用结果数据,不另建交易或持仓账本。
策略元数据
入口通过 extra.report_metadata 写入 strategy_name、strategy_parameters 和 execution_rule,分别说明策略身份、实际参数快照、信号形成与成交时序。参数快照包含交易标的及实际使用的派生阈值,不只记录用户覆盖项。
框架保存这份字典,不替策略补齐参数。自行保存的候选、信号或计划交易应使用独立字段,不写入真实 trades。若在回测返回后补充分析字段,可用 pd.to_pickle(analyser, output_path) 保存包含这些字段的结果。
本地报告服务
bash
localquant report serve --root output --host 127.0.0.1 --port 8501访问 http://127.0.0.1:8501。服务递归扫描指定目录中的 result.pkl;可重复传 --root,未传时扫描当前目录。离线 HTML 导出不依赖该服务。