
做量化交易也有一段时间了从最早自己写Python脚本跑股票策略到后来接触期货、期权再到帮团队搭建整套回测框架最大的感受是新手入门最难的不是代码也不是数学而是根本没搞清自己到底在交易什么。很多朋友一上来就问我“有没有赚钱的量化策略代码”我通常先反问一句你想用在哪个品种上股票、期货、期权还是加密货币不同产品的交易规则、资金门槛、盈利逻辑完全不一样。同一个均线策略放在股指期货和放在A股股票上结果可能是天壤之别——不是策略本身不好是它跟产品特性不匹配。这篇文章我想把量化交易里最基础、也最容易被忽略的一课补齐常见交易产品怎么分类以及这些产品背后的盈利模式到底是什么。只有先把“交易什么”和“靠什么赚钱”这两件事搞透后面的技术细节才有意义。内容不涉及太深奥的数学模型尽量用大白话和实操经验来讲适合刚开始接触量化、准备选方向的朋友。1. 交易产品的底层分类逻辑1.1 按资产类别分股票、期货、期权、外汇、数字货币从大类上看普通投资者能接触到的交易产品主要就这几类。每类产品有自己的“脾气”市场结构、参与者构成、交易规则都不一样。股票代表对一家公司的所有权交易的是企业未来的现金流预期。特点是T1A股、有涨跌停限制、没有杠杆适合做中低频策略。期货标准化的远期合约交易的是未来某个时间点的价格。自带杠杆、双向交易、T0适合趋势跟踪和跨期套利。期权买入的是“权利”而非“义务”收益结构是非线性的能做多波动率也能做空波动率策略复杂度比期货高一个量级。外汇货币对之间的兑换价格全球流动性最高24小时交易但散户能获得的交易成本和数据质量往往处于劣势。数字货币7x24小时连续交易、波动大、市场深度不稳定策略容易在极端行情中失效虽然普通人接触的门槛低但实际做量化的隐性门槛不低。1.2 按交易性质分现货、衍生品、杠杆工具除了看资产类别还要看交易性质。同一类资产用现货方式交易和用衍生品方式交易逻辑完全不同。拿比特币举例你在交易所直接买现货赚的是币价上涨的钱但如果你买的是永续合约你不仅要判断方向还得面对资金费率、强平机制、杠杆爆仓等问题策略里就需要多考虑一个“仓位与风控”维度。期货、期权这类衍生品本质上是为了对冲风险而被发明出来的但它们本身也成了投机工具。这一层分类决定了你策略代码里要写哪些风控逻辑杠杆产品必须要有仓位管理和强平保护逻辑现货产品则可以相对“佛系”一点。1.3 按持仓周期分高频、中频、低频很多人误以为“量化高频”这是认知误区。量化交易按持仓周期可以分成三类类型持仓时间典型策略交易频率适合的品种高频秒级到分钟级做市、套利每秒多次期货、数字货币中频分钟级到几天统计套利、趋势每天几次到几十次期货、股票、ETF低频几天到几个月多因子选股每周到每月股票、ETF对普通个人量化交易者来说高频需要极低延迟的交易通道和专业设备门槛非常高——竞争的是硬件和速度而不是策略逻辑。中低频才是更适合个人选手的主战场因为拼的是信息处理和逻辑构建能力是人可以掌握的。2. 主流量化交易产品逐个拆解2.1 股票最基础的量化战场股票是大多数量化初学者接触的第一个品种A股、港股、美股各有各的特点。A股最特殊的地方在于T1制度和涨跌停限制当天买入的股票不能当天卖出这意味着日内回转策略没法做除非你有底仓。涨跌停则意味着极端行情下你没法按理想价格成交这对止损策略是个考验。还有一个被很多人忽略的点A股的做空机制有限虽然有融券和股指期货对冲但融券成本高、券源不稳定典型的“市场中性策略”在A股执行起来比美股难得多。所以国内很多股票量化基金其实是“指数增强”策略——不追求绝对收益而是追求跑赢指数本质上是因为做空工具不够用。美股就相对友好一些T0、无涨跌停限制、做空方便、期权产品成熟策略空间大得多。缺点是数据获取成本高实时行情需要付费财务数据也要从多个渠道整理。港股夹在中间有着类似美股的交易规则和相对便宜的估值但流动性集中在少数大盘股上小盘股容易遇到“无人接盘”的流动性问题。做股票量化最核心的数据是基本面财务数据、行情数据和另类数据。对刚入门的朋友建议先从A股中证500、沪深300成分股开始练手流动性好、数据全面策略回测时不容易遇到“假信号”的坑。2.2 期货杠杆、双向与趋势策略的天堂期货是我个人觉得最适合中高频趋势策略的品种。期货市场的盈利逻辑和股票有本质区别股票只能靠价格上涨赚钱低买高卖期货可以同时做多和做空而且自带杠杆。这意味着即使市场下跌只要有趋势就有盈利机会。保证金制度是期货的核心你不需要支付合约的全部价值只需要付一定比例比如10%-15%的保证金就能控制全部仓位。这相当于放大了收益和亏损所以期货量化策略里最重要的一环不是入场信号而是仓位控制。举个例子螺纹钢期货合约价值约4万保证金比例13%你只需要约5200元就能开一手。如果你做多价格涨1%你赚400元本金收益率约7.7%。反过来如果跌1%你就亏7.7%。这就是杠杆的威力也是很多新手在期货上爆仓的根本原因——他们把杠杆当成了“提高资金利用率”的工具却忘了它也是“加速死亡”的工具。从量化交易的角度期货产品的优势在于品种多且不同板块黑色、有色、化工、农产品之间波动特征差异大方便做多品种分散T0交易当天可以反复开平仓策略执行灵活数据公开透明期货公司提供的Tick和分钟线数据质量普遍不错市场参与者以机构为主价格反映信息相对充分趋势一旦形成持续性往往比股票强2.3 期权非线性收益带来的策略升维如果说股票和期货是“线性”交易——赚多赚少取决于方向判断的准确性那么期权就是“非线性”交易它的盈利模式复杂得多但策略空间也大得多。期权的核心是权利金定价买方支付一笔权利金买入“未来以某个价格买入或卖出标的资产的权利”。买方的最大亏损是权利金有限最大盈利理论上无限卖方的最大盈利是权利金有限最大亏损理论上无限。这个不对称的盈亏结构给了量化策略非常多的想象空间备兑策略持有股票的同时卖出看涨期权赚取权利金相当于增厚收益跨式策略同时买入看涨和看跌期权赌标的大幅波动不管涨跌都赚钱波动率交易通过期权定价模型估算“隐含波动率”在隐含波动率被高估时卖期权、被低估时买期权赚的是“波动率回归”的钱风险反转策略卖一侧期权买另一侧期权构建带方向性敞口的组合我自己的体会是期权量化是“二阶思维”的训练场你不仅要判断方向还要判断波动率的方向和形态。对新手而言期权不适合作为第一个量化品种但如果你已经把股票或期货做了半年以上强烈建议花时间研究期权它会打开全新的交易视角。2.4 ETF与指数普通人的量化起步最优解如果你觉得直接炒个股的数据处理太复杂、期货杠杆风险又太高ETF是指数型基金本质是一篮子股票的组合既可以像股票一样在交易所买卖又有基金分散风险的特点。ETF对量化入门者来说有几个其他品种不具备的优势不会踩雷个股黑天鹅买ETF相当于买了一揽子股票单一公司的财务造假、突发事件对组合的影响很小流动性好、冲击成本低规模大的ETF比如沪深300ETF、中证500ETF日成交额非常高回测结果和实盘结果之间的差异相对小可以做网格、定投、轮动等多种策略ETF非常适合做板块轮动、市值轮动这类中低频策略逻辑简单清晰适合新手练手我自己带过不少朋友入门量化第一年基本都是让他们在ETF上跑策略等理解了市场逻辑和策略回测的坑之后再上个股和期货。这一步稳扎稳打比一上来就冲高风险品种要靠谱得多。2.5 外汇与数字货币不同维度的“极速世界”外汇和数字货币放在一起说是因为它们的共同点比很多人都想象的多都是7x24小时交易外汇其实周日晚上到周五下午数字货币是全天都是高流动性市场都适合做趋势和套利策略。但它们的区别也很明显外汇市场是全球最大的金融市场日交易量超过6万亿美元主要参与者是银行、对冲基金和跨国公司。散户做外汇量化的劣势在于点差和隔夜利息成本高而且大多数零售外汇平台的报价质量、数据透明度和大资金渠道没法跟机构比。除非你有比较专业的信号源和数据否则不建议个人把外汇作为主要量化阵地。数字货币正好相反它的数据是完全公开的任何人都可以拿到毫秒级的完整订单簿数据且大部分交易所提供免费API。但问题也出在这里市场深度不稳定大行情来临时滑点极大策略回测时表现优异的策略实盘中可能因为流动性问题直接失效。我个人只有在做跨交易所套利或CTA策略时才会用到数字货币而且会严格控制仓位——因为它的波动率是传统资产的3-5倍。3. 四大盈利模式量化交易的“赚钱逻辑”3.1 趋势跟踪截断亏损让利润奔跑趋势跟踪是量化交易最经典、也最容易理解的策略类型核心逻辑是跟着市场的主要方向走上涨做多、下跌做空直到趋势反转才离场。它的理论基础是市场并不是随机游走的而是会呈现出趋势性特征——因为市场参与者并不是完全理性的信息扩散需要时间投资者行为存在羊群效应和锚定效应。这些行为金融学的偏差导致了价格在一定时期内会沿着某个方向惯性运动。趋势跟踪策略的经典实现包括双均线交叉金叉买入死叉卖出、唐奇安通道突破价格突破N日高点做多、海龟交易法则等。这些策略逻辑简单但难在执行和心理层面。关键参数是止损和止盈的比例关系。我常用的一招是“固定风险比例止损移动止盈”比如开仓后当亏损达到账户权益的1%时无条件止损平仓当盈利达到3%时把止损线上移到成本价附近保护已有利润。这样长期下来就实现了“截断亏损让利润奔跑”的理念。趋势跟踪策略最怕的是震荡行情——价格在一个区间内反复波动触发很多次开仓信号但每次都止损出局账号回撤看着吓人。所以做趋势跟踪必须搭配严格的资金管理和心理预期。3.2 统计套利赚“价格回归”的钱统计套利的赚钱逻辑和趋势跟踪完全相反趋势跟踪假设价格会延续统计套利假设价格会回归均值。它的核心思想是寻找两个或多个历史相关性极高的资产比如可口可乐和百事可乐的股票、沪深300股指期货和沪深300ETF、黄金和白银期货等。当它们的价差偏离历史均值时做空高的、做多低的押注价差最终会回归均值赚取回归的收益。配对交易是统计套利最简单也最实用的一种形式第一步找到高相关性的资产对比如期货市场里的豆粕和菜粕第二步用协整检验确认它们之间确实存在长期均衡关系第三步计算当前价差相对于历史均值的Z-score当Z-score偏离超过一定阈值比如2.5时开仓第四步当Z-score回归到0附近时平仓了结统计套利最难的两个环节一是找到真正协整而不是伪相关的资产对很多资产看似走势一致实际关系不稳定二是持仓周期不可控——你可能持有两天就回归了也可能持有两个月还在偏离期间可能面临巨额浮亏。很多人觉得统计套利“无风险”实际去做了才发现事情没那么简单。它赚的是“大概率回归”的钱但小概率的“不回归”一旦发生亏损是很惨重的比如2008年金融危机时大量统计套利基金因为价差极端偏离而巨亏。3.3 做市策略收“过路费”的生意做市策略的逻辑和开超市收过路费是的你在买一价排队等着买在卖一价排队等着卖赚的是买卖价差。买入价和卖出价之间的差价就是你的“过路费”。比如某只ETF当前买一价是3.500元卖一价是3.502元你同时挂买单和卖单各1000份。如果两边都成交了你瞬间赚了2分钱/份的价差——1000份就是20元扣除手续费后可能剩10元。一百万份就是1万元利润相当可观。但做市策略的真正难点在于库存风险控制你买入的资产如果在卖出前价格下跌你的库存就变成了亏损。所以做市策略的核心不是赚价差而是管理库存当库存过多时快速减仓当库存为负时迅速回补。做市策略是典型的高频交易对延迟要求极高。你需要在毫秒级别内响应市场变化需要专线连接交易所、高性能服务器、低延迟网络。对个人交易者来说做市策略基本不现实——真正赚到钱的做市商都是大型机构他们不仅速度快还能获得交易所的返佣优惠。3.4 多因子选股基本面与量价结合的价值投资多因子策略是目前国内量化私募中应用最广泛的策略类型核心逻辑是找到能持续有效预测股票未来收益的因子按照因子值对股票打分排序买入高分股票、避免低分股票。常见的因子类型包括因子类别含义实例价值因子股票是否被低估PE、PB、PS、股息率成长因子公司成长性营收增速、净利润增速质量因子盈利能力与安全ROE、毛利率、负债率动量因子价格趋势性过去3-12个月涨幅反转因子超跌反弹过去1个月跌幅波动率因子风险偏好5日/20日波动率多因子策略看起来简单实际执行中的坑很多因子数据需要清洗停牌、ST、极端值处理、因子需要中性化消除行业和市值噪音、因子之间可能存在多重共线性、因子有效性会衰减、策略容量和交易成本会侵蚀收益……任何一个环节处理不当回测曲线好看但实盘拉胯。不过多因子策略对个人入门者来说仍然是个很好的研究方向因为它的逻辑清晰、数据易得开源基本面数据就能跑、个股持仓周期长月度调仓对交易执行的要求不高适合在业余时间研究。4. 策略开发实操从选产品到Python代码落地4.1 用Python快速搭建第一套回测框架聊完了产品分类和盈利模式接下来是实操环节怎么用Python把一个简单的策略跑起来。我建议新手不要一上来就接触复杂的量化平台而是先用最基础的pandas numpy自己写一个简单的回测框架把“数据获取-信号生成-交易模拟-绩效评估”这条链路跑通再考虑使用QMT、vn.py、backtrader这类专业框架。一个最简单的回测框架至少包含以下组件import pandas as pd import numpy as np def fetch_data(symbol, start, end): # 这里用 tushare 或 akshare 等库拉取数据 # 此处略去具体实现 pass def generate_signals(df, short_window5, long_window20): # 双均线策略短期均线上穿长期均线时做多 df[short_ma] df[close].rolling(short_window).mean() df[long_ma] df[close].rolling(long_window).mean() df[signal] 0 df.loc[df[short_ma] df[long_ma], signal] 1 df[position] df[signal].diff() # 1表示开仓/加仓0表示保持-1表示平仓 return df def backtest(df, initial_capital100000): df[returns] df[close].pct_change() df[strategy_returns] df[position].shift(1) * df[returns] df[strategy_equity] initial_capital * (1 df[strategy_returns]).cumprod() return df这段代码的核心逻辑很简单用5日和20日均线生成交易信号模拟持仓收益最后得到策略净值曲线。虽然简陋但它包含了回测框架的所有基本要素。4.2 基于马尔可夫决策过程的策略优化思路如果你的策略已经跑通了简单的回测想更进一步可以了解一个量化进阶领域经常提到的概念离散时间的马尔可夫决策过程MDP。MDP提供了一种把交易策略建模成序贯决策问题的数学框架很多强化学习量化策略的基础就是它。简单理解MDP由四个要素组成状态当前市场情况、动作买入、持有、卖出、转移概率市场从当前状态转到下一个状态的可能性、奖励每次交易行动的盈亏。强化学习算法就是在这样的框架下通过不断试错来学习一个最优策略函数告诉你在某个状态下应该采取什么动作。class TradingEnv: def __init__(self, df): self.df df self.current_step 0 self.position 0 # 0空仓1满仓 self.cash 100000 self.holdings 0 def step(self, action): # action: 0卖出/空仓, 1买入/持有 current_price self.df.iloc[self.current_step][close] if action 1 and self.position 0: self.holdings self.cash // current_price self.cash - self.holdings * current_price self.position 1 elif action 0 and self.position 1: self.cash self.holdings * current_price self.holdings 0 self.position 0 next_price self.df.iloc[self.current_step 1][close] reward (self.cash self.holdings * next_price) - 100000 done (self.current_step len(self.df) - 1) self.current_step 1 return self._get_state(), reward, done使用MDP框架定义交易环境后可以用Q-learning、深度强化学习等算法来训练策略。不过要注意这类方法调参难度大、过拟合风险也比传统策略高做研究可以直接投入实盘需要非常谨慎。4.3 回测与实盘的“信任差距”我自己在回测中踩过最多的坑不是策略逻辑问题而是回测和实盘之间的“信任差距”。简单说回测跑出来的年化收益50%实盘只有20%这正常回测跑出来的夏普比率2.5实盘连0.5都不到那就有问题了。差距的主要来源有三个手续费和滑点没算足回测里手续费按万分之三收实际上你会遇到佣金、印花税、过户费、冲击成本加在一起比想象中高很多。我的做法是回测参数直接按实际成本的1.5倍算宁可少赚不可高估。未来函数用了不当时点的数据比如用今天的数据来产生今天的交易信号。最典型的坑是使用了整个数据集来计算均线或Z-score导致“偷看未来”。幸存者偏差回测选用的股票池包含了今天还在上市的公司退市的、被ST的都被剔除了回测结果自然会高出实盘平均水平。要减少这个差距最直接的办法是把回测周期拉长到包含一轮完整的牛熊周期用样本内数据选参数、样本外数据验效果实盘前至少跑一个月的模拟盘。4.4 一个完整的ETF轮动策略案例为了让你对整套流程有更直观的感觉我分享一个我指导新手朋友做过的ETF轮动策略。策略逻辑很简单选择5只主流ETF沪深300、中证500、创业板、黄金、债券每周五收盘计算每只ETF过去20日的收益选出收益最高的那只持有其余全部卖出。import akshare as ak import pandas as pd # 拉取ETF数据 etf_list { 510300: 沪深300ETF, 510500: 中证500ETF, 159915: 创业板ETF, 518880: 黄金ETF, 511010: 国债ETF } # 计算每只ETF的过去20日收益并轮动 def rotation_strategy(df_dict, holding_days20): returns {} for code, df in df_dict.items(): returns[code] df[close].iloc[-1] / df[close].iloc[-holding_days] - 1 best_etf max(returns, keyreturns.get) return best_etf # 每周一次调仓持有过去20日涨幅最大的ETF当市场风格明显时这种策略能抓住主线行情但当市场板块快速轮动时它会频繁挨打——上周买这个、下周换那个来回打脸。后来我们加入了一个“相对强度阈值”的过滤条件只有当第一名ETF的20日收益超过某个数值比如2%时才买入否则持有债券ETF。这样大大减少了无效调仓次数年化收益略有下降但回撤降到原来的三分之一。这个案例想说明的是策略的“好”或“差”很大程度上取决于你对产品特性的理解深度。轮动策略本质是“动量”应用它的前提是市场存在板块间的强弱持续性。理解这个前提你才会自然地想到要加过滤条件而不是盲目调整参数。5. 常见问题排查与量化交易避坑指南5.1 新手常见问题速查表问题常见原因解决办法回测收益很高但实盘不赚钱手续费/滑点设置过低、未来函数、交易信号延迟用1.5倍实际成本回测严格避免用到未来数据策略运行一段时间后回撤变大市场风格切换策略因子失效增加多策略/多品种分散设定最大回撤熔断线前向成交还是后向成交的坑回测引擎撮合方式不对用当天收盘价成交却用了次日信号信号产生与成交必须同一天避免信号穿越数据质量导致策略振荡复权数据有误、停牌期间产生虚假信号使用前复权数据过滤停牌时段交叉验证数据源仓位管理做不好忽略了产品杠杆差异期货按“固定风险比例”开仓而不是按资金百分比开仓策略过拟合参数太多、回测周期太短减少参数数量增加样本外测试做参数稳健性分析5.2 数据获取与质量检查心得量化策略里有一句话我觉得特别实用“Garbage in, garbage out”——数据质量决定了策略质量的99%。新手最容易忽略的一个问题是复权。A股股票经常分红除权如果你用的价格没有复权除权日当天价格会出现一个巨大跳空策略会把这个跳空当作真实的价格变动产生错误信号。一定要用前复权价格做回测。另一个容易踩的坑是停牌处理。A股停牌股票当天没有交易很多数据接口会把最后一笔价格保留下来看起来像价格没变实际上无法成交。回测时如果不把停牌交易日过滤掉你的策略可能“买入”了根本无法买入的股票。检查数据质量最快的方法把价格数据画出来肉眼看看有没有明显异常——跳空缺口、负价格、成交量骤降等。别嫌土这一步能省掉后面大量的排查时间。5.3 风险管理量化选手的“保命符”不管做什么品种、用什么策略风控永远是第一位的。分享几条我用真金白银换来的体会单笔最大亏损不超过总资金的2%比如你的账户是10万单笔止损最大亏损控制在2000元以内。这样即使连续亏20次你也只亏40%还有翻本的本钱。如果单笔亏损5%甚至更多连续几次就把账户干穿。期货产品以“风险预算”而非“资金用量”计算仓位同样10万资金做螺纹钢和做黄金的仓位应该完全不同因为两者的波动率差很多。我习惯用“止损金额风险预算再反推手数”的方式开仓而不是简单按“10万资金买80%仓位的货”。设定日/周最大回撤熔断我今天亏超过2%就停止交易本周亏超过5%就全部清仓休息一周。这和“止损”的区别在于它控制的是策略执行层面的“状态风险”而非单笔损失。5.4 心态管理与策略迭代的长期主义最后聊点“软”的东西。量化交易看似是纯理性的工作但实际操作者的心态波动一点不比主观交易少——策略连续回撤时你依然会怀疑自己依然会手痒想“手动干预一下信号”。我自己的体会是量化交易的核心不是找到一个“永远赚钱”的策略——这世界上不存在这样的东西。它是一个不断迭代、不断实验、不断验证的系统工程。每个策略都有生命周期市场结构变了、参与者变了旧策略就会失效。你需要做的是形成一套“策略研发-回测验证-小仓位实盘-持续跟踪-迭代更新”的流水线让策略的更新速度跑赢市场的演变速度。有一句话我一直记着“在量化这个行当里活得久比赚得快重要一万倍。”你不需要每周都赚钱你只需要控制住回撤、保证自己不被迫离场就能等到属于你的那一段趋势行情。6. 写在最后的个人体会整理这篇文章的时候我回想起自己刚开始接触量化交易时的那段日子——不懂产品、不懂市场结构满脑子都是“写个策略赚大钱”的幻想。后来才慢慢明白一个朴素的道理你对交易产品的理解程度决定了你策略的天花板和下限。同一套价格数据放在股票上可能意味着“长期持有的价值投资”放在期货上可能是“短期趋势的博弈”放在期权上可能是“波动率的供需定价”。你用什么产品承载策略就决定了你会面临什么样的市场规则、资金容量和风险边界。选错了产品再好的策略逻辑也会被摩擦成本、交易规则和市场结构拖垮。我也越来越倾向于认为做量化产品和市场的研究要排在策略和代码之前。多花时间搞明白你正在交易的东西到底是什么比多学一个数学公式、多调一个参数有用得多。方向对了后面的路才值得走。希望这篇文章能帮你把“量化交易”的第一步踩实。这几个方向上如果有具体的疑问欢迎随时交流——毕竟我自己也是在这些问题上踩了无数个坑才慢慢走过来的。