Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 9 additions & 6 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,13 @@ TUSHARE_TOKEN=your_tushare_token_here
FACTORZEN_LLM_ENABLED=false
FACTORZEN_LLM_BASE_URL=https://www.aiping.cn/api/v1
FACTORZEN_LLM_API_KEY=your_llm_api_key_here
FACTORZEN_LLM_MODEL=DeepSeek-V4-Pro
FACTORZEN_LLM_TIMEOUT_SECONDS=30
FACTORZEN_LLM_MAX_TOKENS=700
FACTORZEN_LLM_MODEL=DeepSeek-V4-Flash-0731
# thinking 开时建议 timeout≥180、max_tokens≥4000(思考流更长)。
FACTORZEN_LLM_TIMEOUT_SECONDS=180
FACTORZEN_LLM_MAX_TOKENS=4000
# AIPing enable_thinking toggle: true/enabled/on or false/disabled/off.
# FACTORZEN_LLM_THINKING=false
# Pin AIPing provider.only to avoid an unintended upstream fallback.
FACTORZEN_LLM_PROVIDER=DeepSeek
FACTORZEN_LLM_THINKING=true
# Reasoning depth when thinking is on: low|medium|high|max|xhigh|none (default max).
FACTORZEN_LLM_REASONING_EFFORT=max
# Optional: pin AIPing provider.only (default: not needed; model name is enough).
# FACTORZEN_LLM_PROVIDER=DeepSeek
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -91,3 +91,8 @@ dmypy.json
# uv 误生成产物(项目统一 pixi,勿用 uv)
uv.lock
.hypothesis/

# PPT generation deps (docs/presentations)
docs/presentations/node_modules/
docs/presentations/package-lock.json
docs/presentations/slides_preview/
6 changes: 5 additions & 1 deletion docs/concepts/factor-library.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,10 +106,13 @@ lift ≥ bar 且 second_half ≤ 0 或缺失 → probation
lift_admission 判 probation
(增量过门槛,但后半段未确认)
│
│ 落盘 forward_start = min(墙钟, latest_data_date)
│ (避免墙钟超前数据湖 → 永远 n_days=0)
▼
fz factor-library forward-track 逐日记录 paper forward RankIC
--max-backfill-days=10 ⚠️ 默认拒绝历史回灌
│
│ 只计 date > forward_start(缺字段则回退 updated_at)
│ 累积 ≥ --min-days(默认 60)个有效交易日
▼
fz factor-library forward-review --apply
Expand All @@ -119,8 +122,9 @@ fz factor-library forward-review --apply
└──→ demote → no_lift
```

`--max-backfill-days` 默认只允许极少量回灌,本质上是拒绝用历史数据把观察期「补」出来——如果允许无限回灌,向前确认就退化成又一次样本内检验,失去全部意义。
`forward_start` 是观察钟,与审计用的 `updated_at`(墙钟)分开:入库瞬间若日终数据尚未到齐,观察从**已有最后一根 bar** 起算,下一根新数据即可开始攒天数。

`--max-backfill-days` 默认只允许极少量回灌,本质上是拒绝用历史数据把观察期「补」出来——如果允许无限回灌,向前确认就退化成又一次样本内检验,失去全部意义。
> ⚠️ **当前接线缺口**:`forward-track` 尚未接进 `fz ops daily` 的 8 阶段无人值守链路,probation 因子的每日记录目前需要人工执行。这是已知待办,命令的 help 文本里也标注了。

---
Expand Down
4 changes: 2 additions & 2 deletions docs/guides/performance.md
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ pixi run -- fz factor-library lift-test --market ashare \
| `--workers` | `fz data intraday-features build` | `1` | 月级进程 | **高:约 7.6 GiB/月** |
| `--set llm_workers=` | `fz mine team` | `4` | 轮内 LLM 调用 | 可忽略(网络等待) |
| `--set lift_workers=` | `fz mine team` · `fz factor-library lift-test` | 自适应 | 候选级线程 | **约 5 GB/worker,上限 4** |
| `--pool-subproc` | `fz mine team` | 关 | 池构建放子进程 | **降低**父进程峰值 |
| `--pool-subproc` | `fz mine team` / `fz mine agent` | **自适应**(~20 GiB + all_a 大窗自动开) | 池构建放子进程 | **降低**父进程峰值;`--no-pool-subproc` 可关 |

> ✅ 判断原则:**LLM 并发几乎免费,进程/线程级计算并发按内存买单。** 内存紧张时优先关掉 `intraday-features build --workers` 与压低 `--set lift_workers=`,而不是压 `--set llm_workers=`。

Expand All @@ -175,7 +175,7 @@ pixi run -- fz factor-library lift-test --market ashare \

按顺序自查,命中前面的就不用看后面的:

1. **任务被 OOM kill 了?** 先开 `--pool-subproc`(或先 `fz mine pool-prebuild`),再 `--set lift_workers=1`,最后缩票池到 `csi800`。
1. **任务被 OOM kill 了?** `fz mine agent` / `team` 在约 20 GiB 主机 + 全 A 大窗下会**自动**开池子进程(`discovery/mem_budget.py`);仍 OOM 时可先 `fz mine pool-prebuild`、`--set lift_workers=1`,或缩票池到 `csi800`。调试可 `--no-pool-subproc` 关断自适应。
2. **挖掘慢得离谱?** 确认是否开着库正交检查。scout 阶段可以 `--set no_library_orthogonal=true` 快速探索,正式入库前再开回来。
3. **单因子评估慢?** 看日志的分段计时,绝大多数情况瓶颈在预处理段而非 I/O。
4. **补历史日内特征慢?** 确认增量跳过生效(已覆盖月应是毫秒级);只有缺口月份才需要 `--workers`。
Expand Down
Binary file added docs/presentations/FactorZen_答辩讲解.pptx
Binary file not shown.
34 changes: 34 additions & 0 deletions docs/presentations/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# FactorZen 答辩讲解材料

**受众**:懂代码、不要求熟悉量化。
**时长**:≤10 分钟(含演示)。
**讲解重点**:**多 Agent 因子挖掘**(`fz mine team`:4 角色 + Evaluator)。

## 交付物

| 文件 | 说明 |
|------|------|
| **FactorZen_答辩讲解.pptx** | **20 页**宽屏 PPT |
| **讲解稿与演示脚本.md** | 术语白话、主线口播、演示与问答 |
| `factorzen_defense.js` | 生成脚本 |

## 重生成

```bash
cd docs/presentations
npm install # 首次
node factorzen_defense.js
```

## 结构一览

| 页 | 内容 |
|----|------|
| 1–4 | 封面、大纲、软件定位、**术语超白话** |
| 5–6 | 项目意义(痛点、目标函数) |
| **7–12** | **多 Agent 主线**(为何拆角色、编制、流水线、记忆、防翻车、CLI 演示) |
| 13–14 | Lift 门禁、产物/Web 演示 |
| 15–18 | 技术栈、源码地图、伪代码、铁律 |
| 19–20 | 总结、Q&A |

超时保 **7–12**;可跳 14、15、18。
Loading
Loading