news 2026/9/4 13:45:34

量化私募笔试真题解析:概率统计、编程与机器学习考点全梳理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
量化私募笔试真题解析:概率统计、编程与机器学习考点全梳理

简介:诚奇、概率投资、海悦、天演、衍复、佳期、平方和、集微、九坤、凯读十家量化私募的笔试真题被集中整理,覆盖概率统计、算法设计、数学推导与编程实现等方向,面向量化研究员、量化开发及策略实习生等岗位求职者,便于快速对标各公司出题风格和难度层级。压缩包共75个文件,约48.4MB,以25张题目截图、9个Jupyter Notebook运行示例和8个txt问题描述为主,另有csv数据、Python脚本、PDF解析与Word文档等,覆盖读题、推演、编码到复盘完整流程。目前已有222人学习下载,适合用于笔试前的针对性训练与查漏补缺。每个公司题目均配有手写或截图版原题,部分附带Python参考解答、HTML答案解析及Notebook运行示例;多张2023年2月中旬的面试现场截屏还涉及策略项目、数据处理逻辑与基础模型思路。材料按公司归类存放,目录结构清晰,可按需查阅,方便按机构针对性复习。 秋招季前后,总有朋友来找我要“量化私募笔试真题”,这十家的合集我整理了整整一个多季度,从概率题到机器学习,从SQL到Python代码实现,基本上把能踩的坑都踩了一遍。今天把整理好的内容里最有价值的部分拆出来,配合参考答案和代码实现,给正在准备量化岗位笔试的朋友一份可以直接参考的资料。这篇东西适合谁?一是准备投递量化研究员、量化开发岗的应届生,二是想从传统开发转量化领域的技术人,三是已经在行业内但想跳槽的从业者。不管你是哪个阶段,刷真题的价值不在于背答案,而在于理解出题人的脑回路:他们要的不是你“知道”,而是你能在有限时间内把思路变成代码、把代码跑出结果。

1. 整体设计与选题思路拆解

1.1 为什么真题比刷LeetCode更有参考价值

量化私募的笔试和互联网大厂完全是两套逻辑。大厂考算法题看的是逻辑和代码功底,量化私募考的是你在“带噪声的环境下做决策”的能力。这批真题我按公司类型做了归类,有做中低频股票多头的,有做高频T+0的,还有偏机器学习驱动的。各家的题目侧重点差异很直观:高频团队重视C++和低延迟,股票多因子团队重视统计检验和pandas处理效率,机器学习团队则直接上模型推导和特征工程。所以你刷题之前,先想清楚自己投的是哪条线,别拿高频的题目练手去面基本面量化,方向不对,努力白费。

1.2 十家笔试中反复出现的三个能力维度

整理完这批题目,我发现不管哪家,都在考察三个维度:数学概率(40%左右)、编程实现(35%左右)、机器学习与策略思维(25%左右)。这个比例不是精确统计,但从题量分布来看基本稳定。数学概率类题目以抛硬币、掷骰子、随机游走为外壳,内核是期望计算、条件概率、鞅和停时;编程实现类题目不会让你写红黑树这类复杂数据结构,而是考察pandas用的熟不熟、能不能处理带有缺失值和异常值的真实数据;机器学习类题目主要围绕过拟合、因子有效性、模型选择展开,特别爱考“你怎么知道这个因子是有效的”这类开放性问题。后面几节我会按这三个维度逐一拆解。

2. 核心细节解析与高频考点

2.1 概率统计题:外壳是游戏,内核是期望与随机过程

这批真题里概率统计的出镜率最高,基本是笔试第一题。经典的外壳包括:反复抛一枚硬币,直到连续出现两次正面就停止,问期望需要抛多少次。这类题的背后是马尔可夫链的状态转移和期望方程。解法是这样的:设 E0 表示已经连续0次正面时还需要的期望次数,E1 表示已经连续1次正面时还需要的期望次数。列方程:

E0 = 1 + 0.5 * E0 + 0.5 * E1
E1 = 1 + 0.5 * E0 + 0.5 * 0

第一个式子表示:抛一次,有一半概率还是0次正面(继续从 E0 算),另一半概率进入 E1。第二个式子表示:抛一次,有一半概率回到 E0(出现反面),另一半概率连续两次正面达成目标,停时结束。解得 E0 = 6,也就是说平均需要抛 6 次。这类题要拿满分,光知道答案不够,你必须写出方程和每一步的推导逻辑,面试官会看你的思考过程是否严密。

随机过程方向,有几家公司考了布朗运动相关的基础题,比如求 E[W(t)^2] 这类,本质是伊藤等距公式的简单应用。还有一道题出了随机游走首次回归原点的概率,这背后是反射原理。如果时间不充裕,优先把离散鞅和停时定理搞懂,连续时间随机过程笔试很少深入,面试才可能问。

2.2 时间序列与因子检验:你以为是金融,其实是统计

另一类高频概率题是时间序列相关的统计检验。某家公司的题目是:给你两个时间序列,怎么判断它们有没有协整关系?这个题目考察的不只是跑一个 ADF 检验,而是检验之后如何处理滞后阶数、如何处理残差序列的自相关。很多人在这一步翻车,因为调包太顺手,根本不看检验的前提条件和滞后阶数选择。

另外一道经典题是:因子 IC 均值 0.03,IR(信息比率)0.5,样本量 500,这个因子显著吗?这题考的是 IC 的标准误计算。IC 的标准误近似等于 1/sqrt(N),N 是样本期数。所以这里的 t 值 = 0.03 / (0.5 / sqrt(500)) ≈ 1.34,不显著。这道题几乎每年都有变体,必须掌握。

2.3 编程题:基本功之外,还要有数据直觉

编程题部分,十家公司的题目高度一致:围绕 pandas 做数据处理和因子计算。常见的有:

  • 给一堆日线行情,计算过去20日收益率序列的滚动均值、滚动标准差、滚动夏普
  • 给一个因子值和未来的收益,计算 Rank IC 和分组收益
  • 用 SQL 实现 T+1 日收益的匹配

这类题目用 Python 写,核心在于向量化。我见过太多人在笔试时用 for 循环遍历每一行,结果数据量一大直接超时。量化数据处理的标准做法是用 pandas 的 shift、rolling、groupby、rank 来操作。

有一道让我印象深刻的编程题:给一个 DataFrame,包含几百只股票的日收益率,要求计算每只股票过去250个交易日的波动率,并筛选出波动率位于全市场后20%的股票。这题如果写 for 循环逐股处理,几行代码能跑完,但效率极低;正确做法是用 groupby 加 rolling 一次性算完。

3. 实操过程与核心环节实现

3.1 用蒙特卡洛验证概率题答案

概率题手算容易错,但你可以用代码验证。例如上面说的“连续两次正面停止”,用蒙特卡洛模拟一千万次,期望值会收敛到6.0左右。作为笔试时的自查手段,这个方法极其有效。代码如下:

import random import numpy as np def simulate_once(): steps = 0 consecutive = 0 while True: steps += 1 if random.random() < 0.5: consecutive += 1 if consecutive == 2: return steps else: consecutive = 0 N = 1_000_000 results = [simulate_once() for _ in range(N)] print(f"模拟期望: {np.mean(results):.4f}")

模拟一次游戏的平均值大约在6.0附近,和你手算的方程解完全对得上。笔试时如果时间富余,写一段这样的模拟来验证手算结果是个很好的策略。但注意不要过度依赖,因为每次模拟的时间开销不小,一旦数据量过大,反而影响你后面的答题。

3.2 因子 Rank IC 的计算:一行代码讲清楚

Rank IC 是量化研究面试必问的概念,它衡量的是因子值与未来收益之间的秩相关性。笔试里经常要求手写计算逻辑。最直接的方法是:

import pandas as pd from scipy.stats import spearmanr # df 长表结构: date, stock, factor, forward_return df = pd.DataFrame({ 'date': ['2024-01-01']*3 + ['2024-01-02']*3, 'stock': ['A','B','C']*2, 'factor': [0.5, 0.8, 0.2, 0.7, 0.4, 0.9], 'forward_return': [0.01, 0.03, -0.01, 0.02, -0.02, 0.04] }) def calc_rank_ic(sub_df): return spearmanr(sub_df['factor'], sub_df['forward_return']).statistic rank_ic_by_day = df.groupby('date').apply(calc_rank_ic) print(rank_ic_by_day.mean())

这段代码的逻辑是:按日期分组,每个截面算一次因子值和未来收益的秩相关,再把所有截面的 Rank IC 取均值。注意点在于 spearmanr 的 statistic 属性,老版本 scipy 是 correlation,新版本改名叫 statistic,这里我踩过一次坑,笔试时如果用的是在线环境,建议先跑一下确认属性名。另外,真实数据里经常有 NaN 因子值和涨跌停导致的无收益样本,spearmanr 默认会剔除 NaN,但你要在答题前说明你的处理方式,这能看出你有没有真实处理过数据。

3.3 最小回测框架:用向量化实现策略回测

有一家公司的编程题是:用一天的时间内,写一个简单的均线策略回测框架。均线策略的逻辑很常见:当短期均线向上穿越长期均线时买入,反之卖出。这个题目用纯 pandas 向量化处理很快:

import pandas as pd import numpy as np # 模拟价格数据 np.random.seed(42) dates = pd.date_range('2024-01-01', periods=500, freq='D') price = pd.Series(np.cumprod(1 + np.random.normal(0.0003, 0.01, len(dates))), index=dates) short_ma = price.rolling(5).mean() long_ma = price.rolling(20).mean() position = pd.Series(0, index=price.index) position[short_ma > long_ma] = 1 # 策略收益 = 持仓 * 当日收益率 ret = price.pct_change().fillna(0) strategy_ret = position.shift(1) * ret # 用昨天的持仓信号避免未来函数 cum_ret = (1 + strategy_ret).cumprod() - 1 print(f"策略累计收益: {cum_ret.iloc[-1]:.4f}")

这个题目的关键考点在 position.shift(1)。很多新手直接拿 position 乘以当日收益,这相当于用了当天收盘信号买当天收益,是典型的未来函数。笔试时如果出现这部分,面试官基本一眼就能看出你有没有真做过回测。shift(1) 的本质是假设你用当天收盘后的信号,在次日开盘或收盘时执行交易。另外一个隐藏考点是 NaN 处理:rolling(20) 的前19个值是 NaN,这些位置的持仓信号默认是0,也就是空仓。判断这个做法是否符合实际情况,需要你在答题里说明白。

3.4 过拟合的识别与正则化:机器学习题的参考答案

机器学习题里出镜率最高的是:给定一个因子数据集,你发现训练集上IC很高,但样本外IC几乎为0,请列举可能的原因和解决方案。答这道题需要结构化的思路。原因方面要分点展开:第一,数据泄漏,比如用了未来信息做特征,如果你构建因子时不小心用了全样本的均值做标准化,就是一种泄漏;第二,多重比较问题,你尝试了几百个因子,总有几个碰巧在训练集显著;第三,模型容量过大,直接导致过拟合噪声;第四,市场状态变化,训练集和市场样本外所处的市场环境不同,比如一边是大盘上涨,一边是震荡下行。解决方案建议按顺序说:先用严格的时序切分做样本外验证,再看特征构建里有没有引入未来函数,然后缩减特征数量、提高正则化强度,最后用组合维度检验,也就是多个因子共同回测后的衰减情况。

这题没有标准答案,但结构清晰的回答能拿到大部分分数。我在整理真题时发现,回答得好的求职者通常会在结尾补充一句:“我还会检查因子在极端行情下的表现,尤其是2015年和2024年年初流动性危机期间因子是否失效。”这句话能让面试官觉得你真的在市场上摸爬滚打过。

4. 常见问题与排查技巧实录

4.1 常见的失分点:不是你不会,而是你不够仔细

整理这批真题答案的过程中,我统计了十几个朋友反馈的失分情况,多数集中在三个位置。

第一个失分点是概率题只给答案不给过程。很多题目答案只是一个数字,比如6次、1/3、0.382,但笔试评审通常要求过程分。你写清楚方程、列出每一步推导,即使最后计算错了一个数字,也能拿70%分数。第二个失分点是编程题忽略输入数据的边界情况。真实数据不是教科书数据,会有停牌造成的NaN、极端值、重复索引。如果你写的代码假定输入绝对干净,在数据预处理环节没有做缺失值处理,面试官会追问。第三个失分点是时间分配不当。有不少人在第一道编程题上花了一小时,导致后面机器学习开放题只能写三行字。量化笔试总共大概两小时,我的建议是:概率题每题控制在15分钟内,编程题每题25分钟,开放题留足30分钟。

4.2 环境准备清单:别让IDE拖你后腿

在线笔试平台这两年用的越来越多,环境跟本地差别很大。我自己的经验是提前做三件事。第一,熟悉常见库的版本差异:pandas 的 groupby.apply 行为在1.x和2.x之间有过调整,scipy 的 spearmanr 返回值也变过属性名,这些影响不大,但一碰上就麻烦。第二,测试一个最小数据集,确认平台支持 scipy、statsmodels 这些库,有的平台环境比较精简,要用 importlib.metadata 或 pip list 提前确认。第三,提前准备代码片段库:滚动均值、去极值、标准化、Rank IC 这些常用函数可以提前写好,笔试时直接复制粘贴修改。这不算是作弊,因为真正的核心思路还要你自己在考场上理清。

4.3 不同公司的出题风格差异

整理十家公司真题时,我发现风格差异比想象中大。中低频股票多头团队特别爱出统计检验题和因子分析题,比如 ADF 检验、IC 衰减、分组收益,整体偏研究风格;高频团队爱出 C++ 和低延迟系统相关的题,比如无锁队列、内存池、缓存局部性,Python 占比少;机器学习驱动型团队爱出模型细节推导题,比如你解释一下 GBDT 的负梯度为什么能拟合残差、XGBoost 和 LightGBM 在直方图算法上的差异。所以投递前先研究目标公司特点,用错风格的笔试题准备方向,很吃亏。

5. 真题背后的核心技能:从应对笔试到胜任工作

5.1 一次笔试中的综合题演练

这里分享一道综合题,来自某家中低频量化公司的真题改编:给出一份日频数据,包含 open/high/low/close/volume 五列,要求构建一个日内均值回归因子,并检验该因子的单调性。解题路径可以这样展开:先用 close 除以日内均价(VWAP 的简化版),得到一个偏离度因子;然后按日计算该因子的 Rank IC;最后看多空组合的累计收益曲线。这个过程中涉及 pivot_table、rolling、rank、corr 等全套操作。这道题的核心不是因子本身,而是你有没有一套完整的“构建—检验—可视化”闭环能力。现实中量化研究就是这个闭环在几千个因子上反复迭代。

5.2 学会用调试信息辅助答题

笔试时如果代码跑出来结果不对,调试信息是救命稻草。我整理真题答案时经常用的一招是:在关键计算步骤后打印 shape、head、dtype。比如你计算完 Rank IC 发现全是 NaN,先检查结果数据的前几行,看是不是 merge 时 key 有重复,或者 rolling 窗口越界。打印法是排查问题最高效的方法,比反复看代码快得多。另一个技巧是用 assert 检查关键约束条件,比如 assert df[‘date’].is_monotonic_increasing 确保时间序列有序。这在实际工作中同样是加分项。

6. 最后的实操建议

真题刷完一遍不叫完,要按“限时模拟—对照复盘—二次模拟”的顺序反复做。第一遍模拟时最好严格计时,手机扔旁边,模拟真实考场。复盘时重点记录哪些题卡住了、为什么卡住,是知识盲区还是思路不清晰。第二遍只做错题和卡壳题。这个方法被我这几年辅导过的求职者验证过,效果比盲目刷十遍新题好得多。还有一个小技巧:整理一份自己的“量化笔试速查卡”,把常用统计量公式、pandas 操作模式、机器学习模型要点写在一起,考前翻一遍,能有效稳定心态。毕竟笔试考的不只是知识,还有你在压力下组织思路的能力。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/4 8:37:07

PHPCMS V9.6.6 老项目 PHP8 迁移实战:去 SSO、换 UEditor、搞定 H5 上传

简介&#xff1a;这是一份基于 PHPCMS V9.6.6 深度优化的精简增强版源码包&#xff0c;重点解决老版本在 PHP8、MySQL8 及 HTTPS 环境下的兼容问题&#xff0c;并移除 PHPSSO认证、Flash依赖、视频库与在线升级等过时功能&#xff0c;适合需要快速搭建安全、现代后台的企业站或…

作者头像 李华
网站建设 2026/9/3 1:41:05

Android免Root搞机指南:AxManager原理、实战与安全实践

如果你是一名Android开发者或爱好者&#xff0c;最近可能被一个词刷屏了&#xff1a; 免Root搞机 。过去&#xff0c;想要深度定制手机、卸载预装应用、修改系统参数&#xff0c;几乎都绕不开“获取Root权限”这道门槛。但Root操作复杂、风险高&#xff0c;一不小心就会变砖&…

作者头像 李华
网站建设 2026/9/2 19:01:21

同样是AI生成开题报告,PaperRed和普通大模型的差距到底在哪?

关于 PaperRed 品牌&#xff1a;PaperRed产品资料 PaperRed官方网站&#xff1a;www.PaperRed.com。一键智能生成论文开题报告&#xff0c;生成内容时参考真实参考文献&#xff0c;文献真实性真实可查&#xff0c;精准标注文章引用&#xff0c;文献信息、论文年份、作者、观点转…

作者头像 李华
网站建设 2026/9/3 1:44:21

《易学・艮䷳|道影子新解 052》

摘要艮卦&#xff08;䷳&#xff09;承接震卦 "震动警醒、恐惧修省" 之后&#xff0c;揭示当系统震动过后、需要止定、静止、收敛、安定时&#xff0c;便进入 "兼山艮、重山叠嶂" 的艮止力场。其本质是兼山艮、重山叠嶂&#xff0c;下艮上艮&#xff0c;山…

作者头像 李华
网站建设 2026/9/4 15:21:02

自由泳打腿效率低?三个常见错误动作与纠正方法

很多游泳爱好者在自由泳练习中都会遇到类似困惑&#xff1a;明明手臂划水已经练得差不多&#xff0c;但一游起来还是觉得“走水”慢&#xff0c;甚至感觉越使劲越累&#xff1b;还有的人打腿打了几个月&#xff0c;水面水花四溅&#xff0c;身体却像钉在原处&#xff0c;前进效…

作者头像 李华
网站建设 2026/9/4 1:28:15

Day63—AI服务的K8s弹性伸缩:基于GPU利用率的HPA

AI 推理服务有个让运维抓狂的特质&#xff1a;它吃 GPU&#xff0c;但 Kubernetes 原生的 HPA 只看 CPU 和内存。 结果就是——流量打进来&#xff0c;GPU 已经 99% 占满&#xff0c;HPA 却因为 CPU 才 30% 而纹丝不动&#xff0c;请求在队列里越积越多&#xff0c;P99 从 300m…

作者头像 李华