跳转至

backtest — 策略回测

滚动窗口回测:用前 window 期历史驱动各策略出票,与下一期真实开奖比对命中数——把 predict.py 的免责声明变成可复现的实验,反复证明所有策略与 random 基线无差异; backtest_summary 汇总各策略的平均命中供对比。

backtest

策略回测:滚动窗口对比 random 基线。

预期结论:所有策略与随机基线无差异

本模块把 predict.py 的免责声明变成一个可复现的实验:滚动地用前 window 期历史驱动策略出票,与下一期真实开奖比对命中个数。 任何"显著优于随机"的观察都应首先怀疑为过拟合或样本噪声。

用法: results = backtest(methods=('random', 'frequency'), lottery_name='ssq', window=100) print(backtest_summary(results))

Functions:

backtest

backtest(methods: tuple[str, ...] = ('random',), lottery_name: str = 'ssq', window: int = 100, trials: Optional[int] = None, history: Optional[DataFrame] = None, **fetch_kwargs) -> DataFrame

滚动窗口回测:逐期评估各策略的中奖命中情况。

Parameters:

Name Type Description Default
methods tuple[str, ...]

tuple[str, ...], 参与对比的策略名(见 predict.load_predict_numbers)。

('random',)
lottery_name str

str, must in ('ssq', 'qlc', 'kl8', '3d', 'dlt', 'pls', 'plw', 'qxc').

'ssq'
window int

int, 每次出票使用的历史窗口期数(不含评估期)。

100
trials Optional[int]

int, 每个策略最多评估的期数;None 表示评估全部可评估期。

None
history Optional[DataFrame]

pandas.DataFrame, 显式注入历史数据(离线使用);为 None 时联网拉取。

None
**fetch_kwargs

仅 history 为 None 时生效,透传给 load_history_data(如 if_cached)。

{}

Returns:

Type Description
DataFrame

pandas.DataFrame columns: method, lottery_name, lottery_order, lottery_date, red_hits, blue_hits

backtest_summary

backtest_summary(results: DataFrame) -> DataFrame

汇总回测明细:各策略的平均命中个数与捕获率。

avg_red_hit_rate / avg_blue_hit_rate = 平均命中 ÷ 每期开出球数(红 R 个 / 蓝 B 个), 即单注平均"捕获"了当期开出球的几分之几;random_red_hit_rate / random_blue_hit_rate 为 random 基线方法的实测捕获率(每行重复显示作对照)。理论捕获率 = R÷N、B÷N_blue (如 ssq 红球 6÷33 ≈ 18.2%),策略与基线都应贴近该值——显著偏离首先怀疑样本噪声。 结果集不含 random 方法时基线两列为 NaN;kl8 无蓝球,蓝列全为 NaN。

Parameters:

Name Type Description Default
results DataFrame

pandas.DataFrame, backtest 返回的明细表(method / red_hits / blue_hits 等列)。

required

Returns:

Type Description
DataFrame

pandas.DataFrame columns: lottery_name, method, trials, avg_red_hits, avg_blue_hits, avg_red_hit_rate, avg_blue_hit_rate, random_red_hit_rate, random_blue_hit_rate, 按 lottery_name + method 排序;results 为空时返回同结构空表。