跳转到正文

报告操作 ​

框架默认返回内存分析结果;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 导出不依赖该服务。

localquant documentation