程序员量化交易实战 01:为什么程序员适合做量化交易
量化交易不是玄学,也不是靠一个指标躺赚。第一篇先把交易问题拆成程序员熟悉的数据、规则、验证和风控问题,并用 ZiQuant 项目完成可运行的第一步。
量化交易不是玄学,也不是靠一个指标躺赚。第一篇先把交易问题拆成程序员熟悉的数据、规则、验证和风控问题,并用 ZiQuant 项目完成可运行的第一步。
第二篇把 ZiQuant 的 Python 工程骨架搭起来:目录、pyproject.toml、.env、配置读取、健康检查和测试命令。先让项目可安装、可启动、可验证,再进入数据层。
第三篇把股票池、K 线、复权、因子、信号、持仓、回测、最大回撤和 Sharpe 这些词翻译成 ZiQuant 里的模型、字段和测试对象,避免后面写代码时概念混用。
第四篇把 A 股里的 100 股整数手、T+1、涨跌停、停牌、ST、手续费和印花税落到订单检查代码里,并在 ZiQuant 中新增可测试的 trading_rules 模块。
第五篇进入数据层:为什么策略之前必须先做数据源抽象、行情和财报数据、数据质量检查、来源记录和覆盖率。完成后对前五篇做第一次阶段 review。
第六篇进入 PostgreSQL 和 Alembic:为什么量化平台不能只靠内存对象,如何用 SQLAlchemy metadata 做 schema 巡检,并把表结构和迁移变成可测试的工程边界。
第七篇实现股票池构建:规范化股票代码、过滤 ST 和退市、去重、限制规模,并把公共 A 股股票池的构建过程写成可测试的纯函数。
第八篇实现市场行情清洗:解析交易日和数字字段,校验 OHLC,去重,统一成交量单位,并输出覆盖率报告和被拒绝行的原因。
第九篇实现因子计算:用标准库计算日收益、均线、动量和年化波动率,并把结果转成 buy_watch、observe、risk_watch 三类可解释信号。
第十篇把行情清洗、因子信号和 A 股订单规则串起来,完成第一个可运行的信号回测循环,并对第 6-10 篇做阶段 review。
第十一篇把第一个单标的回测扩展为多标的组合回测:等权分配资金、逐标的运行、聚合权益曲线、统计交易数量,并保留可测试边界。
第十二篇补齐回测指标:总收益、年化收益、年化波动、类 Sharpe、最大回撤、胜率、盈亏比、换手率和交易次数,让策略比较有统一语言。
第十三篇实现参数搜索:围绕短均线、长均线和仓位比例生成候选组合,逐组回测,用收益、回撤和换手惩罚排序,得到可复查的策略候选。
第十四篇实现策略实验记录:把参数搜索候选、基准结果、指标差异、状态和决策保存成结构化 payload,让策略研究可以追溯和复盘。
第十五篇实现策略晋升门禁:候选策略必须满足最低收益、最大回撤、交易次数和基准比较要求,才能进入纸面模拟盘观察,并完成第 11-15 篇阶段 review。
第十六篇进入纸面模拟盘,新增账户、持仓和成交执行结果,把买入、卖出、现金和市值更新写成可测试的账本逻辑。
第十七篇在模拟盘账本之上生成账户快照,计算现金比例、持仓市值、浮动盈亏和持仓权重,为风控和通知提供统一输入。
第十八篇实现模拟盘风控检查,基于账户快照验证总仓位、现金缓冲和单只股票权重,并输出可读的违规项。
第十九篇实现第一版调仓计划,把当前持仓权重和目标权重的差距转换成 A 股 100 股一手的买卖建议,但不直接修改账户。
第二十篇把账户快照、风控报告和调仓计划合成模拟盘日报文本,为后续飞书、邮件或其他通知通道留下稳定消息格式,并完成第 16-20 篇阶段 review。
第二十一篇把账户快照、风控报告和调仓计划合成 HOLD、REBALANCE、REDUCE_RISK 三类推荐动作,让模拟盘输出更适合复盘和提醒。
第二十二篇新增模拟盘复盘记录,把每日权益、现金比例、风控级别和推荐动作保存为可排序条目,并提供多日汇总。
第二十三篇把账户快照、风控检查、调仓计划、推荐摘要、日报消息和复盘记录串成一次每日运行结果,形成可测试的模拟盘日循环。
第二十四篇用 JSON 文件保存和恢复模拟盘账户状态,先只持久化现金和持仓,不保存派生快照,让每日流程可以在重启后继续运行。
第二十五篇新增模拟盘生产检查,验证现金、行情价格、目标权重、日报和复盘记录等运行前后条件,并完成第 21-25 篇阶段 review。
第二十六篇新增模拟盘提醒通道抽象,稳定消息发送接口和回执结构,为后续接入文件、飞书、邮件等通道做准备。
第二十七篇实现文件型提醒通道,把模拟盘日报和发送回执写入 JSONL,作为接入真实通知平台前的可验证替身。
第二十八篇新增价格源协议和静态价格提供者,把每日模拟盘流程里的 last_prices 字典抽象成可替换输入,为后续真实行情接入做准备。
第二十九篇新增目标权重策略,把候选股票列表转换成总仓位受控的等权目标,并支持权重归一化,为调仓计划提供更稳定输入。
第三十篇把价格快照、生产检查和提醒回执汇总成运行健康报告,判断每日模拟盘运行是 ok、warning 还是 blocker,并完成第 26-30 篇阶段 review。
第三十一篇给模拟盘每日流程加运行时间窗,避免任务在错误时间误跑,并返回下一次允许运行的时间。
第三十二篇把提醒消息、运行健康报告和复盘记录写入稳定 JSON 归档,为模拟盘日报追查和历史统计打基础。
第三十三篇读取每日归档报告,统计报告数量、最新状态、阻断次数和通知成功率,让模拟盘从单日结果走向历史视角。
第三十四篇把必需股票与价格快照做对比,生成 blocker 级别的数据缺口计划,避免策略在缺价格时静默运行。
第三十五篇把运行时间窗、历史摘要、数据缺口和健康报告汇总成运维检查清单,并完成第 31-35 篇阶段 review。
第三十六篇新增每日运行请求对象,把交易日、生成时间、必需股票列表和 dry-run 标记统一收束,为后续真实运行入口做准备。
第三十七篇把运维检查清单转换成每日运行结果,区分 ready、dry_run_ready 和 blocked,并保留失败检查项。
第三十八篇读取日报归档目录,生成包含交易日、状态和路径的索引项,让历史报告更容易查询和展示。
第三十九篇新增失败动作策略,把 run_window、data_gaps、run_health 等失败检查项映射成可执行的后续处理建议。
第四十篇把每日请求、运维检查清单、运行结果和失败动作组合成每日运行计划,并完成第 36-40 篇阶段 review。
第四十一篇在 DailyRunPlan 之外新增 DailyRunSummary,把每日运行状态、股票数量、失败检查和执行判断压成适合日志与命令行展示的一行摘要。
第四十二篇新增 DailyRunArtifact,把每日运行计划中的摘要、请求、失败检查和动作写入 JSON,作为排查和归档的稳定证据。
第四十三篇新增 DailyRunCommandResponse,把每日运行状态、摘要消息、artifact 路径和 exit code 包成命令层可直接返回的对象。
第四十四篇新增 ExecutionDecision,把 ready、dry-run-ready 和 blocked 的执行判断集中到一层,避免命令层误触发真实模拟盘动作。
第四十五篇新增 OpsRunbook,把执行决策转成运维可读的步骤清单,并对第 41-45 篇做阶段 review。
这是一套围绕真实 GitHub 项目推进的量化交易工程实战路线图:从 Python 项目骨架、A 股规则、数据层、因子、回测、模拟盘到提醒、每日运行和运维闭环,每篇文章都要求代码可运行。
这篇不讲神奇策略,而是从什么是量化、量化的三要素、因子、策略、回测、风控和平台工程讲起,整理一个零基础程序员真正需要的量化知识地图。
另有 47 篇未列入提纲的文章。