Skip to content

Commit 9741207

Browse files
committed
upd: 更新了一些交易周期,IC,ICIR threshold 和双边交易成本的基础默认数据
1 parent 7fd4278 commit 9741207

2 files changed

Lines changed: 12 additions & 12 deletions

File tree

Instruction.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@
315315
from targets import calc_forward_return
316316

317317
prices_df = pd.read_parquet("data/prices.parquet")
318-
target_df = calc_forward_return(prices_df, d=1) # 1-day forward return
318+
target_df = calc_forward_return(prices_df, d=5) # 5-day forward return
319319
```
320320

321321
---
@@ -352,9 +352,9 @@
352352
| 步骤 | 操作 |
353353
|------|------|
354354
| 1 | 载入 `prices.parquet``factors_clean.parquet` |
355-
| 2 | 调用 `calc_forward_return(prices_df, d=1)` 生成 target |
355+
| 2 | 调用 `calc_forward_return(prices_df, d=5)` 生成 target |
356356
| 3 | 遍历每个 alpha 列,依次计算 IC 时间序列、IC metrics,展示图表 |
357-
| 4 | 筛选满足 `abs(IC mean) > 0.02``abs(ICIR) > 0.3` 的因子并输出列表 |
357+
| 4 | 筛选满足 `abs(IC mean) > 0.015``abs(ICIR) > 0.15` 的因子并输出列表 |
358358

359359
- **使用**
360360
```bash
@@ -366,9 +366,9 @@
366366

367367
| 变量 | 默认值 | 说明 |
368368
|------|--------|------|
369-
| `FORWARD_DAYS` | `1` | 未来收益率天数 |
370-
| `IC_MEAN_THRESHOLD` | `0.02` | IC 均值绝对值阈值 |
371-
| `ICIR_THRESHOLD` | `0.30` | ICIR 绝对值阈值 |
369+
| `FORWARD_DAYS` | `5` | 未来收益率天数 |
370+
| `IC_MEAN_THRESHOLD` | `0.015` | IC 均值绝对值阈值 |
371+
| `ICIR_THRESHOLD` | `0.15` | ICIR 绝对值阈值 |
372372
| `SHOW_PLOTS` | `False` | 是否交互展示 IC 图表 |
373373

374374
---
@@ -381,11 +381,11 @@
381381

382382
| 方法 | 说明 |
383383
|------|------|
384-
| `__init__(factor_df, target_df, num_groups=5, rf=0.03, forward_days=1, plots_dir=None)` | 接收单因子平表与 target,merge 并 dropna |
384+
| `__init__(factor_df, target_df, num_groups=5, rf=0.03, forward_days=5, plots_dir=None)` | 接收单因子平表与 target,merge 并 dropna |
385385
| `run_backtest()` | 执行完整 5 步回测,返回绩效指标 DataFrame |
386386
| `plot(show=True)` | 绘制 G1..GN + L-S 累计净值折线图,保存至 `plots_dir` |
387387

388-
**`forward_days` 参数说明**:持仓天数,与 `calc_forward_return` 中的 `d` 保持一致(默认 1)。当 `forward_days > 1` 时,每行 `group_ret` 为 d 日累积收益;模块内部自动执行 `group_ret / forward_days`,将其近似为日收益后再复利,从而避免将 d 日收益当作 1 日收益连续复利导致的收益虚高。该近似基于滑动窗口的性质:`sum_T [R_d(T)/d] ≈ sum_t r_t`(大样本 N>>d 时误差可忽略)。精确的净收益回测请使用 `NetReturnBacktester`
388+
**`forward_days` 参数说明**:持仓天数,与 `calc_forward_return` 中的 `d` 保持一致(默认 5)。当 `forward_days > 1` 时,每行 `group_ret` 为 d 日累积收益;模块内部自动执行 `group_ret / forward_days`,将其近似为日收益后再复利,从而避免将 d 日收益当作 1 日收益连续复利导致的收益虚高。该近似基于滑动窗口的性质:`sum_T [R_d(T)/d] ≈ sum_t r_t`(大样本 N>>d 时误差可忽略)。精确的净收益回测请使用 `NetReturnBacktester`
389389

390390
- **5 步回测逻辑**
391391

@@ -478,7 +478,7 @@
478478

479479
| 方法 | 说明 |
480480
|------|------|
481-
| `__init__(alpha_df, prices_df, forward_days, cost_rate=0.0035, rf=0.03, plots_dir=None)` | 接收合成因子和价格表,延迟计算 |
481+
| `__init__(alpha_df, prices_df, forward_days, cost_rate=0.002, rf=0.03, plots_dir=None)` | 接收合成因子和价格表,延迟计算 |
482482
| `run_backtest()` | 执行回测,返回 `pd.Series` 绩效指标 |
483483
| `plot(show=False)` | 绘制累计净值曲线,保存至 `plots_dir` |
484484

@@ -499,7 +499,7 @@
499499
from net_backtester import NetReturnBacktester
500500

501501
nb = NetReturnBacktester(synth_df, prices_df, forward_days=1,
502-
cost_rate=0.0035, plots_dir=pathlib.Path("plots"))
502+
cost_rate=0.002, plots_dir=pathlib.Path("plots"))
503503
print(nb.run_backtest()) # pd.Series: Ann Return, Sharpe, Breakeven Turnover ...
504504
nb.plot() # 保存至 plots/synthetic_factor_net.png
505505
```

analyze_main.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,12 +204,12 @@ def main() -> None:
204204
if synth_df is None:
205205
_info("Skipped: no synthetic factor available (Step 5 was skipped).")
206206
else:
207-
_info(f"cost_rate = {0.0035:.2%} | forward_days = {FORWARD_DAYS} | top 20%")
207+
_info(f"cost_rate = {0.002:.2%} | forward_days = {FORWARD_DAYS} | top 20%")
208208
nb = NetReturnBacktester(
209209
synth_df,
210210
prices_df,
211211
forward_days=FORWARD_DAYS,
212-
cost_rate=0.0035,
212+
cost_rate=0.002,
213213
plots_dir=PLOTS_DIR,
214214
)
215215
net_summary = nb.run_backtest()

0 commit comments

Comments
 (0)