量化私募笔试真题高频考点解析:概率统计、衍生品定价与Python编程实战

发布时间:2026/10/18 17:50:15
量化私募笔试真题高频考点解析:概率统计、衍生品定价与Python编程实战 简介一份覆盖诚奇、概率投资、海悦、天演、衍复、佳期、平方和、集微、九坤、凯读十家国内活跃量化私募的笔试真题汇总面向量化研究员、量化开发、策略实习生等岗位求职者用于快速对标各家公司出题风格与难度层级。包体共75个文件压缩包48.4MB以png/jpeg原题截图、py与ipynb参考代码、docx/pdf答案解析为主要类型另有csv数据文件、html说明等辅助材料按公司分目录存放清晰易检索。内容涉及概率统计、算法设计、数学推导、编程实现等常见方向部分题目配有answer.py、answer.html及Jupyter Notebook运行示例便于对照验证解题思路多张2023年2月中旬的面试现场截屏覆盖策略项目问答、数据处理逻辑与基础模型思路可帮助求职者感知真实考察节奏。目前已有257人学习这份汇总适合系统备战量化私募笔试时使用。1. 准备工作这套资源能带给你什么准备量化笔试的人基本都体会过开盲盒的感觉简历过了卷子发下来才发现私募真题的考点和你平时刷的LeetCode完全不在一个频道。这套资源整理了十家主流量化私募的笔试真题覆盖概率统计、衍生品定价、机器学习与Python编程四个模块每道题附参考答案和可运行的Python实现随机种子、参数边界、前视偏差这些坑都已踩平。适合正在准备校招或社招笔试的求职者也适合想搞清楚头部机构到底考什么、怎么筛人的转行开发者。先拿它给自己定位再决定往哪使劲比闷头刷题高效得多。2. 题型分布与考察逻辑头部量化私募到底在筛什么人把十套卷子放在一起看第一感受是“杂”第二感受是有规律的“杂”。这些机构的笔试通常不区分岗位方向统一发同一张卷子考察面覆盖数理基础、金融直觉和工程能力三大类。我在对照参考答案做归类时一个明显体感是概率统计和衍生品定价出现频率最高编程题出现在中后段但分值权重不容小觑。下面按三个高频模块展开拆一下。2.1 概率统计出题频率最高的送分板块概率统计是量化笔试里最“厚道”的部分因为题型高度可预测翻来覆去就那几类条件期望、常见分布的矩、假设检验、随机变量变换。其中条件期望尤其是正态分布截断期望出现频率高到可以当作必考题来准备。举个例子某家头部量化私募出过这样一道题X服从标准正态分布求E[X | X 1]。这道题考察的不是复杂推导而是能不能立刻写出截断正态的条件期望公式。标准做法分四步写出截断后的密度函数 f(x | X 1) φ(x) / (1 − Φ(1))其中φ是标准正态密度Φ是累积分布函数把期望积分写出来E[X | X 1] ∫₁^∞ x·φ(x) dx / (1 − Φ(1))利用 φ(x) −x·φ(x) 的性质积分结果直接是 φ(1)代入 φ(1) ≈ 0.24201 − Φ(1) ≈ 0.1587得到答案约 1.525。这类题丢分最惨的不是不会推而是Φ(a)和φ(a)混写、正负号看错。参考答案里把每一步的中间表达式都保留了就是为了在复盘时能精准定位到哪一步出了问题。我在刷题阶段吃过一次亏直接把 E[X | X 1] 套成 E[X | X 0] 的结论结果差了一大截后来养成习惯先写条件密度再积分才不容易错。假设检验也是常规考点常见问法给出一段日收益率序列要求检验均值是否为0。做法是把 t 统计量算出来t mean / (std / sqrt(n))再和临界值对比。题目不会让你查表通常会直接给出显著性水平对应的临界值重点考察的是双尾还是单尾的边界判断。参考答案在这类题后面补了scipy的验证代码跑一遍就能对上卷面答案。2.2 衍生品定价拉开差距的硬核模块衍生品定价是量化笔试里最不划水的部分通常以一道15分钟的大题形式出现有时直接占卷面总分的五分之一。按十套卷子的出题重复度来看有三种考法基本锁死第一种是Black-Scholes公式计算欧式期权价格给出现货价格、行权价、无风险利率、到期时间和波动率五个参数直接套公式。这种题难在数值计算不能出错尤其是d1和d2的正负号。d1 (ln(S/K) (r σ²/2)T) / (σ√T)d2 d1 − σ√T中间哪一步符号弄反结果就偏出去一两块钱。第二种是蒙特卡洛模拟验证BS定价结果。这类题的考点不在模拟本身而在“解释误差来源”有限样本导致的抽样误差、离散化步长、随机数质量三个点各占一部分。参考答案的做法是固定随机种子把模拟次数提到10万次以上再用BS闭式解作为基准做对比。第三种是二叉树定价。给上涨因子u、下跌因子d、无风险利率R先算风险中性概率 p (R − d) / (u − d)再倒推期权价值。十套卷子里有三套出现过二叉树虽然频率不如前两种但一旦出现就是整道大题的最后一问答不出前面也拿不满。把三个模块的考法汇总一下大概是这样的观察模块常见题型考察频率概率统计条件期望、常见分布、假设检验高频衍生品定价BS公式、蒙特卡洛、二叉树高频机器学习回归推导、偏差方差、正则化中频Python编程数据处理、算法实现、最小回测中高频值得注意的是纯数学推导题占比没有想象中高真正卡人的是“会用工具”的题。有几套卷子的编程题直接要求用Python实现一个简单的回测逻辑这就是下一节要展开的。2.3 机器学习与编程被低估的第三极很多从互联网转量化的人会误判编程题的难度——以为会刷LeetCode就够实际上完全不是一回事。量化私募笔试里的编程题更侧重数据处理和统计实现LeetCode那种纯算法题占比很低。具体来说出现过这些考法用pandas清洗含缺失值的行情数据并计算滚动均值实现一个简单线性回归并返回系数和残差平方和把分钟线数据重采样成日线写一个函数计算两个时间序列的相关性并做显著性检验。这些题目不需要你精通算法但要求你对numpy和pandas的API足够熟能在一张白纸上快速写出可运行的代码。机器学习问答题也经常混在编程题里出现。常见的问题包括Ridge和Lasso的区别、随机森林与XGBoost的差异、如何防止过拟合。参考答案的答法值得学先说结论再给目标函数最后落到交易场景。比如回答Ridge和Lasso区别先说Ridge是L2正则、Lasso是L1正则再写出两者的损失函数差异最后补充一句“因子回归里常用Lasso做特征选择Ridge更适合处理共线性高的因子集”。从整体策略上说编程题的平均分值占比约三成但实际手写代码的题目集中在数据处理和基础统计实现而不是复杂算法。这个信号说明复习重点应该放在pandas的熟练度上而不是沉迷刷难题偏题。3. 参考答案的拆解逻辑推导题、编程题、问答题各有各的套路这套资源真正有价值的地方不是题目本身而是参考答案的组织方式。我对比过市面上流传的零散真题大部分只有题目和最后结果中间推导过程全被省略。这套参考答案把每道题都拆成了三层先列已知条件和目标量再写中间计算过程最后给代码验证。这样的结构刚好对应笔试阅卷时的采分点。3.1 推导题的四步拆解法从读题到出结果针对统计和衍生品推导题参考答案采用的标准动作可以总结为四步。第一步把题干参数用符号列出来比如S100、K100、r3%、T1、σ0.2全部写在草稿纸顶部避免读题读到后面忘了前面。第二步判断模型类型欧式看涨用BS闭式解路径依赖或奇异期权用蒙特卡洛离散步长用二叉树。第三步先算中间量再算最终结果。第四步验算。以BS公式那道经典题为例参数是S100、K100、r3%、T1年、σ0.2。参考答案先算d1 0.25再算d2 0.05查正态分布表得到N(0.25)和N(0.05)最后代入C S·N(d1) − K·e^(−rT)·N(d2)得到约9.42。这里面N(0.25)和N(d2)的查表方向是常见的丢分点很多人把N(d2)当成N(−d2)结果会偏出去不少。验算环节参考答案用的是期权平价关系C − P S − K·e^(−rT)如果看涨看跌价格算出来不满足这个等式说明计算过程中至少有一处符号错误。这个方法在笔试时很好用算得快的话30秒内能完成交叉验证。3.2 编程题的时间分配先保证可运行再追求优雅笔试编程环境和本地开发完全是两码事。没有IDE补全、没有调试器、没有自动保存所以代码风格应该以“可运行、可验证”为第一目标。参考答案里每个函数只做一件事关键位置用print把中间结果打出来输出示例也附在代码后面。跟我一起准备笔试的A同学踩过这个坑他习惯按自己平时写工程代码的风格先用class封装再写私有方法还在代码里用了相对较新的语法特性结果笔试环境Python版本不支持报错之后找不到类名整道题接近白卷。从那以后我把参考答案的风格当成自己的默认风格——函数式为主、中间结果直接打印、只用numpy/pandas/scipy三件套的基础API。笔试里能用print验证中间结果的题得分率明显高于闷头写完整逻辑的题。比如要求实现线性回归参考答案的做法是先打印系数和截距再打印R²每一步输出都跟手动推导的结果对应。这样即便最终结果算错了阅卷也能看到你前面的计算过程是对的。3.3 问答题的三段式结构结论、原理、场景机器学习问答题是主观题参考答案给的是“三段式”先说结论再写原理或关键公式最后补一个交易场景的例子。这个结构跟面试的回答逻辑一致也符合阅卷“踩点给分”的习惯。以“如何处理过拟合”为例参考答案的答法是结论——“增加正则化和交叉验证”原理——在损失函数中加入L2范数约束权重范围岭回归的目标函数写作“min ||y − Xw||² λ||w||²”场景——“对因子收益率做回归时加入L2正则可以降低高换手率敏感因子的权重让组合更稳定”。三段加起来大约100字读起来像面试口头表达而不是论文摘要。这种答法的优势在于即使原理公式忘了一半结论和场景部分也能拿到基础分而只背公式不准备场景的答案在阅卷时容易被判为“背书”。我后来模拟答题时每道主观题都按这个结构写从“憋一大段话”变成了“先定框架再填内容”效率高了不少。4. 可复现的Python代码实现三个高频考点的实践版本资源里的代码实现覆盖了统计检验、期权定价和最小回测三个方向。我按参考答案在干净环境里跑了一遍python 3.8以上、numpy/pandas/scipy三件套就能运行。这里挑三个最常被问到的模块展开说一下属于可以直接抄作业的版本。4.1 正态性检验日收益率到底是不是正态分布某公司笔试给出了一段日收益率序列要求检验是否服从正态分布。很多人的第一反应是画直方图但在笔试环境下没有可视化工具标准答案是同时用Shapiro–Wilk检验和Jarque–Bera检验。先看代码import numpy as np from scipy import stats # 固定随机种子保证笔试答案里展示的结果可复现 np.random.seed(42) returns np.random.normal(0.0001, 0.02, 500) # Shapiro-Wilk小样本下功效更高适合样本量小于5000 shapiro_stat, shapiro_p stats.shapiro(returns) # Jarque-Bera基于偏度与峰度构造统计量样本量较大时更稳定 jb_stat, jb_p stats.jarque_bera(returns) alpha 0.05 print(fShapiro p-value: {shapiro_p:.4f}) print(fJarque-Bera p-value: {jb_p:.4f}) if shapiro_p alpha and jb_p alpha: print(无法拒绝正态性假设序列可视为正态) else: print(拒绝正态性假设序列存在非正态性)Shapiro–Wilk适合小样本Jarque–Bera基于偏度和峰度两个检验同时用覆盖不同样本量区间。日收益率序列常见尖峰厚尾特征也就是偏度不为0、峰度大于3JB统计量会迅速变大p值落入拒绝域。需要留意的是alpha0.05是默认显著性水平实际做题时如果题干给了其他显著性水平要跟着改。我在实盘数据上跑过日收益率样本量大于5000之后shapiro功效下降JB反而更稳定遇到两个检验结果矛盾时优先报告JB的结果并说明样本量。4.2 期权定价三件套BS公式、蒙特卡洛与概率校准参考某私募笔试衍生品部分第一问要求用BS闭式解求欧式看涨价格第二问要求用蒙特卡洛模拟验证并解释差异。参考答案拆成了两个函数方便对照import numpy as np from scipy.stats import norm def bs_call(S, K, T, r, sigma): Black-Scholes欧式看涨期权定价 d1 (np.log(S / K) (r 0.5 * sigma ** 2) * T) / (sigma * np.sqrt(T)) d2 d1 - sigma * np.sqrt(T) return S * norm.cdf(d1) - K * np.exp(-r * T) * norm.cdf(d2) def mc_call(S, K, T, r, sigma, n_sims100000): 蒙特卡洛模拟定价固定随机种子保证可复现 np.random.seed(7) z np.random.standard_normal(n_sims) st S * np.exp((r - 0.5 * sigma ** 2) * T sigma * np.sqrt(T) * z) payoff np.maximum(st - K, 0) return np.exp(-r * T) * payoff.mean() S, K, T, r, sigma 100.0, 100.0, 1.0, 0.03, 0.2 bs_price bs_call(S, K, T, r, sigma) mc_price mc_call(S, K, T, r, sigma) print(fBS price: {bs_price:.4f}) print(fMC price: {mc_price:.4f}) print(fdiff: {abs(mc_price - bs_price) / bs_price:.2%})这段代码的常见坑在d1和d2的计算顺序。d1先算d2等于d1减去σ√T而不是重新套一个公式。蒙特卡洛的股价终点使用几何布朗运动离散化先抽样标准正态随机数再映射到对数正态价格路径。np.maximum用于截断期权payoff的下界低于行权价的路径收益都是0。参数上S100、K100是平值期权蒙特卡洛收敛速度偏慢10万次模拟的结果与BS公式差异通常在1%以内。去掉np.random.seed(7)的话每次运行结果都会不同这也是笔试时解释“模拟结果可能略有差异”的根本原因。答题顺序建议先写出BS闭式解再写蒙特卡洛验证先给阅卷一个确定的基准线。资源里还附了二叉树定价代码核心就一个风险中性概率p(R−d)/(u−d)思路跟BS一致笔试时间不够时优先掌握前两种即可。4.3 一个能跑通的最小回测框架信号生成与绩效归因编程题最容易出现的场景是给定收盘价序列要求按双均线策略产生持仓信号、计算策略净值和年化收益。参考答案给出了一段能直接跑通的代码import pandas as pd import numpy as np np.random.seed(123) dates pd.date_range(2024-01-01, periods60, freqD) daily_ret np.random.normal(0.0005, 0.01, 60) price 100 * np.exp(np.cumsum(daily_ret)) df pd.DataFrame({price: price}, indexdates) df[ma5] df[price].rolling(5).mean() df[ma20] df[price].rolling(20).mean() # 信号MA5上穿MA20时持仓shift(1)避免前视偏差 df[signal] (df[ma5] df[ma20]).astype(int) df[position] df[signal].shift(1).fillna(0) df[ret] df[price].pct_change().fillna(0) # 双边手续费加滑点按5bp计入模拟交易成本 df[strategy_ret] df[position] * df[ret] - 0.0005 df[cum] (1 df[strategy_ret]).cumprod() annual_return df[cum].iloc[-1] ** (252 / len(df)) - 1 sharpe df[strategy_ret].mean() / df[strategy_ret].std() * np.sqrt(252) print(fannual return: {annual_return:.2%}, sharpe: {sharpe:.2f})最容易翻车的地方是前视偏差。df[signal]在第t日收盘后确定真正能按这个信号执行交易最早是第t1日开盘所以必须用shift(1)把signal整体后移。如果直接在pct_change之后再取信号相当于把未来信息放进当天收益回测结果虚高到离谱。这点在量化岗位笔试里是经典陷阱参考答案特意在注释里标明“shift(1)避免前视偏差”。参数方面rolling(5)和rolling(20)分别代表快慢均线周期改成5和10、10和30都行结果会不同。年化收益率的计算按252个交易日标准把累计净值做(252/len(df))次方再减1。Sharpe用日收益均值除以标准差再乘√252。这两处的计算口径在不同机构题目里可能有差异答题时要注意题干给的公式。另外这个最小框架在position为0时也扣了手续费严格来说空仓不该有佣金笔试关心框架正确性真实系统里需要加一层if判断加仓逻辑。提示笔试环境里如果滚动均值前几行出现NaN导致结果跟参考答案对不上先检查pandas版本。rolling(20)前19行返回NaNsignal在这里是0position经过shift之后前20行是0不同版本对NaN和fillna的处理差异可能导致净值首位不一致。5. 刷题避坑五条让多数人翻过车的真实经验这套真题的参考答案我前后完整跑过三轮第一轮没看答案直接做题第二轮对照答案第三轮换不同环境复现。过程中暴露的问题很有代表性整理成五条每一都是真实踩过的。5.1 依赖环境不一致本地跑通不代表笔试平台能跑现象本地Python 3.11一切正常某公司笔试平台用的还是3.7环境结果连scipy的jarque_bera都导不进来整道统计题只能手写公式硬算。原因量化笔试平台的环境通常比本地滞后一两个大版本部分平台还限制外网没法临时pip install。解决写代码时只依赖numpy、pandas、scipy三个库的基础API避开statsmodels这类相对小众的包。涉及版本敏感的接口比如pandas的fillna写法差异我在离线环境里做了一次全量回归把资源里所有代码的依赖收敛到了三个库范围内。刷题时也要养成习惯每段代码在跑通之后刻意想想哪些API在低版本里可能会变。5.2 随机种子没固定蒙特卡洛结果对不上参考答案现象自己用蒙特卡洛模拟算期权价格跑三次出来三个数跟参考答案差了大几毛钱一度怀疑是自己公式写错了。原因蒙特卡洛本质是随机抽样没有固定随机种子结果天然有波动。加上当时模拟次数只设了1万次样本方差一放大抖动更明显这就是一个黑匣子。解决固定np.random.seed把n_sims提到10万以上。固定随机种子其实是给自己留后悔药结果不对的时候能复现问题、查清原因。笔试时先写BS闭式解拿到确定性结果再用蒙特卡洛做验证两者的差异控制在1%以内就认为是收敛的顺序反了会显得心里没底。5.3 前视偏差回测曲线光鲜但实盘一塌糊涂现象某道回测编程题我写出了年化60%、Sharpe 4.5的结果感觉自己是天选之子换到实盘参数后收益直接对半砍。原因写回测时用了当天收盘信号和当天收益率相当于提前知道未来方向。这不是参数玄学问题而是纯粹的时序逻辑错误。解决信号生成后强制shift(1)。我验证过只要加上这一步年化收益直接下降一个量级。现在每次拿到陌生回测代码第一件事就是检查信号和收益之间有没有错位。这套资源里所有涉及信号生成的地方都做了shift处理可以直接对照检查自己的代码。5.4 手推公式一步之差符号错误连累整题现象BS公式里d2的符号写反看涨期权价格和参考答案差了将近两块钱整道大题后半部分全部建在这个错误基础上。原因手推时把ln(S/K)的正负号弄反或者把(rσ²/2)错写成(r−σ²/2)。这是统计推导题最常见的两处丢分点没有中间过程的话阅卷很难给步骤分。解决推导前先把符号统一列在同一张草稿纸上写完d1、d2之后顺手验算d2d1−σ√T这一关系。参考答案保留了每一步的中间表达式复盘时可以逐行对符号。我自己后来养成习惯任何推导题做完先用极端值粗验——比如行权价远低于股价时看涨期权价格应该接近S−Ke^(−rT)。5.5 时间分配失衡第一题卡壳导致全卷崩现象某次模拟笔试第一道条件期望题耗了20分钟还没推出来后面三道题总共只剩10分钟编程题直接空白交卷。原因习惯性按卷面顺序做题遇到不会的题又不舍得跳过结果越做越急、越急越乱。解决拿到卷子先花两分钟扫一遍所有题标记每道题的分值和建议时长。先做能快速验证结果的题比如编程题和蒙特卡洛模拟再做纯推导题。我给自己定的规则是一道题超过15分钟没思路就跳过先把能拿到的分拿住。这套真题集里每套卷子都标注了建议作答时长模拟时可以按这个标准训练时间感。6. 三小时模拟笔试用这套真题给自己做一次全身体检如果把这套资源只是“刷一遍题、对一遍答案”效果会打折扣。我更推荐的做法是抽出连续的三小时按真实笔试标准给自己做一次模拟。具体步骤是这样的。第一步选两套真题混合成一份卷子保证题型覆盖四个模块而不是只对同一家机构的出题风格形成惯性。题目标注“限时20分钟”就严格执行多一分钟都不给。第二步全程不开代码补全、不查公式、不翻资料。把参考答案收到看不见的位置先用白纸做推导推导不出来的题直接跳过在题号旁边写下“思路缺失”四个字。第三步到了编程题阶段打开一个干净的Python环境只允许用基础API模拟笔试平台的环境限制。第四步时间到就停笔无论做完没有因为真实笔试不会等你。对答案的环节比做题更重要。用红笔在每个错题旁边标三类错误思路错、计算错、时间来不及。这三类错的性质完全不同思路错反映的是知识点盲区需要回到教材补基础计算错多半是符号或查表问题要靠验算习惯纠正时间来不及暴露的是应试节奏问题需要调整做题顺序。做完标记之后把每道题的得分和耗时记在一个表里字段就是“题号、模块、分值、耗时、得分、错误类型”。这个表能直接告诉你短板在哪统计题错得多说明数理基础需要回炉编程题做不完说明pandas操作熟练度不够没时间做的都是后面的主观问答题说明前段耗时太长。隔三天之后把同一份卷子拿出来二刷只做上次标红的位置看是否还会错。二刷用时控制在第一次的70%以内如果超了说明这个知识点还没形成肌肉记忆。我第一次做三小时模拟时统计题拿了七成分数编程只做了一半综合分刚过及格线。后来每次拿到新题都强制走一遍“限时模拟→错题归类→隔天二刷”的流程三轮下来从“堪堪做完”变成了“提前十分钟交卷并复查”。从那以后每拿到一套新真题我不再急着翻答案而是先给自己计时。这套方法对你应该也适用希望帮到你。本文还有配套的精品资源点击获取

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询