PROJECT 01 / AGENT SKILLS · PYTHON

AI 选股与
量化投研工具链

我将公开投资方法写成可运行的规则,开发财务筛选、跨框架共识和含成本回测,并为每次计算保留可检查的产物。

个人开源项目 · 原创模块开发与验证
42 Stars / 8 Forks(2026-10-26) · 最新本地验证 2026-10-25

我未为项目付费投流或刷量,Star、Fork 均为自然增长。真实取数使用 AKShare,原始取数记录、筛选结果与验证记录均已公开。

30原创 Agent Skills
23投资方法参考框架
32原创目录 Python 脚本
40本地测试通过
01 / ENGINEERING

我做的关键实现

把研究流程拆成可运行、可检查的模块。Agent 按任务加载 Skill,也可以直接调用 Python CLI。

DATA / 财务口径

先对齐数据,再计算分数

核对年报期、估值日和 TTM 字段;缺失财务信息时保留不完整状态,避免用旧值拼出看似完整的结果。

数据处理源码 ↗
CONSENSUS / 跨框架比较

把分数还原到输入

比较框架内排名,输出共识分、覆盖数和分项原始分,同时保存输入哈希与参数,便于回查排序依据。

共识模块源码 ↗
BACKTEST / 持仓核算

让交易成本有明细

按价格漂移后的持仓计算调仓额,分别记录毛净收益、换手、建仓成本与逐期持仓,而不是只给一条收益曲线。

回测模块源码 ↗
02 / EVIDENCE

直接看实测产物

真实取数记录与两个独立的合成场景分别展示。这里呈现已保存的结果,不会在网页中请求行情或执行交易。

LIVE-DATA RECORD / 2026-10-24

600519:五个年报期间,字段与日期留档

通过 AKShare 1.19.3 取得 2021–2025 年报数据并完成当次筛选。下方字段摘自原始 JSON,记录估值交易日与数据完整状态。

{
  "code": "600519",
  "score_status": "complete",
  "financial_periods": [
    "2021-12-31",
    "2022-12-31",
    "2023-12-31",
    "2024-12-31",
    "2025-12-31"
  ],
  "valuation_date": "2026-10-23",
  "historical_point_in_time": false
}

这份单股记录验证了当次取数和计算。historical_point_in_time: false 表示它不是严格历史时点数据快照,也不证明策略收益。

SYNTHETIC FIXTURE / 合成示例

两个框架的分数,怎样合成排序?

质量示例与动量示例各包含 3 个合成代码。CLI 使用框架内排名计算共识,保留两份原始分数与覆盖数。

内置合成场景的已验证输出
合成代码质量原始分动量原始分共识分覆盖数
000003302083.32
000001103066.72
000002201050.02

共识分表示示例中的排名汇总,不是胜率。这个场景与下一个回测场景使用各自的独立输入。

SYNTHETIC FIXTURE / 合成示例

用能手算的价格,核对成本与持仓

人为设定价格为 100 → 110 → 99,首期建仓收取 10 bps 成本;第二期持仓不变,期末不强制清仓。

初始资产       1.00000
首期建仓后     1 × 0.999
两期净期末资产  0.999 × 1.1 × 0.9 = 0.98901
基准期末资产    1.01000

运行脚本后,可检查两期持仓明细、毛净收益、换手与输入缓存哈希。测试会核对数值并检查是否改写输入。

这些数字是程序核算样本,不是真实行情回测或实盘业绩。实际披露时点、复权分红和可成交约束仍需进一步建模。

03 / REPRODUCE

在本地复现这两个合成示例

需要 Python 3.11+。安装依赖后,演示读取仓库内的 CSV,不访问市场数据服务。

git clone https://github.com/Serennity007/awesome-stock-quant-skills.git
cd awesome-stock-quant-skills
python -m pip install -r requirements-demo.txt
python scripts/run_demo.py

完成后打开 output/demo/run-…/REPORT.md。报告连接到共识 CSV、回测持仓、输入哈希与日志;重复运行创建新目录,保留已有结果。