[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-84048":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":18,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":30,"readmeContent":31,"aiSummary":10,"trendingCount":15,"starSnapshotCount":15,"syncStatus":32,"lastSyncTime":33,"discoverSource":34},84048,"hl-quant","toddwyl\u002Fhl-quant","toddwyl","heuristic learning quant","",null,"Python",85,7,55,0,5,30,40,70.71,"MIT License",false,"main",true,[25,26,27,28,29],"autoresearch","finance","python","quant","skill","2026-06-12 04:01:42","\u003Cdiv align=\"center\">\n\n\u003Cimg src=\"docs\u002Fimages\u002Fbanner.svg\" alt=\"hl-quant\" width=\"760\">\n\n### 把量化研究压缩成「一个可编辑的策略 + 一个固定的打分器」\u003Cbr>再用启发式学习持续把指标推高。\n\n中文 · [English](README.en.md)\n\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-blue.svg)](LICENSE)\n[![Stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Ftoddwyl\u002Fhl-quant?style=flat)](https:\u002F\u002Fgithub.com\u002Ftoddwyl\u002Fhl-quant\u002Fstargazers)\n[![Agent Skill](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAgent%20Skill-npx%20skills-black)](skills\u002Fhl-quant\u002FSKILL.md)\n[![Demo Data: JoinQuant](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdemo%20data-聚宽%20JQData-orange)](https:\u002F\u002Fwww.joinquant.com\u002Fhelp\u002Fapi\u002Fdoc?name=JQDatadoc)\n[![Linux.do community](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLinux.do-community-0ea5e9)](https:\u002F\u002Flinux.do\u002F)\n\n[What is this](#what-is-this) · [快速开始](#快速开始) · [How it works](#how-it-works) · [安装 Skills](#安装-skills) · [微信交流群](#微信交流群) · [Star History](#star-history)\n\n\u003C\u002Fdiv>\n\n---\n\n## What is this\n\n`hl-quant` 把 Jiayi Weng 的 [Heuristic Learning](https:\u002F\u002Ftrinkle23897.github.io\u002Flearning-beyond-gradients\u002F) 框架和 Andrej Karpathy 的 [auto-research](https:\u002F\u002Fgithub.com\u002Fkarpathy\u002Fautoresearch) 范式，落到**量化交易策略优化**这件具体的事上。\n\n它是一个**最小化**的范例：把量化策略的研究流程，提炼成「**一个可编辑的策略 + 一个固定的回测打分器**」两件东西，再用启发式学习（Heuristic Learning \u002F 启发式探索）一轮轮把分数推高。\n\n这里保留的是一个**通用的最小演示**：用简单策略和固定回测器展示 HL 如何组织“提出假设 → 修改策略 → 固定评估 → 接受\u002F拒绝”的优化过程。具体策略、股票池、数据源、交易约束和评分门槛都需要按自己的研究目标重新设计；本仓库不构成投资建议。\n\n## 核心范式：固定评估器 + 单一可编辑程序\n\n```\n        ┌─────────────────┐   改它      ┌──────────────────┐\n  HL →  │   strategy.py   │ ──────────▶ │   backtest.py    │ ──▶  一个分数\n        │  唯一可编辑程序  │   只读它     │   固定评估器      │      (score)\n        └─────────────────┘            └──────────────────┘\n```\n\n- **`strategy.py`** —— 策略的唯一语义源。启发式学习**只允许改这一个文件**：提假设、改逻辑、调参数。\n- **`backtest.py`** —— 固定的评估口径。拉数据、模拟成交、算指标、输出**单一分数**。一旦固定就**不许动**——否则「改了评估器把分数刷上去」，候选之间不再可比。\n\n每个候选策略都用同一条命令、同一段数据、同一个评分公式打分，于是「这版到底有没有更好」变成一个可排序的客观问题。\n\n评分口径采用 **Sortino ratio（索提诺比率）**，把一条策略的下行风险调整后收益压成一个标量：\n\n```\nscore = Sortino\n```\n\n> [!NOTE]\n> 范式背后的完整设计见 [`docs\u002Fdesign\u002Fheuristic-exploration-framework.md`](docs\u002Fdesign\u002Fheuristic-exploration-framework.md)。\n\n## 快速开始\n\n\u003Cdetails>\n\u003Csummary>🔑 配置数据凭证\u003C\u002Fsummary>\n\n示例回测默认用[聚宽 JQData](https:\u002F\u002Fwww.joinquant.com\u002Fhelp\u002Fapi\u002Fdoc?name=JQDatadoc) 拉取日线数据，只是为了演示数据接口和固定评估流程；实际项目可以替换成自己的数据源。不要把账号密码写进代码或提交进仓库，用环境变量传入：\n\n```bash\nexport JOINQUANT_ACCOUNT=\u003C你的聚宽账号>\nexport JOINQUANT_PASSWORD=\u003C你的聚宽密码>\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>📦 安装依赖\u003C\u002Fsummary>\n\n按 `requirements.txt` 安装依赖：\n\n```bash\npip install -r requirements.txt\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>▶️ 跑一次回测\u003C\u002Fsummary>\n\n```bash\ncd example\npython backtest.py\n```\n\n\u003C\u002Fdetails>\n\n## How it works\n\n\u003Cdetails>\n\u003Csummary>🧭 HL 循环\u003C\u002Fsummary>\n\n启发式学习是一个结构化的推理循环——每一轮提一个**有经济含义**的假设，只改策略文件，用固定评估器打分，**严格更好才留**：\n\n```\nProbe（跑基线）→ Diagnose（看弱点）→ Propose（提一个有经济含义的假设）\n   → Patch（只改 strategy.py）→ Evaluate（固定评估器打分）→ Decide（严格更好才留）\n```\n\n两条硬规矩：\n\n1. **只改 `strategy.py`**，评估器 \u002F 数据源 \u002F 评分公式一律不动。\n2. **严格更好才算数**——分数没有严格高于基线的候选，不予保留；窄区间死区式的过拟合（在连续变量上挖 1~2 点宽的坑）一律拒绝。\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>📈 演示：HL trial ledger\u003C\u002Fsummary>\n\n按 [`skills\u002Fhl-quant\u002FSKILL.md`](skills\u002Fhl-quant\u002FSKILL.md) 的纪律跑：固定评估器不动，只改 `strategy.py`，每轮留下证据、判断和决策。\n\n固定命令：\n\n```bash\ncd example\npython backtest.py\n```\n\n本轮回测标的为上证指数（`000001.XSHG`），区间 `2025-03-01 ~ 2026-02-28`，同期买入持有约 **+25.50%**。\n\n| HL 步骤 | 证据 | 判断 | 动作 |\n| --- | --- | --- | --- |\n| **Probe** | 基线 5\u002F10：score 0.7545，总收益 +5.46%，胜率 41.67%，12 笔交易 | 只吃到指数涨幅的一小段，交易多但质量低 | 保持评估器不动，进入诊断 |\n| **Diagnose** | 12 笔交易、胜率低、收益远低于买入持有 | 5\u002F10 均线太灵敏，震荡里频繁翻转、过早离场 | 聚焦“均线灵敏度”这一变量 |\n| **Propose** | 趋势行情里，放慢均线通常能过滤日间噪声 | 把 5\u002F10 放慢到 10\u002F20 有经济含义，不是窄区间挖坑 | 只提出这一处参数变化 |\n| **Patch** | `strategy.py` 是唯一可编辑程序 | 评估器、数据源、评分公式不动 | `SHORT_WINDOW: 5 → 10`，`LONG_WINDOW: 10 → 20` |\n| **Evaluate** | 10\u002F20：score 2.0615，总收益 +17.33%，胜率 57.14%，7 笔交易 | 分数严格提高，收益、Sharpe、回撤、胜率同步改善 | 候选进入接受检查 |\n| **Replay** | 10\u002F30、20\u002F60 分数更高，但只剩 2 笔 \u002F 1 笔交易 | 样本量过小，像撞上这段行情 | 拒绝追最高分 |\n| **Decide** | 10\u002F20 分数更高且交易笔数仍可接受 | 改进可信度高于 10\u002F30、20\u002F60 | **接受 10\u002F20** |\n\n实际补丁只有两个参数：\n\n```python\nSHORT_WINDOW = 10   # 基线 5\nLONG_WINDOW = 20    # 基线 10\n```\n\n固定评估器重跑输出：\n\n```\n参数  SHORT_WINDOW=10  LONG_WINDOW=20\n------------------------------------------------\n  总收益     : +17.33%\n  年化收益   : +18.19%\n  Sharpe     : 1.839\n  Sortino    : 2.062\n  最大回撤   : 6.71%\n  胜率       : 57.14%  (7 笔)\n------------------------------------------------\n  >>> SCORE  : 2.0615\n```\n\n候选证据表：\n\n| 候选 | Score \u002F Sortino | 总收益 | Sharpe | 最大回撤 | 胜率 | 交易笔数 | 决策 |\n| --- | ---: | ---: | ---: | ---: | ---: | ---: | --- |\n| 5\u002F10 基线 | 0.7545 | +5.46% | 0.698 | 7.10% | 41.67% | 12 | 基线 |\n| 10\u002F20 | 2.0615 | +17.33% | 1.839 | 6.71% | 57.14% | 7 | 接受 |\n| 10\u002F30 | 2.2579 | +19.24% | 2.017 | 4.94% | 100.00% | 2 | 拒绝：样本太少 |\n| 20\u002F60 | 2.0898 | +17.93% | 1.915 | 5.01% | 100.00% | 1 | 拒绝：样本太少 |\n\n\u003C\u002Fdetails>\n\n## 安装 Skills\n\n上面这套循环已经打包成一个可复用的 [Agent Skill](skills\u002Fhl-quant\u002FSKILL.md)，用 [`npx skills`](https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fskills) 一键安装到你自己的 agent（Claude Code \u002F Cursor 等）：\n\n```bash\nnpx skills add toddwyl\u002Fhl-quant\n```\n\n装好后，跟 agent 说「用启发式探索优化这个策略」就会触发它，按 `Probe → Diagnose → Propose → Patch → Evaluate → Decide` 的纪律帮你迭代——只改策略文件、严格门槛、反过拟合。\n\n## 仓库结构\n\n```\nhl-quant\u002F\n├── README.md\n├── requirements.txt    # pip 依赖（仓库不附带任何虚拟环境）\n├── example\u002F\n│   ├── strategy.py     # 唯一可编辑程序（HL 改这里）\n│   └── backtest.py     # 固定评估器（拉示例数据 → 模拟 → 打分）\n├── skills\u002F\n│   └── hl-quant\u002FSKILL.md            # 可 npx 安装的启发式探索 skill\n└── docs\u002F\n    └── design\u002Fheuristic-exploration-framework.md   # 范式背后的完整设计\n```\n\n## 微信交流群\n\n面向中文用户的微信交流群（**WeChat group for Chinese-speaking users**）。扫码加入，一起讨论启发式学习、量化策略与 Agent 工作流：\n\n\u003Cdiv align=\"center\">\n\u003Cimg src=\"docs\u002Fimages\u002Fwechat-group.png\" alt=\"微信交流群二维码\" width=\"240\">\n\u003C\u002Fdiv>\n\n> [!NOTE]\n> 群二维码会定期更新；若已过期，欢迎在 Issues 留言。\n\n## Star History\n\n\u003Ca href=\"https:\u002F\u002Fstar-history.com\u002F#toddwyl\u002Fhl-quant&Date\">\n  \u003Cpicture>\n    \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=toddwyl\u002Fhl-quant&type=Date&theme=dark\" \u002F>\n    \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=toddwyl\u002Fhl-quant&type=Date\" \u002F>\n    \u003Cimg alt=\"Star History Chart\" src=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=toddwyl\u002Fhl-quant&type=Date\" width=\"600\" \u002F>\n  \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n## References\n\nWeng, J. (2026). *Learning Beyond Gradients*. https:\u002F\u002Ftrinkle23897.github.io\u002Flearning-beyond-gradients\u002F\n\nKarpathy, A. (2025). *auto-research*. https:\u002F\u002Fgithub.com\u002Fkarpathy\u002Fautoresearch\n",2,"2026-06-11 04:12:10","CREATED_QUERY"]