从零开始构建一个量化交易系统

Deepseek母公司幻方量化的交易策略(仅供参考)

大部分Alpha(超额收益)都是AI生成的,少部分手写。

使用大量订单簿数据,但最后生成的策略换手率并不高。

构建一个量化交易系统的想法是我在大一打商赛的时候萌生的。我认为,与其死磕技术分析去预测短期趋势,不如利用新兴的AI来带我入门新兴的量化交易领域。

判断交易标的: A 股、指数、ETF、两融、期权,需要对对应的标的进行个别分析

选择交易频率: 日线调仓 / 高频日内,由于高频日内的手续费和滑点较高,且对网络延迟要求高,这里采用日线调仓。

评判指标:

收益率

夏普比率:(年化收益率 - 无风险利率)/ 年化波动率。每承担一单位的“总风险”,能获得多少超越无风险利率的“超额回报”。

最大回撤:在选定周期内,从任一高点净值回落到后续最低点的最大跌幅。

卡玛比率:年化收益率 / 最大回撤。

稳定性:收益曲线的平滑度、胜率、盈亏比、月度/季度胜率。

量化相关名词解释

滑点:在交易中,预期的交易价格与实际成交价格之间的差异。这种差异通常发生在市场波动较大、大额交易或者流动性不足的情况下。

  • 正滑点:实际成交价格比预期价格有利(买入价低、卖出价高),这对交易者来说是有利的。
  • 负滑点:实际成交价格比预期价格不利(买入价高、卖出价低),这对交易者来说是亏损的。

利用JoinQuant平台写一个简单的策略并进行回测

这里我用别人写的一个策略进行演示

1
2
3
4
5
6
def initialize():
run_daily(period,time = "every_bar")
g.security = '600536.SSE'

def period(context):
order(g.security, 100)
  1. 交易频率
    • 每天调仓一次?每周?还是分钟级高频?
    • 高频策略(分钟级、tick级)个人实盘几乎很难完全复刻,手续费、滑点影响会很大。
  2. 标的范围
    • 只买沪深 300?中证 500?全市场?
    • 是否排除了 ST、新股、北交所、停牌股等?
  3. 资金和仓位
    • 策略是按“总资产的多少%”买?
    • 单只股票最大仓位多少?同时持仓多少只?
  4. 下单规则
    • 用的是 order_value / order_target_value / order_target
    • 调仓是在每天开盘、收盘,还是某个特定时间?
  5. 风控和止损
    • 有无大盘过滤(例如指数跌破均线就空仓)?
    • 有无单股止损 / 止盈?

这些信息决定你在实盘里“怎么下单”,不搞清楚就没法实操。


二、用模拟盘练:从 JoinQuant 到“纸面实盘”

1)先在 JoinQuant 上开模拟交易

在 JoinQuant 中:

  1. 把策略回测跑通,确认逻辑没有报错。
  2. 开一个 模拟交易(实时模拟)
    • 设置初始资金(比如你打算实盘用 10 万,那模拟也用 10 万)。
    • 设置手续费 / 滑点接近实盘。
    • 跑一段时间(至少几周~几个月)。

观察:

  • 实时信号是否频繁过度交易?
  • 是否会买到你实盘根本不想碰的标的(ST、冷门小票、流动性差的)?
  • 回撤和浮亏你心理扛不扛得住?

这一步本质上是:先让策略在“现实世界”里走一走,看会不会摔跤

2)“手工跟单”版模拟

如果你打算自己在券商 APP 手工下单,可以这样练习:

  1. 每天在固定时间(比如 14:40 或收盘前)
    看 JoinQuant 模拟盘当天的调仓指令 / 持仓变动。
  2. 开一个 Excel / Notion 表,假设你真按这些指令操作,自己记账:
    • 哪天买了什么、价格多少、数量多少
    • 当天净值、回撤大致情况

连续做几周,你会知道:

  • 每天大概要花你多长时间看信号和下单。
  • 你是否容易“手滑”或者忘记执行。

三、确定你的实盘执行方式(重点)

通常有三种路径,从“省心程度低 → 高”:

路线 A:完全手工执行(最简单但最累)

适合:日级/周级低频策略,每天调仓不多。

步骤:

  1. 确定一个固定的“执行时间点”
    比如策略逻辑是:每天收盘前按当日收盘价调仓,那你就每天 14:50–15:00 看一眼策略信号。
  2. 在 JoinQuant 中让策略输出每日持仓列表:
    • 可以在 log / 发送邮件 / 推送方式里输出:
      • 目标持仓:每只股票及目标仓位比例
  3. 打开你的券商 APP,按 目标持仓 做:
    • 不在目标持仓里的股票:卖掉(或减仓)
    • 目标持仓里缺的股票:按比例买入

要点:

  • 实盘资金≠回测资金时,用“比例缩放”
    例如回测 100 万、实盘 10 万,就把每个目标市值乘以 0.1。
  • 手续费、盘口滑点会让实盘略逊于回测,这是正常的。

路线 B:用 JoinQuant 的实盘交易对接券商(半自动)

具体支持哪些券商、如何接入,要看 JoinQuant 当前的官方说明。

概念上就是:

  1. 在 JoinQuant 中开 实盘,选择支持的券商并绑定你的证券账户。
  2. 策略里用标准下单函数(order_value 等),就能自动下单到你的券商账户中。
  3. 你需要做的主要变成:
    • 每天盯一下策略是否正常运行;
    • 检查账户里是否有异常(比如由于停牌、涨跌停导致下不了单等)。

优点:

  • 接近“全自动”,不容易因为忘记或情绪失控而乱改策略。

缺点:

  • 有一定技术门槛及风控要求(策略写错就会自动乱下单)。

路线 C:用信号 + 自己决策微调(灵活但容易“走样”)

你也可以这么干:

  1. 把策略当作“选股器 + 仓位建议”:
    • 它每天告诉你“应该持有哪些股票、大概什么仓位”。
  2. 你实盘时:
    • 严格用它的选股池(不自己乱挑其他股票);
    • 仓位可以结合自己判断做一些微调,比如看到大盘极端风险时减一点仓。

注意
一旦你频繁地“加点主观想法”,回测结果就不再完全适用了,要心理有数:

实盘绩效 = 策略本身 + 你的人性和临场发挥


四、具体实操“流程模板”示例

假设你现在有 10 万准备用这个策略,策略是:

  • 每天收盘前调仓;
  • 持仓 10 只股票,等权;
  • 只做 A 股,日线级别。

你可以这样执行:

每天例行操作(工作日)

  1. 14:40 左右:
    在 JoinQuant 上运行策略(或让它自动运行),看当日目标持仓列表和建议仓位(比如每只 10%)。
  2. 计算每只股票的目标市值
    • 10 万总资金 → 单只股票目标市值 ≈ 10 万 × 10% = 1 万
    • 考虑到实际可用资金、四舍五入,可以稍微调整(比如 9000~11000 之间都可以)。
  3. 对比你实盘当前持仓和目标持仓:
    • 不在目标列表的股票:在券商 APP 里卖出。
    • 不足目标仓位的:补仓。
    • 未持有但在目标列表里的:新买。
  4. 记录一下(建议一定做):
    • 每天收盘资金总额、持仓情况、当日盈亏;
    • 可以用 Excel、表格、雪球组合等工具。

五、风险和坑:实盘前你必须知道的

  1. 回测≠未来
    • 尤其是样本期间过短、过拟合(调参调到“完美”)的策略,实盘往往惨不忍睹。
  2. 成交问题
    • 回测默认经常能“成交在收盘价/开盘价”,实盘中可能直接涨停或者没有足够的量。
  3. 资金规模不同
    • 回测 1000 万,实盘 10 万;或者反之,都会导致流动性、可操作性不一样。
  4. 心理问题
    • 回撤 20% 在回测图上看着“挺稳”;
    • 真金白银跌 2 万的时候,你可能睡不着觉,然后在最低点按不住砍仓。

六、给你一个“任务清单”,照着一步步走就行

你可以按这个 checklist 来:

  1. ✅ 看懂策略说明(交易频率、标的、仓位、风控)。
  2. ✅ 在 JoinQuant 跑 实时模拟盘 至少几周。
  3. ✅ 用模拟盘的调仓结果,做一段时间 手工“纸面实盘”
  4. ✅ 决定执行方式:
    • A:完全手工下单
    • B:JoinQuant 实盘对接券商
    • C:用它当信号源,自己微调
  5. ✅ 制定自己的 风控规则
    • 最大可接受回撤?
    • 单日最大亏损?
    • 一次下跌多少你会考虑减仓?
  6. ✅ 从 小资金 开始实盘,比如计划用 10 万,就先上 2~3 万,跑几个月再逐步加。