backtest — Strategy backtesting¶
Rolling-window backtesting: each strategy is driven by the preceding window draws and
scored against the next real draw (red/blue hit counts) — a reproducible experiment that
keeps proving every strategy matches the random baseline. backtest_summary aggregates
per-strategy averages for the comparison.
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 ¶
汇总回测明细:各策略的平均命中个数与捕获率。
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 为空时返回同结构空表。 |