简介围绕诚奇、概率投资、海悦、天演、衍复、佳期、平方和、集微、九坤、凯读投资十家量化机构的笔试考核资源分别整理了各家的考察要点与答案解析面向量化岗位求职者、金融工程及相关专业学生也适合需要系统梳理量化知识体系的学习者。内容覆盖线性回归与时间序列分析、GARCH波动率建模、Black-Scholes期权定价、蒙特卡洛模拟、协整套利与对冲策略、动量与反转策略、微观结构与高频交易、机器学习与深度学习、NLP市场情绪分析、基本面估值模型等核心模块并展示Python、Pandas、NumPy、Matlab、R等工具的实际应用场景。压缩包整体约48.43MB已有752人学习下载。对照学习可快速掌握各家机构的考察侧重点与出题风格针对薄弱环节专项训练补齐统计学、金融工程与编程技能短板有效提升笔试实战能力。1. 量化笔试题十家公司附答案先分清你面对的是哪一类笔试打开招聘季的讨论帖“量化笔试题十家公司附答案”这类合集永远高居热榜。但一个反直觉的事实是这十家公司凑在一起笔试考点的重叠度可能不到三成。银行系在统计题上堆量券商自营在策略逻辑上做文章量化私募偏好半小时短题海互联网数据岗又完全是SQL和模型评估的另一套打法。如果你把这份合集当成统一题库来刷大概率第一场就翻车。这个标题真正想解决的问题不是“背下十份答案”而是帮你建立一张分类复盘地图每家笔试的题量结构、容错率、常见题型以及合集里“附答案”的真实质量。适合两类人一是目标还没定、想海投量化的应届生二是从数据分析转量化、对笔试边界不熟的社招同学。我把之前带人复习时反复用到的拆解思路整理成下文从题型构成、代码模板、概率手算到避坑排查最后给一套能持续复用的备考工作台。2. 十家公司笔试的真实构成五类岗位的考查重心与答案质量“十家公司”听起来很多但把题面按公司类型归类后考点高度趋同差异主要体现在题量、容错率和答题形式上。往年带过的A同学在秋招时做过一份统计十家量化相关笔试里超过七成题目能归到概率统计、Python/SQL、策略逻辑这三类剩下的才是数据处理和脑筋急转弯。下面按五类岗位逐个拆每家对应什么样的“参考答案”质量也一并说清。2.1 银行理财子与保险资管统计SQL堆量及格导向这类笔试的显著特征是“量大但不深”。题量往往在六十到八十道之间限时两小时覆盖概率论、基础数理统计、SQL聚合并夹杂少量Python编程题。题目难度不高比如抛硬币的期望次数、两个正态总体的均值比较、用SQL查出分组平均值之类但连续高密度作答很考验熟练度。代码题通常不超过三道难度最多到LeetCode Easy到Medium考查点集中在列表操作、简单循环和pandas筛选。这类岗位隐含的能力预期是“数据能快速处理、不能出错”。备考优先级很明确SQL窗口函数和分组聚合练熟概率分布的基础公式能推一遍比钻研复杂的期权定价模型更划算。参考答案的质量通常比较规整因为银行系笔试题库更新慢流传出来的答案很多经过多轮校对可直接参考但也要注意部分年份题目数字被改过。2.2 券商自营与公募量化策略逻辑与代码实现二八开这类笔试不再满足于“选对答案”而是要看你的推导过程。常见结构是第一部分给出几个策略场景题比如“如何处理停牌股票对动量因子的影响”“因子标准化选z-score还是rank为什么”第二部分是代码实现题常让你手写指数加权移动平均、计算两个时间序列的滚动相关性。评分时论述逻辑占了不小比重只写结论不给理由会明显吃亏。备考时要刻意训练“先说思路再写表达式”的答题习惯。参考答案在券商公募类的合集中通常以“思路解析”为主直接给数字答案的反而要警惕因为同一道题换一组参数答案就完全变了。我一般会先看解析文字是否自洽再拿模拟数据验证一遍。2.3 量化私募短题海、手算快、边界条件多私募风格与前面两类截然不同。题量不大但密度极高比如三十分钟十道题每题两三行考察的是快速建模和心算。典型题目包括“某分布假设下样本均值的标准误是多少”“有放回和无放回抽球到目标出现的期望次数”“两资产相关度为0.5时组合方差怎么变”。很多题并不要求精确到小数点后几位反而看你能否快速给出合理的估计区间。这种风格明显是在筛选平时有手算习惯的人。备考建议是掐表做模拟题做不完没关系关键是训练“读题十秒内确定用哪个分布或公式”的直觉。私募流传的答案往往比较碎片化经常只有一句“答案是XX”没有推导。这种答案可以参考但必须自己补一遍过程否则换个数字就露馅。2.4 互联网大厂与量化数据岗SQL、指标和分布式概念如果你投的是量化数据平台或数据开发类岗位笔试内容会从资产定价偏移到数据处理基础设施。高频考点包括AUC和混淆矩阵的计算、窗口函数与join的语义差异、样本不均衡时的评估指标选择偶尔出现“手写一段UDF完成分组排序”这类题。偶尔也会带一道概率题但通常作为能力摸底不是主要筛选点。这类笔试的参考答案质量相对可靠因为题目偏标准化社区讨论也多。但要注意招聘通道的岗位名称可能带有“量化”二字实际笔试用的却是通用数据岗试卷。投递前最好先确认笔试类型避免用期权定价的复习方案去硬刚SQL题。2.5 十家笔试考点地图与“附答案”的四档质量下表是常见笔试结构的汇总。每家公司的具体题目每年都会换但这种类型划分近几年基本稳定也是做备考计划的基础公司类型题量典型组成容错率参考答案可靠度最该练银行理财子/保险资管大60-80题概率统计、SQL、少量Python高过线即进面较可靠多轮校对SQL聚合、概率手算券商自营/公募量化中30-40题策略逻辑、代码实现中看推导质量解析型答案较有用策略框架、代码模板量化私募小但密度高10-20题估算、分布、边界条件低按准确率排名碎片化需自证快速建模、心算互联网量化数据岗中30题左右SQL、评估指标、分布式中按排名刷人可靠社区版本多窗口函数、指标计算关于“附答案”的质量我这些年攒出一个简单分档第一档有推导过程且数字经得起验算第二档只有“选A”或“最大值是XX”没有解释第三档明显来自AI生成文字通顺但步骤跳跃第四档是错误答案常见于冷门题目。辨别方法很粗暴拿到手先取边界值代入。如果一个概率答案在p0.5时还算正常p0.9时明显不符合直觉基本可以划进第四档。3. 覆盖八成考点的Python模板回撤、组合、蒙特卡洛的细节会按“十家公司附答案”来找资料的同学多半缺的是一套能直接运行的代码模板。代码题在各类笔试里的出现频率不低但套路相对固定。我按历年笔试题目热点挑了三类最常考的最大回撤、最小方差组合、蒙特卡洛期权定价。把这三种模板练熟大部分计算类代码题都能找到抓手。3.1 最大回撤十分钟写对关键在于“峰值”定义最大回撤这个考点出现频率极高因为实现简单但边界条件容易踩坑。常见写法是遍历价格序列维护当前峰值然后计算当前价格相对峰值的回撤def max_drawdown(prices): 计算资产净值序列的最大回撤百分比。 prices: 按时间升序排列的净值列表不含空值。 返回负值表示跌幅例如 -0.25 表示回撤 25%。 peak -float(inf) max_dd 0.0 for p in prices: peak max(peak, p) # 先更新当前最高点 dd (p - peak) / peak # 当前回撤为负或零 if dd max_dd: max_dd dd # 记录更深的回撤 return max_dd这段代码的核心逻辑是先更新峰值再算回撤顺序不能反。如果把峰值更新放在回撤计算之后遇到连续下跌时会漏掉初始峰值。参数说明prices必须是净值序列而非收益率序列且时间升序返回值习惯上用负数表示跌幅这样调用方直接比较大小即可。边界情况是空列表和prices全为0前者返回0.0后者会触发除零错误笔试时要在函数开头做防御。注意很多参考答案用“最大跌幅”代替最大回撤认为最低点相对最高点的幅度就是答案。这在实际笔试里会被扣分因为真正的最大回撤要求回撤必须从一个新高点向下跌落中途的新高会重置回撤起点。一个典型陷阱是序列[1, 2, 1.5, 1.2, 1.8]直观最大跌幅是1.8跌到1.2但最大回撤是2跌到1.2计算结果是-0.4而非-0.333。动手写代码时把这段边界例也放进测试能过滤掉一批不严谨的资料答案。3.2 最小方差组合权重约束与伪逆的取舍最小方差组合的代码题经常被包装成“给定三只股票的协方差矩阵求组合权重”。它背后的优化问题是有解析解的所以笔试更爱看你能否写对矩阵表达式import numpy as np def min_var_weights(cov): 最小方差组合权重约束为权重之和等于1。 cov: n x n 协方差矩阵。 返回长度为n的权重向量。 inv_cov np.linalg.pinv(cov) # 用伪逆而不是逆容忍数值病态 ones np.ones(cov.shape[0]) w inv_cov ones / (ones inv_cov ones) return w这里最关键的参数是np.linalg.pinv。实际笔试给出的协方差矩阵往往是用历史数据算的可能近似奇异直接用inv会报错或给出极其不稳定的权重。伪逆在矩阵非满秩时让公式仍有意义而且对同一笔试题逆和伪逆在可逆矩阵下结果一致。权重之和等于1的约束体现在分母上ones inv_cov ones是一个标量相当于归一化因子。注意这道题的常见变体是增加一个风险厌恶系数目标函数变成最小化组合方差减去风险偏好项这时解析解会多出一项涉及期望收益向量的表达式。如果笔试题目里出现收益率数据mu不要套上面这个纯方差版本先看清有没有“无约束不做空”之类的附加条件再动笔。我在模拟项目X的笔试复盘里见过至少三次同学把带收益项的题目硬套最小方差公式最后权重和答案相差很大。3.3 蒙特卡洛定价随机数生成器与收敛性的取舍期权定价题目在笔试里出现频率不高但一旦出现就是区分度很高的题。有的考你写出风险中性定价的公式有的直接让你写一段模拟代码。一段可复现的模板比背公式更实用import numpy as np def mc_call(S0, K, T, r, sigma, n_sims200_000, seed42): 用蒙特卡洛模拟欧式看涨期权价格。 S0: 当前标的价格K: 行权价T: 到期时间年。 r: 无风险利率sigma: 年化波动率。 rng np.random.default_rng(seed) # 显式随机数生成器可复现 z rng.standard_normal(n_sims) st S0 * np.exp((r - 0.5 * sigma ** 2) * T sigma * np.sqrt(T) * z) payoff np.maximum(st - K, 0) price np.exp(-r * T) * np.mean(payoff) se np.std(payoff, ddof1) / np.sqrt(n_sims) # 标准误 return price, se代码里的关键点是np.random.default_rng(seed)。旧式np.random.seed配合全局随机状态在笔试环境里容易受到其他代码干扰default_rng生成的生成器对象是隔离的只要传同一个seed结果可以重现成完全相同的数字。公式中-0.5*sigma**2是伊藤引理带来的修正项漏掉它价格会系统偏高。返回的标准误表示模拟价格的误差范围笔试追问“模拟十万次和一百万次差别在哪”时直接用它说明。注意蒙特卡洛在笔试中一般只要求估算到小数点后两位不用刻意追求高精度。更好的做法是跑完模拟后再用Black-Scholes近似检验结果量级因为欧式看涨期权的理论值可以解析计算两者偏差如果在标准误的几倍以内基本说明代码没写错。3.4 把模板变成自己的答案库命名、测试与注释代码模板写出来之后还要做一步整理才能变成面试时能随时调用的材料。我习惯按模块名建立小文件md_drawdown.py、min_var.py、mc_pricing.py每个文件只留一个主函数和两三行自测代码。自测不追求覆盖全面但至少要有两个用例一个正常数据一个边界数据。比如回撤函数用[1,2,1,0.5]验证正常跌幅用空列表验证防御逻辑。函数注释要写清参数含义和返回值的符号约定。真实笔试场景往往不允许翻资料但注释写在函数docstring里有另一个价值面试官看你的答题代码时那些注释就是你的答题思路。我见过不少候选人口述逻辑清晰但代码里没有任何注释最后面试官以为他思路混乱。这也算是量化笔试的潜规则代码不仅是运行的工具还是展示思维过程的载体。4. 概率与手算题高频考点的一套估算打法概率统计题在各类量化笔试中的占比最高但很多人栽的并不是题目本身难而是平时习惯用软件算一上考场纸笔就卡壳。这一章用的方法是一套“分类识别—套公式—边界验证”的打法先明确考的是哪类分布再快速估算。对于笔试来说快和准一样重要。4.1 三类必考分布从背公式到会估算笔试里出现频率最高的概率分布是几何分布、二项分布和正态分布覆盖了大部分期望与区间估计题。它们的核心公式和考法如下表分布期望方差常见考法几何分布1/p(1-p)/p²“重复试验直到首次成功”的期望次数二项分布npnp(1-p)成功次数或比例的均值与波动正态分布μσ²置信区间、样本均值分布几何分布是最容易被记错期望公式的一个因为“直到第k次成功”的表达式和几何级数求和容易混在一起。其实只需要记住一个结论首次成功所需试验次数的期望是1/p。比如p0.2时期望是5次不是4次也不是6次。二项分布则要留意题目是问成功次数还是成功比例比例的方差要在次数方差基础上除以n的平方很多人在这里少除一个n。4.2 一道抽球题的推算先对称性再代公式抽球题是笔试概率题的常客通常会在“有放回”和“无放回”之间做区分。先看最基础的有放回版本袋中有a个红球、b个蓝球每次有放回抽取一个求首次抽到红球的抽取次数期望。红球单次概率pa/(ab)所以期望次数是1/p(ab)/a整个过程不需要展开无穷级数一步写出结论就行。无放回版本会稍微绕一点但有个漂亮的对称性做法把a个红球看成隔板蓝球被它们分割成a1段第一段就是首次抽到红球之前的部分。因为红球在随机排列中的位置完全对称每段蓝球数量的期望都是b/(a1)再加上第一个红球本身占的一次总期望是1b/(a1)(ab1)/(a1)。用a1、b1验证排列只有红蓝和蓝红两种首次红球的次数分别为1和2均值为1.5与公式计算结果一致。4.3 用一小段代码核对你的手算答案手算完之后如果不确定可以写几行模拟代码检验结果。下面用几何分布算有放回抽球的期望import numpy as np def simulate_geometric(a, b, n_trials200_000, seed0): 模拟有放回抽球直到首次抽到红球返回平均抽取次数。 a: 红球数b: 蓝球数。 p a / (a b) rng np.random.default_rng(seed) draws rng.geometric(p, sizen_trials) # numpy自带几何分布 return draws.mean()代码里的rng.geometric(p, sizen_trials)直接生成n_trials次“首次成功所需的试验次数”省去了手写while循环的麻烦。参数seed保证结果可复现n_trials越大模拟均值越接近理论期望。运行simulate_geometric(2, 3)时会得到接近2.5的结果对应(23)/2和手算一致。这种代码验证法对我帮助很大很多“参考答案”其实是被模拟结果纠正的。4.4 笔试答题格式把推导过程写给考官看考场上的另一条经验是概率题不要直接写个数字要给关键等式。即使最终答案算错只要公式写对通常能拿到过程分。我一般会按这个格式写设随机变量X表示首次抽到红球的抽取次数X服从参数为pa/(ab)的几何分布于是E[X]1/p(ab)/a。然后另起一行代入题目具体数字得出结果。如果面试官事后追问这个推导过程也是最好的回答底稿。5. 十家公司笔试避坑清单五个见过最多的翻车现场笔试准备到后期真正拉开差距的不是会不会做而是能不能在各种干扰下稳定交付。下面五条坑来自我见过的大量笔试复盘每一条都是有人在真实笔试里踩过的按“现象—原因—解决”的方式记录逐一排查。5.1 只背答案册子没在自己的电脑上跑过现象笔试里一道代码题要求实现移动平均答案合集里给的是pandas的rolling一行写法但笔试环境没有安装pandas只允许使用标准库当场写不出来。原因准备时只看了答案文本没确认运行环境依赖。不同公司的在线笔试环境差异很大有些甚至不允许import第三方库。解决模板代码默认用标准库和numpy实现封装的pandas调用只作为注释里的备选方案。临考前在自己的机器上用python -c命令把核心函数跑一遍确认无语法错误。做不到依赖完整时至少能退化成for循环版本。5.2 手算结果和代码结果不一致差在随机数现象一道蒙特卡洛期权定价题手算估算价格是0.38参考答案写0.37自己写的模拟代码跑出来却是0.31相差大到无法解释。原因代码里没有设置随机种子每次运行的模拟误差都不同。更关键的是参考答案本身就是某次固定种子下的结果不同种子之间相差几个基点很正常但0.31和0.38的差距说明模拟次数可能只有几千次波动过大。解决笔试代码里设置显式seed并且同时输出价格和标准误。回答问题时说“模拟价格0.365标准误0.012”比只报一个数字可信得多。这个习惯也方便别人复核你的结果。5.3 SQL窗口函数在本地能跑笔试环境语法报错现象写了一段用row_number() over(partition by ... order by ...)的SQL本地测试通过提交到在线笔试环境却报语法错误。原因部分在线笔试工具使用旧版SQLite内核对窗口函数支持不完整或者要求完全限定的写法。解决先尝试简单方案用关联子查询或join加分组实现同样的排序逻辑保证在任何SQL环境都能跑。如果题目明确考察窗口函数也写一版子查询方案作为后备答案。笔试前最好用目标公司的模拟平台试提交一次确认SQL方言。5.4 代码题忽略金融数据的边界条件现象最大回撤函数在常规数据上运行正确输入包含NaN或净值为0的历史行情时直接崩溃测试用例没跑完。原因答案合集里的样例数据往往是清洗好的没有停牌导致的缺失值也没有极端行情导致的零值。解决所有处理序列数据的函数入口处先检查空值和异常值。回撤函数遇到NaN就向前填充或跳过遇到峰值或价格为0时返回一个约定值比如float(nan)并在注释里说明。笔试判卷通常不会跑隐藏测试但有经验的面试官会专门看你怎么处理边界这也是加分项。5.5 参考答案本身有错不经验算直接背现象一道概率题的“附答案”写着“期望为1/p-1”背下来后在另一家笔试里遇到同类题目按这个公式算了结果最后发现选项都不对。原因某些合集里的小众题目答案来自AI生成或二手转发公式中间的推导错了。尤其涉及“首次成功前失败次数”和“首次成功时试验次数”时前者期望是(1-p)/p后者期望是1/p两者相差1极易混淆。解决每道背下来的答案都做一次边界验证。把p设为1这时期望必须等于1把p设为0.5期望必须等于2。不符合直觉的直接标红丢弃不把时间花在记忆错误结论上。这条规则也让资料里的错误答案自然浮出水面比一个个去对解析更高效。6. 一个能反复用的备考工作台一页纸考点表和最小复现包笔试准备到最后拼的是知识组织方式。我常用一个“一页纸考点表”把所有错题和核心考点压缩成一张可快速浏览的表格旁边对应一个能一键运行的最小复现代码包。这个工作台能在一个文件里完成从复习到自查的闭环。一页纸考点表的格式很简单四列考点、一句话答案、易错点、对应代码文件。比如“几何分布期望—1/p—无放回版本期望不同—simulate_geometric.py”“最小方差组合—wΣ⁻¹1/(1ᵀΣ⁻¹1)—带收益项的变体—min_var.py”。表格不要追求详细每行控制在二十字以内目标是考前十分钟过一遍把容易忘的边界条件重新激活。配套的最小复现包是一段几十行的自检脚本考试前一天在本地跑一遍确保所有模板函数没有因改动而回归出错from md_drawdown import max_drawdown from min_var import min_var_weights from mc_pricing import mc_call assert abs(max_drawdown([1, 2, 1, 0.5]) - (-0.75)) 1e-9 print(drawdown ok) import numpy as np cov np.array([[1.0, 0.5], [0.5, 1.0]]) w min_var_weights(cov) assert abs(w.sum() - 1) 1e-9 print(min_var ok)这段脚本的作用是在考前快速发现“改了一个函数导致另一个调用失败”的连锁问题。注意断言值-0.75是回撤的定义结果从2跌到0.5跌幅为-0.75而直觉上的最大跌幅1跌到0.5只有-0.5写这个断言相当于把定义固化成代码防止自己复习到后面又把定义搞混。我这些年养成的习惯是每做一套笔试题第二天就把错题整理进考点表同时更新对应代码文件。参考答案错的就当场标红不纠结它为什么错但会把正确推导写进备注。这个工作台越到后面越轻松因为表格里新增的内容越来越少反而能腾出时间看策略和项目。这个过程也帮我避开了一个常见的后悔药陷阱考完才发现某道题其实会做只是考前没复习到。希望这套方法能帮你在下一份“十家公司附答案”里更快找到真正值得花时间的部分。本文还有配套的精品资源点击获取