
量化实习的编程门槛到底在哪
很多想踏入量化圈的学生,一打开招聘要求就懵了。上面写着“精通Python、C++,熟悉数据结构与算法,有机器学习经验优先”。看起来像是要招一个架构师。实际情况是,第一份量化实习对编程的要求,远比你想的接地气。
量化交易岗位大致分两类。一类是策略研究,一类是系统开发。策略研究岗的编程要求,核心是能用代码把想法快速验证出来。系统开发岗才需要处理高并发、低延迟的工程难题。第一份实习多半从策略研究助理做起,编程水平只要跨过几个硬门槛就够了。
硬门槛一:能用pandas做数据清洗
金融数据从来不是干净的。行情数据里有停牌缺口、除权除息没复权、涨跌停时成交量失真。你要做的第一件事,是把原始tick或者分钟数据整理成能回测的格式。

这个环节不需要你手写排序算法。pandas的groupby、resample、merge、fillna这些操作要熟练到肌肉记忆。遇到时间戳对不齐,知道用asof merge或者reindex。看到某只股票某天数据缺失,第一反应不是删掉,而是判断是停牌还是数据源问题。
举个真实的实习面试题:给你一份A股全市场2018年到2023年的日线数据,要求计算每只股票过去20天的动量因子,并且剔除掉上市不满60天的新股。这道题考的不是算法,是你对数据对齐和截面处理的理解。
import pandas as pd
# 假设df有date, code, close, volume字段
df = df.sort_values(['code', 'date'])
df['momentum_20'] = df.groupby('code')['close'].pct_change(20)
df['listed_days'] = df.groupby('code').cumcount()
df = df[df['listed_days'] >= 60]
这段代码写不出来,第一轮技术面就挂了。写得出来,但不知道为什么用groupby而不是直接rolling,也会被追问。
硬门槛二:理解回测框架的底层逻辑
很多新人以为会调backtrader或者vnpy的API就叫会回测。面试官让你手写一个简单的事件驱动回测引擎,立马露馅。
第一份量化实习不要求你从零搭建工业级回测系统。你要清楚的是:回测里每一根K线走完,策略收到什么信号,订单怎么撮合,手续费和滑点怎么扣。这些逻辑搞不清楚,写出来的策略夏普比率再高也是自欺欺人。
一个典型的坑是未来函数。用当日收盘价计算信号,又用当日收盘价成交。回测曲线漂亮得像印钞机,实盘一跑就亏。编程水平到位的标志,是你能在代码里主动规避这种陷阱。
# 错误做法:信号和成交用同一根K线
signal = data['close'] > data['close'].rolling(20).mean()
data['position'] = signal.astype(int)
data['return'] = data['position'] * data['close'].pct_change()
# 正确做法:信号滞后一根K线执行
data['position'] = signal.shift(1).astype(int)
知道shift(1)为什么必要,比会写一百行复杂策略更值钱。
硬门槛三:C++不是必须但要有概念
股票中低频策略实习,Python足够了。期货高频或者做市方向,C++是硬指标。第一份实习如果冲着高频去,至少要能读懂C++代码,知道虚函数、内存池、无锁队列大概在干什么。
不要求你手写一个订单簿撮合引擎。面试官会问你:为什么高频交易用C++而不用Python。你要能说出GIL、解释器开销、内存局部性这些关键词背后的实际影响。哪怕没写过生产级C++,能把Python调用C++扩展的流程说清楚,也算过关。
硬门槛四:熟悉交易接口和数据结构
量化实习日常工作中,很大一部分时间在和交易所API、行情订阅、订单管理打交道。你要知道什么是快照行情、逐笔委托、逐笔成交。股票和期货的接口差异在哪。
编程水平体现在:给你一个CTP接口文档,你能在半天内写出一个能连上模拟环境、订阅行情、打印tick数据的脚本。不需要多优雅,能跑通就行。这个能力背后是对网络协议、异步回调、数据结构的基本功。
编程之外的隐形要求
量化实习面试有个特点:编程题往往结合金融场景。让你写一个计算最大回撤的函数,或者实现一个简单的均值回归信号。纯考LeetCode hard的团队也有,但第一份实习更看重你能不能把金融逻辑翻译成代码。
金融直觉比刷题重要。知道为什么期货主力合约要换月,换月时价格跳空怎么处理。知道股票停牌复牌后动量因子会失真。这些细节写进代码里,才叫量化编程。
达到什么程度可以投简历
给你一个明确的标准。能独立完成以下任务,就可以投第一份量化实习:
用Python从tushare或者akshare拉取股票日线数据,做复权处理,计算常见技术因子。
用pandas实现一个简单的双均线策略回测,正确计算手续费、滑点、夏普比率、最大回撤。
读懂一个开源回测框架的核心模块,能修改其中的撮合逻辑。
用C++或者Python实现一个限价订单簿的基本操作,知道插入、删除、修改的时间复杂度。
这些任务都不需要天赋异禀。认真刷两本实战书,动手写三个完整策略,编程水平就到位了。量化实习要的是能干活的人,不是算法竞赛金牌。把基础打扎实,第一份实习比你想象的近。