从零开始构建一个量化交易系统
从零开始构建一个量化交易系统
Deepseek母公司幻方量化的交易策略(仅供参考)
大部分Alpha(超额收益)都是AI生成的,少部分手写。
使用大量订单簿数据,但最后生成的策略换手率并不高。
构建一个量化交易系统的想法是我在大一打商赛的时候萌生的。我认为,与其死磕技术分析去预测短期趋势,不如利用新兴的AI来带我入门新兴的量化交易领域。
判断交易标的: A 股、指数、ETF、两融、期权,需要对对应的标的进行个别分析
选择交易频率: 日线调仓 / 高频日内,由于高频日内的手续费和滑点较高,且对网络延迟要求高,这里采用日线调仓。
评判指标:
收益率
夏普比率:(年化收益率 - 无风险利率)/ 年化波动率。每承担一单位的“总风险”,能获得多少超越无风险利率的“超额回报”。
最大回撤:在选定周期内,从任一高点净值回落到后续最低点的最大跌幅。
卡玛比率:年化收益率 / 最大回撤。
稳定性:收益曲线的平滑度、胜率、盈亏比、月度/季度胜率。
量化相关名词解释
滑点:在交易中,预期的交易价格与实际成交价格之间的差异。这种差异通常发生在市场波动较大、大额交易或者流动性不足的情况下。
- 正滑点:实际成交价格比预期价格有利(买入价低、卖出价高),这对交易者来说是有利的。
- 负滑点:实际成交价格比预期价格不利(买入价高、卖出价低),这对交易者来说是亏损的。
利用JoinQuant平台写一个简单的策略并进行回测
这里我用别人写的一个策略进行演示
1 | def initialize(): |
- 交易频率
- 每天调仓一次?每周?还是分钟级高频?
- 高频策略(分钟级、tick级)个人实盘几乎很难完全复刻,手续费、滑点影响会很大。
- 标的范围
- 只买沪深 300?中证 500?全市场?
- 是否排除了 ST、新股、北交所、停牌股等?
- 资金和仓位
- 策略是按“总资产的多少%”买?
- 单只股票最大仓位多少?同时持仓多少只?
- 下单规则
- 用的是 order_value / order_target_value / order_target?
- 调仓是在每天开盘、收盘,还是某个特定时间?
- 风控和止损
- 有无大盘过滤(例如指数跌破均线就空仓)?
- 有无单股止损 / 止盈?
这些信息决定你在实盘里“怎么下单”,不搞清楚就没法实操。
二、用模拟盘练:从 JoinQuant 到“纸面实盘”
1)先在 JoinQuant 上开模拟交易
在 JoinQuant 中:
- 把策略回测跑通,确认逻辑没有报错。
- 开一个 模拟交易(实时模拟):
- 设置初始资金(比如你打算实盘用 10 万,那模拟也用 10 万)。
- 设置手续费 / 滑点接近实盘。
- 跑一段时间(至少几周~几个月)。
观察:
- 实时信号是否频繁过度交易?
- 是否会买到你实盘根本不想碰的标的(ST、冷门小票、流动性差的)?
- 回撤和浮亏你心理扛不扛得住?
这一步本质上是:先让策略在“现实世界”里走一走,看会不会摔跤。
2)“手工跟单”版模拟
如果你打算自己在券商 APP 手工下单,可以这样练习:
- 每天在固定时间(比如 14:40 或收盘前)
看 JoinQuant 模拟盘当天的调仓指令 / 持仓变动。 - 开一个 Excel / Notion 表,假设你真按这些指令操作,自己记账:
- 哪天买了什么、价格多少、数量多少
- 当天净值、回撤大致情况
连续做几周,你会知道:
- 每天大概要花你多长时间看信号和下单。
- 你是否容易“手滑”或者忘记执行。
三、确定你的实盘执行方式(重点)
通常有三种路径,从“省心程度低 → 高”:
路线 A:完全手工执行(最简单但最累)
适合:日级/周级低频策略,每天调仓不多。
步骤:
- 确定一个固定的“执行时间点”
比如策略逻辑是:每天收盘前按当日收盘价调仓,那你就每天 14:50–15:00 看一眼策略信号。 - 在 JoinQuant 中让策略输出每日持仓列表:
- 可以在 log / 发送邮件 / 推送方式里输出:
- 目标持仓:每只股票及目标仓位比例
- 可以在 log / 发送邮件 / 推送方式里输出:
- 打开你的券商 APP,按 目标持仓 做:
- 不在目标持仓里的股票:卖掉(或减仓)
- 目标持仓里缺的股票:按比例买入
要点:
- 实盘资金≠回测资金时,用“比例缩放”
例如回测 100 万、实盘 10 万,就把每个目标市值乘以 0.1。 - 手续费、盘口滑点会让实盘略逊于回测,这是正常的。
路线 B:用 JoinQuant 的实盘交易对接券商(半自动)
具体支持哪些券商、如何接入,要看 JoinQuant 当前的官方说明。
概念上就是:
- 在 JoinQuant 中开 实盘,选择支持的券商并绑定你的证券账户。
- 策略里用标准下单函数(order_value 等),就能自动下单到你的券商账户中。
- 你需要做的主要变成:
- 每天盯一下策略是否正常运行;
- 检查账户里是否有异常(比如由于停牌、涨跌停导致下不了单等)。
优点:
- 接近“全自动”,不容易因为忘记或情绪失控而乱改策略。
缺点:
- 有一定技术门槛及风控要求(策略写错就会自动乱下单)。
路线 C:用信号 + 自己决策微调(灵活但容易“走样”)
你也可以这么干:
- 把策略当作“选股器 + 仓位建议”:
- 它每天告诉你“应该持有哪些股票、大概什么仓位”。
- 你实盘时:
- 严格用它的选股池(不自己乱挑其他股票);
- 仓位可以结合自己判断做一些微调,比如看到大盘极端风险时减一点仓。
注意:
一旦你频繁地“加点主观想法”,回测结果就不再完全适用了,要心理有数:
实盘绩效 = 策略本身 + 你的人性和临场发挥
四、具体实操“流程模板”示例
假设你现在有 10 万准备用这个策略,策略是:
- 每天收盘前调仓;
- 持仓 10 只股票,等权;
- 只做 A 股,日线级别。
你可以这样执行:
每天例行操作(工作日)
- 14:40 左右:
在 JoinQuant 上运行策略(或让它自动运行),看当日目标持仓列表和建议仓位(比如每只 10%)。 - 计算每只股票的目标市值
- 10 万总资金 → 单只股票目标市值 ≈ 10 万 × 10% = 1 万
- 考虑到实际可用资金、四舍五入,可以稍微调整(比如 9000~11000 之间都可以)。
- 对比你实盘当前持仓和目标持仓:
- 不在目标列表的股票:在券商 APP 里卖出。
- 不足目标仓位的:补仓。
- 未持有但在目标列表里的:新买。
- 记录一下(建议一定做):
- 每天收盘资金总额、持仓情况、当日盈亏;
- 可以用 Excel、表格、雪球组合等工具。
五、风险和坑:实盘前你必须知道的
- 回测≠未来
- 尤其是样本期间过短、过拟合(调参调到“完美”)的策略,实盘往往惨不忍睹。
- 成交问题
- 回测默认经常能“成交在收盘价/开盘价”,实盘中可能直接涨停或者没有足够的量。
- 资金规模不同
- 回测 1000 万,实盘 10 万;或者反之,都会导致流动性、可操作性不一样。
- 心理问题
- 回撤 20% 在回测图上看着“挺稳”;
- 真金白银跌 2 万的时候,你可能睡不着觉,然后在最低点按不住砍仓。
六、给你一个“任务清单”,照着一步步走就行
你可以按这个 checklist 来:
- ✅ 看懂策略说明(交易频率、标的、仓位、风控)。
- ✅ 在 JoinQuant 跑 实时模拟盘 至少几周。
- ✅ 用模拟盘的调仓结果,做一段时间 手工“纸面实盘”。
- ✅ 决定执行方式:
- A:完全手工下单
- B:JoinQuant 实盘对接券商
- C:用它当信号源,自己微调
- ✅ 制定自己的 风控规则:
- 最大可接受回撤?
- 单日最大亏损?
- 一次下跌多少你会考虑减仓?
- ✅ 从 小资金 开始实盘,比如计划用 10 万,就先上 2~3 万,跑几个月再逐步加。