Skip to content

SoYuCry/awesome-quant-interview

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 

Repository files navigation

Quant Research Interview Notes logo

Quant Research Interview Notes

中文 Quant Research 准备笔记:面试题、项目复盘、论文路线与真实追问。

🚀 字多不看 · 📚 目录 · 🧭 先看哪块 · 🔥 数理基础速查 · 🧪 项目复盘 · 💬 参与贡献

👋 前言

本项目来自社招面试 30+ 家量化私募、拿到数家百亿级私募 QR offer 的经历,以及创业做过实盘产品后对量化全链路的体感。

QR 的核心是在不确定环境里反复提出假设、验证信号、解释失败。如果你喜欢从数据中提出假设,愿意接受大量无效实验,愿意长期补数学 / 统计 / 编程短板,这份笔记会更适合你。

内容覆盖概率统计、线性代数、时间序列、因子研究、机器学习、回测评估、组合优化、经典论文与高频问答。适合:

  • 准备 QR 面试的人
  • 金融工程、数学、统计、计算机背景,想系统补齐量化研究方法论的人
  • 已经会基础 Python / 数学,但需要把知识组织成面试可表达答案的人
  • 想从论文、因子、回测和机器学习角度理解量化研究流程的人
  • 业余做量化、把它当兴趣或副业的人:先建立研究闭环,少踩回测好看、落地全是坑的弯路

🚀 字多不看

  • 如果你快面试了:先看数理基础速查,再回到薄弱章节补定义、直觉和坑。
  • 如果你有项目:直接按项目复盘 8 问整理,写清楚假设、数据、验证、失败和下一步。
  • 如果你刚转 QR,或者业余做量化:先选下面 A/B/C/D 里最像自己的状态,不建议从头硬啃。
  • 如果你只想找资源:大块资料默认折叠,点醒目的标题行展开/收起,少翻一点是一点。

📚 目录 / 跳转导航

范围:主线只做 Quant Research,覆盖因子研究、资产定价、时间序列、机器学习、回测评估、组合优化和论文阅读;QD / Trader 只作为延伸背景。

你现在想做什么 建议入口
先判断这个仓库值不值得看 字多不看 · 适合谁
判断自己适不适合 QR 是否适合 QR · 国内量化面试现实情况
不知道先补哪块 你现在处在哪种状态?
已经有项目,想准备面试复盘 项目复盘 8 问
马上面试,想快速查漏 数理基础速查 · 面试八股文
想业余做量化、找论文和工具 开源工具 · 策略方向与论文 · 研究前沿 · 书单与资源
想贡献或联系我 维护与参与贡献

🧩 国内量化面试的一些现实情况(点击展开/收起)

🧩 国内量化面试的一些现实情况

以下是截至 2026-06 的经验性观察和公开资料整理,用来帮助校准预期;不同机构、年份、团队和策略方向差异很大。

  • 常见考察面:部分 QR 面试会混合考察概率统计、线性代数、时间序列、机器学习验证、因子研究、回测偏差和项目复盘。概率论通常分布在笔试中,也会在面试后半段以智力题的形式出现。
  • 项目表达很重要:很多候选人问什么答什么,没有完整表达研究假设、数据口径、验证方式、失败原因和下一步改进。
  • 面试官眼中的闪光点:真正有区分度的部分,集中在alpha来自哪里、有没有前视、过拟合如何排除、实盘/样本外为什么衰减、坏 case 怎么定位。
  • 实盘经验:交易成本、滑点、容量、撮合、风控和监控问题,会把“看起来有效”的研究拉回现实约束。
  • 岗位差异很大:因子、模型、组合、交易执行、CTA、股票 Alpha、海外市场等方向的能力权重不同,一套题覆盖不了所有岗位。越成熟的机构对期望的人选的形象越立体,所以一定一定也要海投,不要因为被拒绝否定自己。

更多细节推荐阅读:国内量化求职碎碎念


🧭 你现在处在哪种状态?(行动路线自查)(点击展开/收起)

🧭 你现在处在哪种状态?

建议只选一个最接近当前状态的路径,不需要从头到尾线性阅读。下面几块可以直接点开看。

A. 数学/统计基础较弱,需要补基础
  • 适合谁:知道自己想准备 QR,但概率统计、线性代数、时间序列基础不稳。
  • 先看什么数学与统计基础,重点是条件概率、CLT、MLE、协方差矩阵、SVD、平稳性、协整和 GBM。
  • 暂时跳过什么:复杂深度学习结构、微观结构延伸阅读、过细的工具和平台列表。
  • 输出物:能用自己的话解释 10 个核心数学/统计问题,并能说出它们在因子、风险或回测里的用途。
B. 已有 ML / Python 基础,需要转向 QR 表达
  • 适合谁:会建模或写代码,但不熟悉因子研究、回测验证和金融数据中的坑。
  • 先看什么因子与 Alpha 策略机器学习 / 深度学习在量化中的应用,尤其 IC/IR、回测偏差、时间序列交叉验证、特征工程和信息泄漏。
  • 暂时跳过什么:泛泛的框架清单、偏 QD 的 C++ 工程细节、与当前目标岗位无关的资产方向。
  • 输出物:把一个模型项目改写成 QR 面试口径:预测目标、样本划分、特征构造、验证方式、风险点和失败复盘。
C. 已有因子/回测项目,需要面试复盘
  • 适合谁:已经做过因子、策略、论文复现或比赛项目,但不确定怎么讲清楚研究价值。
  • 先看什么:Q31-Q39,以及策略方向与论文里与你项目最接近的方向。
  • 暂时跳过什么:入门概念解释、与项目无关的工具堆叠、不能支撑你项目叙事的论文列表。
  • 输出物:形成一页项目复盘:假设、数据、处理、验证、结果、失败原因、下一步改进。
D. 临近面试,只做高频主题查漏
  • 适合谁:已经有目标岗位或面试安排,只需要快速检查知识漏洞和表达短板。
  • 先看什么数理基础速查,再按薄弱项回到对应章节。
  • 暂时跳过什么:长期学习路线、行业泛谈、暂时无法转化成面试表达的延伸阅读。
  • 输出物:一份错题/卡壳清单,每道题都能在 2 分钟内讲出定义、直觉、量化应用和常见陷阱。

🔥 数理基础速查(点击展开/收起)

🔥 数理基础速查

  • 概率统计:Q1 条件概率与贝叶斯、Q2 大数定律与 CLT、Q5 MLE/GMM、Q6 p 值、Q7 协方差矩阵。
  • 线性代数 / 时间序列:Q8 EVD/SVD、Q10 平稳性、Q11 ARIMA/GARCH、Q12 协整、Q14 GBM。
  • Python / 数值计算:Q17 Pandas 性能、Q18 GIL 与并行、Q19 SettingWithCopy、Q27 NumPy 广播、Q28 滚动窗口。
  • 因子与 Alpha:Q29 Alpha/Beta、Q31 量价因子、Q32 IC/IR、Q33 多重共线性、Q37 回测偏差、Q39 过拟合。
  • 量化 ML:Q41 偏差-方差、Q43 时间序列交叉验证、Q45 特征工程、Q52 信息泄漏、Q55 LLM 在量化中的应用。

📋 项目复盘时最该准备的 8 个问题(点击展开/收起)

📋 项目复盘时最该准备的 8 个问题

如果你已经有因子、模型、CTA、论文复现或实盘相关项目,可以先用下面 8 个问题自查。真实面试里,项目追问通常会沿着这些方向展开。

  1. Alpha 假设:你相信市场里哪类低效存在?这个低效为什么可能持续?
  2. 预测目标:你预测的是收益、方向、排序、波动率、风险暴露还是交易点位?为什么这个目标和最终收益一致?
  3. 数据口径:数据从哪里来?有没有幸存者偏差、前视偏差、复权/停牌/涨跌停/成交约束问题?
  4. 验证方式:样本如何切分?有没有 walk-forward、purged K-fold、embargo 或严格样本外?
  5. 评价指标:IC、Rank IC、IR、分组收益、换手、回撤、Sharpe、容量之间如何互相印证?
  6. 失败案例:最大回撤或坏 case 出现时,你如何定位到行情、因子、模型、执行还是风控问题?
  7. 实盘落差:回测到实盘会被哪些因素打折?滑点、交易成本、撮合、延迟、容量和风控阈值分别怎么影响?
  8. 下一步改进:优先补数据、改标签、改特征、改模型、改组合约束还是改执行?排序依据是什么?

面试复盘里最常见的追问层次

真实面试很少停在“定义是什么”。更常见的路径是从基础概念一路追到项目边界。

层次 面试官想确认什么 你应该准备的输出
概念层 定义、假设、适用条件是否清楚 用自己的话解释概念,并说出量化场景中的用途
验证层 是否知道金融数据里的坑 样本切分、前视偏差、交易成本、信息泄漏、过拟合控制
项目层 是否真的做过研究闭环 数据来源、标签定义、特征构造、实验设计、失败复盘
生产层 是否理解回测和实盘之间的距离 滑点、容量、撮合、风控、监控、衰减和异常处理
反思层 是否有研究判断力 为什么这样做、哪里可能错、下一步先改什么

来自真实面试复盘的通用追问

  • Alpha 从哪里来:信号背后的市场直觉是什么?为什么这不是噪声、数据挖掘或单纯运气?
  • 为什么选择这个预测目标:预测收益、方向、波动率、排序还是交易点位?目标函数和最终 PnL 是否一致?
  • 样本量与切分是否可靠:训练/验证/测试怎么切?有没有 purging、embargo、walk-forward 或样本外验证?
  • 如何避免过拟合:参数敏感性、特征筛选、重复试验、多重检验和坏 case 是否被记录?
  • 回测到实盘为什么会衰减:交易成本、滑点、撮合、容量、行情 regime、延迟和数据口径会如何影响结果?
  • IC/IR 怎么解释:IC 为负或阶段性失效时怎么诊断?IC、分组收益、换手、回撤和最终组合收益如何对应?
  • 因子为什么有效/失效:因子暴露、行业/市值中性化、相关性、crowding、衰减周期和容量怎么分析?
  • 模型如何解释:黑盒模型出错时,如何做特征归因、分场景回看、分布外检测和与简单 baseline 的对照?
  • 失败案例怎么复盘:最大回撤、异常信号、实盘偏差或 bad trade 出现后,如何定位、止损、修正和监控?
  • 下一步怎么改进:你会优先补数据、改标签、改模型、改组合约束,还是改交易执行?为什么?

🧰 开源工具:回测、平台、AI + Finance、数据处理(点击展开/收起)

🧰 开源工具:回测、平台、AI + Finance、数据处理

回测框架

  • VectorBT - 向量化回测引擎,NumPy/Numba 加速,大规模参数扫描首选
  • Backtrader - 事件驱动回测框架,功能全面,支持实盘
  • Zipline Reloaded - Quantopian 经典引擎的社区维护版

量化平台

  • Qlib - 微软 AI 量化平台,数据→模型→回测→分析全流程
  • vnpy - 国内最流行的量化框架,股票/期货/期权/加密货币实盘
  • Hummingbot - 开源做市与套利机器人,CEX + DEX 全覆盖

AI + Finance

  • RD-Agent - 微软亚研院自动化研发 Agent,读论文→做因子→跑实验,集成 Qlib
  • FinRL - 金融强化学习框架
  • FinGPT - 开源金融 LLM,LoRA 微调,情感分析/研报解读
  • FinRobot - 基于 LLM 的多 Agent 金融分析平台

研报复现

  • QuantsPlaybook - 券商金工研报复现合集(华泰/光大/招商/国信),100+ 策略
  • huatai-finengi-report - 华泰金工研报集合:CNN 选股、时序交叉验证、ML 多因子

量化库

  • 🌟 QuantLib - 工业级衍生品定价库,C++ 内核 + Python 绑定
  • cvxpy - Python 凸优化,组合优化/风险预算
  • NautilusTrader - 高性能回测+实盘,Rust 内核 + Python API
  • Polars - 比 pandas 快 10-50x 的数据处理库

资源合集


📄 策略方向与论文:按 CTA、截面、期权等方向展开(点击展开/收起)

📄 策略方向与论文:按 CTA、截面、期权等方向展开

🌟 表示经典推荐:优先看、反复用,或者在对应方向里绕不开。

量化的本质就是在搞清楚什么是 Alpha——市场回报中无法被已知风险因子解释的那部分超额收益。不同方向的底层逻辑、数据频率、持仓周期差异巨大,选方向比选策略更重要。下面按主流方向整理了奠基性论文和经典著作,每篇都是这个领域绕不开的工作。

CTA / 管理期货

在期货和外汇市场上做系统化趋势与动量。天然多空双向,对冲股市 Beta,08 年金融危机期间不少 CTA 基金逆势盈利,所以也叫"危机 Alpha"。国内 CTA 私募近年发展很快,是量化求职的热门方向之一。

  • 🌟 Moskowitz, Ooi & Pedersen (2012). Time Series Momentum. JFE
  • 🌟 Hurst, Ooi & Pedersen (2017). A Century of Evidence on Trend-Following Investing. AQR
  • Fung & Hsieh (2001). The Risk in Hedge Fund Strategies: Theory and Evidence from Trend Followers. RFS
  • Hamill, Rattray & Van Hemert (2016). Trend Following: Equity and Bond Crisis Alpha. AQR
  • Baltas & Kosowski (2013). Momentum Strategies in Futures Markets and Trend-Following Funds.
  • Levine & Pedersen (2016). Which Trend Is Your Friend? FAJ
  • 📖 Perry Kaufman.《Trading Systems and Methods》

趋势跟踪

和 CTA 高度重叠,但更纯粹地聚焦方向性信号。胜率通常只有 30%-40%,靠盈亏比赚钱。核心在于跟随纪律:趋势来了跟上,反转了止损走人;预测能力反而不是重点。

  • 🌟 Jegadeesh & Titman (1993). Returns to Buying Winners and Selling Losers. JF
  • 🌟 Asness, Moskowitz & Pedersen (2013). Value and Momentum Everywhere. JF
  • Lempérière et al. (2014). Two Centuries of Trend Following. JIS
  • Faber (2007). A Quantitative Approach to Tactical Asset Allocation. JWM
  • Baz et al. (2015). Dissecting Investment Strategies in the Cross Section and Time Series.
  • Babu et al. (2020). You Can't Always Trend When You Want. JPM
  • 📖 Andreas Clenow.《Following the Trend》

高频交易(QR 延伸阅读)

毫秒甚至微秒级持仓,通过速度优势和微观结构信息赚取微小但高频的利润。基础设施(co-location、FPGA、网络延迟)是重要壁垒,策略容量有限但利润率极高。对 Quant Research 来说,微观结构论文更适合作为进阶背景,不是本仓库主线。

  • 🌟 Kyle (1985). Continuous Auctions and Insider Trading. Econometrica
  • 🌟 Glosten & Milgrom (1985). Bid, Ask and Transaction Prices in a Specialist Market. JFE
  • 🌟 Avellaneda & Stoikov (2008). High-Frequency Trading in a Limit Order Book. QF
  • Cont, Stoikov & Talreja (2010). A Stochastic Model for Order Book Dynamics. OR
  • Bouchaud, Farmer & Lillo (2009). How Markets Slowly Digest Changes in Supply and Demand.
  • Menkveld (2013). High Frequency Trading and the New Market Makers. JFM
  • 📖 Cartea, Jaimungal & Penalva (2015).《Algorithmic and High-Frequency Trading》
  • 📖 Hasbrouck (2007).《Empirical Market Microstructure》
  • 📖 Ernest Chan.《Quantitative Trading》

做市(QR 延伸阅读)

在买卖两端持续报价,赚取 bid-ask spread。听起来简单,难点在于逆向选择——和知情交易者成交就是亏钱。Avellaneda-Stoikov 模型是理解做市问题的经典起点,但在本仓库中只作为 Quant Research 微观结构延伸阅读。

  • 🌟 Ho & Stoll (1981). Optimal Dealer Pricing Under Transactions and Return Uncertainty. JFE
  • 🌟 Guéant, Lehalle & Fernandez-Tapia (2013). Dealing with the Inventory Risk. MFE
  • Grossman & Miller (1988). Liquidity and Market Structure. JF
  • Stoikov (2018). The Micro-Price: A High-Frequency Estimator of Future Prices. QF
  • Glosten & Harris (1988). Estimating the Components of the Bid-Ask Spread. JFE
  • Amihud & Mendelson (1980). Dealership Market: Market-Making with Inventory. JFE
  • Guilbaud & Pham (2013). Optimal High-Frequency Trading with Limit and Market Orders. QF

统计套利

利用资产间的统计关系(协整、相关性、因子结构),在偏离时建仓、回归时平仓。市场中性,不赌方向。配对交易是最经典的入门,但现代统计套利早已进化到 PCA 驱动的篮子交易和机器学习信号。需要警惕相关性崩溃的尾部风险。

  • 🌟 Engle & Granger (1987). Co-integration and Error Correction. Econometrica
  • 🌟 Gatev, Goetzmann & Rouwenhorst (2006). Pairs Trading: Performance of a Relative-Value Arbitrage Rule. RFS
  • Avellaneda & Lee (2010). Statistical Arbitrage in the US Equities Market. QF
  • Krauss (2017). Statistical Arbitrage Pairs Trading Strategies: Review and Outlook. JES
  • 📖 Pole (2007).《Statistical Arbitrage》
  • 📖 Vidyamurthy (2004).《Pairs Trading: Quantitative Methods and Analysis》

市场中性 / 股票对冲

国内量化私募最主流的产品形态。做法是:用因子模型或机器学习选出一篮子 Alpha 股票做多,同时用股指期货(IF/IC/IM)做空对冲市场 Beta,只赚选股能力带来的超额收益。理论上不受大盘涨跌影响,但实际面临基差成本、风格暴露、极端行情下的 Alpha 回撤等问题。2024 年 2 月的量化踩踏事件就是这个策略集中度过高的后果。

  • 🌟 Black & Litterman (1992). Global Portfolio Optimization. FAJ
  • 🌟 Grinold & Kahn (2000). Active Portfolio Management. McGraw-Hill
  • Jacobs & Levy (1993). Long-Short Equity Investing. JPM
  • Asness, Frazzini & Pedersen (2019). Quality Minus Junk. RAP
  • Frazzini & Pedersen (2014). Betting Against Beta. JFE
  • 📖 Qian, Hua & Sorensen.《Quantitative Equity Portfolio Management》

期权与波动率

不赌涨跌,赌波动率。利用期权的非线性特性和隐含波动率的错误定价获利。策略包括波动率套利、gamma scalping、dispersion trading、尾部对冲等。Black-Scholes 是起点,但真正赚钱靠的是对波动率曲面的理解——Gatheral 的书是业界圣经,粗糙波动率(Rough Vol)是近年最大的理论突破。

  • 🌟 Black & Scholes (1973). The Pricing of Options and Corporate Liabilities. JPE
  • 🌟 Heston (1993). A Closed-Form Solution for Options with Stochastic Volatility. RFS
  • 🌟 Gatheral, Jaisson & Rosenbaum (2018). Volatility Is Rough. QF
  • Dupire (1994). Pricing with a Smile. Risk
  • Carr & Madan (1999). Option Valuation Using the Fast Fourier Transform. JCF
  • Bates (1996). Jumps and Stochastic Volatility. RFS
  • Bergomi (2005). Smile Dynamics. Risk
  • 📖 Gatheral (2006).《The Volatility Surface: A Practitioner's Guide》
  • 📖 Taleb (1997).《Dynamic Hedging: Managing Vanilla and Exotic Options》

截面选股

量化选股是国内公募和私募常见的策略方向之一。核心思路是在截面上(同一时间点比较股票)寻找能预测未来收益的因子,构建多空或纯多头组合。从 Fama-French 三因子到现在的数百个因子,学术界和业界一直在争论:哪些因子代表了有效超额收益,哪些只是数据挖掘?

  • 🌟 Fama & French (1993). Common Risk Factors in the Returns on Stocks and Bonds. JFE
  • 🌟 Fama & French (2015). A Five-Factor Asset Pricing Model. JFE
  • 🌟 Harvey, Liu & Zhu (2016). …and the Cross-Section of Expected Returns. RFS
  • Hou, Xue & Zhang (2015). Digesting Anomalies: An Investment Approach. RFS
  • Novy-Marx (2013). The Other Side of Value: The Gross Profitability Premium. JFE
  • McLean & Pontiff (2016). Does Academic Research Destroy Stock Return Predictability? JF
  • 📖 Chincarini & Kim.《Quantitative Equity Portfolio Management》
  • 🌟 📖 石川 等.《因子投资:方法与实践》

🔬 研究前沿:时序预测、资产定价、Alpha 挖掘(点击展开/收起)

🔬 研究前沿:时序预测、资产定价、Alpha 挖掘

方法论层面的前沿方向。和上面"策略方向"的区别是:策略方向告诉你赚什么钱,研究前沿告诉你怎么更高效地找到 Alpha。

时序预测

和截面选股相对的另一个研究视角。截面是同一时间比较不同股票,时序是看单个资产自身的历史规律——过去涨了还会不会继续涨?波动放大了该不该减仓?时序动量(Time Series Momentum)是最经典的信号,本质上和趋势跟踪同源,但学术上更关注收益的可预测性和风险管理。

  • 🌟 Moskowitz, Ooi & Pedersen (2012). Time Series Momentum. JFE
  • 🌟 Lim, Zohren & Roberts (2019). Enhancing Time Series Momentum Strategies Using Deep Neural Networks. QF
  • Goyal & Jegadeesh (2018). Cross-Sectional and Time-Series Tests of Return Predictability. RFS
  • Baz et al. (2015). Dissecting Investment Strategies in the Cross Section and Time Series.
  • 📖 Tsay.《Analysis of Financial Time Series》

机器学习与资产定价

用机器学习重新审视资产定价问题。核心问题是:传统线性因子模型遗漏了哪些非线性关系?Gu, Kelly & Xiu (2020) 是这个方向的里程碑,证明了神经网络和树模型在截面收益预测上显著优于线性模型。

  • 🌟 Gu, Kelly & Xiu (2020). Empirical Asset Pricing via Machine Learning. RFS
  • 🌟 Bryan Kelly, Pruitt & Su (2019). Characteristics Are Covariances: A Unified Model of Risk and Return. JFE
  • 🌟 Bryan Kelly & Xiu (2023). Financial Machine Learning. NBER
  • Feng, Giglio & Xiu (2020). Taming the Factor Zoo: A Test of New Factors. JF
  • Freyberger, Neuhierl & Weber (2020). Dissecting Characteristics Nonparametrically. RFS
  • 🌟 📖 de Prado (2018).《Advances in Financial Machine Learning》

深度学习与量价建模

从手工因子到端到端学习。用 LSTM、Transformer、GNN 等网络结构直接从量价数据中提取信号,替代传统因子工程。挑战在于金融数据的低信噪比和非平稳性——过拟合是最大的敌人。

  • Chen, Pelger & Zhu (2024). Deep Learning in Asset Pricing. Management Science
  • Zhang, Zohren & Roberts (2020). Deep Learning for Portfolio Optimization. JFE
  • Feng, He & Polson (2018). Deep Learning for Predicting Asset Returns. arXiv
  • Xu et al. (2021). Stock Movement Prediction from Tweets and Historical Prices. ACL

因子工厂与 Alpha 挖掘

从人工构造因子到程序化批量生成。WorldQuant 的 101 Alphas 开创了因子工厂模式——用表达式模板自动生成海量因子候选,再通过统计检验筛选。核心挑战是多重检验问题:测了一万个因子,总有几个"显著"的,但可能全是噪音。

  • Kakushadze (2016). 101 Formulaic Alphas. Wilmott
  • Harvey & Liu (2020). Lucky Factors. JFE
  • Chordia, Goyal & Saretto (2020). Anomalies and False Rejections. RFS
  • Chen & Zimmermann (2022). Open Source Cross-Sectional Asset Pricing. Critical Finance Review

📚 书单与资源:书、社区、数据源、研报和竞赛(点击展开/收起)

📚 书单与资源:书、社区、数据源、研报和竞赛

书单

面试

书名 说明
🌟 《A Practical Guide to Quantitative Finance Interviews》(Xinfeng Zhou) 绿皮书,量化面试人手一本,概率/数学/脑筋急转弯全覆盖
《Heard on the Street》(Timothy Crack) 华尔街经典面试题集,偏概率和智力题
《Quant Job Interview Questions and Answers》(Mark Joshi) 偏衍生品定价方向,适合期权岗

数学与统计

书名 说明
🌟 《Introduction to Probability》(Blitzstein & Hwang) Harvard 概率论教材,有免费 PDF,例题极好,面试前刷完前 6 章
《Probability and Statistics for Engineering and the Sciences》(Devore) 概率统计标准教材,覆盖面广
《All of Statistics》(Wasserman) 统计学速成,写给 CS 背景的人看的,紧凑高效
🌟 《Analysis of Financial Time Series》(Tsay) 金融时间序列的权威教材,ARMA/GARCH/协整全覆盖
🌟 《Stochastic Calculus for Finance I & II》(Shreve) 随机微积分的金标准,I 是离散,II 是连续,推导 Black-Scholes 的必经之路
《Convex Optimization》(Boyd & Vandenberghe) 凸优化经典,有免费 PDF,组合优化和风控都离不开

编程

书名 说明
《Python for Data Analysis》(McKinney) pandas 作者亲著,数据清洗的工具书
《Effective Modern C++》(Meyers) 现代 C++ 最佳实践,Quant Research 可作为工程背景阅读,非本仓库主线
《Python for Finance》(Hilpisch) 从零到量化系统的 Python 实战
《Introduction to Linear Algebra》(Strang) 配合 MIT 18.06 公开课食用,PCA/因子模型的数学基础

因子与策略

书名 说明
《Quantitative Equity Portfolio Management》(Chincarini & Kim) 量化股票组合从因子到实盘的全流程
🌟 《Advances in Financial Machine Learning》(de Prado) 金融 ML 实战圣经,数据结构化/防过拟合/回测方法论,业界人手一本
🌟 《Active Portfolio Management》(Grinold & Kahn) 主动管理的理论框架,信息比率、alpha 转移,基金公司研究员必读
《Options, Futures, and Other Derivatives》(Hull) 衍生品入门标准教材,覆盖期货/互换/期权,适合建立全局观
《Option Volatility and Pricing》(Natenberg) 期权交易实战视角,Greeks 直觉讲得很好

机器学习

书名 说明
🌟 《The Elements of Statistical Learning》(Hastie et al.) 统计学习理论经典,有免费 PDF,树模型/正则化/集成学习讲得最透彻
《Deep Learning》(Goodfellow et al.) "花书",深度学习理论基础,CNN/RNN/GAN/优化全覆盖
《Machine Learning for Asset Managers》(de Prado) 资管视角的 ML,聚类/特征重要性/组合构建,薄但密度极高

中文

书名 说明
🌟 石川 等.《因子投资:方法与实践》 中文因子投资圣经,从因子定义到组合构建到陷阱规避,系统性最强
丁鹏.《量化投资:策略与技术》 国内量化入门经典,适合建立全局认知
杨博理 等.《量化投资:以Python为工具》 Python 量化实操入门,有代码可跑

博主与公众号

  • 🌟 石川 / 川总写量化 - 知乎 / 公众号. 国内因子投资写得最好的人,没有之一。每篇文章都有学术论文支撑,但写得让非科班也能看懂。做因子方向必须关注。
  • 🌟 因子动物园 (Factor Zoo) - 公众号. 石川团队出品,系统梳理学术因子文献,追踪前沿论文,比自己翻 SSRN 效率高十倍。
  • 🌟 量化投资与机器学习 (QIML) - 公众号. 国内最大的量化公众号,覆盖 ML 策略、因子研究、行业招聘动态,信息密度高。
  • 交易门 - 播客/公众号. 对话国内外顶尖交易员和量化基金经理,听行业里的人怎么想问题。
  • 数量经济学 - 知乎/公众号. 偏学术向,计量经济学与金融实证方法,适合想打扎实理论基础的人。
  • 大邓和他的Python - 知乎/B站. Python 量化编程教程,适合零基础入门。

社区与平台

  • 🌟 聚宽 JoinQuant - 国内最大量化投研平台,免费数据、回测引擎、社区策略分享,入门首选。
  • 米筐 RiceQuant - 专业量化研究平台,数据质量高,机构用户多。
  • 优矿 Uqer - 通联数据旗下,数据全面,API 友好。
  • QuantConnect - 国际量化平台,Lean 引擎开源,支持多资产多市场。
  • 发明者量化 FMZ - 数字货币/期货量化,支持多语言策略,社区活跃。
  • 知乎:量化交易 - 高质量问答和专栏,搜具体问题经常能找到好答案。
  • 经管之家 - 老牌经济金融学术论坛,有不少历史沉淀的好帖。

A股数据源

数据源 类型 链接
🌟 Tushare Pro 免费,股票/基金/期货/可转债 tushare.pro
🌟 AKShare 开源免费 akfamily/akshare
BaoStock 免费,日K/分钟K/财报 baostock.com
Wind 万得 机构级,最全(付费) wind.com.cn
东方财富 Choice 机构级(付费) choice.eastmoney.com
efinance 开源爬虫 mpquant/efinance

券商金工研报

团队 研究方向
🌟 华泰金工 「人工智能选股」系列、因子体系
🌟 光大金工 因子择时、事件驱动
天风金工 基本面因子、另类数据
中金量化 宏观量化、资产配置
招商金工 多因子模型、行业轮动
开源证券金工 覆盖面广

面试备考

竞赛

学术论文源

  • SSRN - 量化金融工作论文
  • arXiv q-fin - 金融领域最新预印本
  • NBER Working Papers
  • Risk.net / Journal of Financial Economics / Journal of Portfolio Management

🧠 面试八股文:数学、编程、因子、机器学习(点击展开/收起)

🧠 面试八股文:数学、编程、因子、机器学习

数学与统计基础

概率论

Q1:什么是条件概率?贝叶斯公式的直觉是什么?

标准答案:

条件概率 $P(A|B) = P(AB) / P(B)$,表示在B已发生的条件下A发生的概率。

贝叶斯公式:

$$P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)}$$

直觉:贝叶斯公式是"用新证据更新旧信念"的数学表达。$P(A)$ 是先验(你原来的判断),$P(B|A)$ 是似然(新证据在你判断下出现的可能性),$P(A|B)$ 是后验(看到证据后的新判断)。

量化应用:贝叶斯方法在信号衰减判断、因子择时、Black-Litterman模型中被广泛使用。


Q2:大数定律和中心极限定理的区别是什么?

标准答案:

  • 大数定律(LLN):样本均值随样本量增大而趋近于总体均值。强调的是收敛
  • 中心极限定理(CLT):无论总体分布如何,样本均值的分布在n足够大时近似正态分布。强调的是分布形态

关键区别:LLN告诉你"平均值会收敛到真值",CLT告诉你"收敛过程的波动长什么样"。

量化应用:CLT是计算VaR、构建置信区间、进行策略回测统计检验的理论基础。如果收益率不满足独立同分布假设(如存在自相关或异方差),CLT的收敛速度会变慢,需要用Newey-West等方法修正。


Q3:什么是鞅(Martingale)?它在金融中有什么意义?

标准答案:

鞅是一种随机过程,满足 $E[X_{t+1} | \mathcal{F}_t] = X_t$,即给定当前信息,未来期望等于当前值。

金融意义

  • 在风险中性测度下,折现后的资产价格是鞅——这是期权定价的理论基础
  • 如果市场价格是鞅,则不存在趋势性的可预测利润,与有效市场假说一致
  • 鞅差分序列(Martingale Difference Sequence)常用于检验收益率的可预测性

Q4:解释常见的概率分布及其在量化中的应用

标准答案:

分布 特征 量化应用
正态分布 均值对称、薄尾 收益率建模的基准假设(但实际中有偏度和峰度)
对数正态分布 取对数后为正态 股票价格建模(GBM中价格服从对数正态)
t 分布 厚尾 更真实地描述收益率尾部风险,小样本推断
泊松分布 离散事件计数 跳跃扩散模型中的跳跃次数
指数分布 等待时间 订单到达间隔建模(高频)

延伸:实际收益率分布通常呈现"尖峰厚尾"(leptokurtic),正态假设会低估极端风险。用Student-t、GED或混合正态分布能更好地拟合。


数理统计与推断

Q5:什么是极大似然估计(MLE)?与矩估计(GMM)有什么区别?

标准答案:

  • MLE:寻找使观测数据出现概率最大的参数值。$\hat{\theta}{MLE} = \arg\max{\theta} \prod_{i} f(x_i | \theta)$
  • GMM(广义矩估计):利用总体矩条件与样本矩的匹配来估计参数,不需要假定完整的分布形式

核心区别:MLE需要完整的分布假设,效率高但对错误假设敏感;GMM更灵活,只需要矩条件,是半参数方法。

量化应用:GARCH模型常用MLE估计;资产定价模型(如Fama-French)的参数常用GMM估计;Hansen(1982)提出的GMM框架是实证资产定价的核心方法论。


Q6:假设检验中的 p 值到底是什么?为什么不能说"p值是假设为真的概率"?

标准答案:

p 值是在零假设为真的前提下,观测到当前统计量或更极端值的概率。

不能说"零假设为真的概率",因为p值是条件概率 $P(\text{data} | H_0)$,而不是 $P(H_0 | \text{data})$。后者需要贝叶斯框架。

量化应用中的陷阱

  • 策略回测中对数百个参数组合做假设检验,会出现多重检验问题(Multiple Testing)
  • 一个p < 0.05的策略,如果是从1000个策略中筛选出来的,真实显著性远低于5%
  • 修正方法:Bonferroni校正、Benjamini-Hochberg(FDR控制)、Bailey-López de Prado-Marcos的**"发夹弯"校正**

Q7:什么是协方差矩阵?为什么在量化中估计协方差矩阵是困难的?

标准答案:

协方差矩阵 $\Sigma$ 的第(i,j)个元素是资产i和资产j收益率的协方差。它是组合优化、风险管理的核心输入。

困难之处

  1. 维度灾难:N个资产需要估计 $N(N+1)/2$ 个参数,当N大于样本量T时,样本协方差矩阵奇异
  2. 噪声放大:样本协方差矩阵中的小特征值会被取逆时放大,导致组合权重极端
  3. 非平稳性:协方差结构随时间变化

常用解决方案

  • Ledoit-Wolf收缩估计:将样本矩阵向结构化目标(如对角阵)收缩
  • 因子模型降维:假设 $\Sigma = B F B^T + D$(因子部分 + 特异性部分)
  • 随机矩阵理论(RMT):用Marchenko-Pastur分布识别并剔除噪声特征值
  • DCC-GARCH:建模时变协方差

线性代数

Q8:特征值分解(EVD)和奇异值分解(SVD)有什么区别?在量化中怎么用?

标准答案:

  • EVD:$A = P \Lambda P^{-1}$,仅适用于方阵。$\Lambda$ 是特征值对角阵。
  • SVD:$A = U \Sigma V^T$,适用于任意矩阵。$\Sigma$ 是奇异值对角阵。

对于对称半正定的协方差矩阵,EVD和SVD等价。

量化应用

  • PCA(主成分分析):对收益率协方差矩阵做EVD,前几个主成分通常对应市场、规模、价值等系统性因子
  • 降噪:去除小特征值对应的成分
  • 正则化:SVD用于病态线性回归(岭回归本质上是对奇异值做收缩)

Q9:什么是正定矩阵?为什么协方差矩阵必须半正定?

标准答案:

正定矩阵满足对任意非零向量 $x$,$x^T A x > 0$;半正定则 $\geq 0$

协方差矩阵必须半正定,因为组合方差 $w^T \Sigma w$ 在物理意义上不能为负。如果估计出的协方差矩阵不是半正定的(如用不同时间窗口的数据拼接),需要做"最近半正定矩阵"投影(如Higham算法)。


随机过程与时间序列

Q10:什么是平稳性(Stationarity)?为什么要关心它?

标准答案:

  • 严平稳:联合分布不随时间平移改变
  • 宽平稳(弱平稳):均值和自协方差函数不随时间变化

为什么关心:几乎所有时间序列建模方法(ARMA、协整分析等)都假设平稳性。对非平稳序列直接建模会产生伪回归(Spurious Regression),R²虚高但没有真实关系。

检验方法:ADF检验、PP检验、KPSS检验(注意KPSS的零假设是平稳)。

处理方法:差分(I(1)序列差分一次变平稳)、去趋势、对数变换。


Q11:ARIMA 和 GARCH 模型的区别与联系?

标准答案:

  • ARIMA(p,d,q):建模条件均值。描述收益率本身的自回归和移动平均结构。
  • GARCH(p,q):建模条件方差。描述波动率的聚集效应(volatility clustering)。

联系:通常组合使用,ARIMA建模均值方程,GARCH建模残差的方差方程。完整模型:

$$r_t = \mu_t(\text{ARIMA}) + \epsilon_t, \quad \epsilon_t = \sigma_t z_t, \quad \sigma_t^2 = \omega + \alpha \epsilon_{t-1}^2 + \beta \sigma_{t-1}^2$$

量化应用:GARCH族模型广泛用于波动率预测、VaR计算、期权隐含波动率建模。常用扩展包括EGARCH(捕捉杠杆效应)、GJR-GARCH等。


Q12:什么是协整(Cointegration)?和相关性有什么区别?

标准答案:

  • 相关性:衡量两个变量线性关联的强度,是静态的
  • 协整:两个非平稳序列的某个线性组合是平稳的,是动态的长期均衡关系

经典例子:醉汉和他的狗——各自随机游走(非平稳),但距离围绕某个均值波动(协整)。

量化应用:配对交易(Pairs Trading)的理论基础。找到协整关系后:

  1. 构建价差 $S_t = Y_t - \beta X_t$
  2. 当价差偏离均值时建仓,回归时平仓
  3. 常用Engle-Granger两步法或Johansen检验判断协整关系

注意:高相关不代表协整,协整也不要求高相关。


随机微积分基础

Q13:什么是布朗运动?Itô引理是什么?

标准答案:

布朗运动(维纳过程) $W_t$

  • $W_0 = 0$
  • 增量独立且服从 $W_{t+s} - W_t \sim N(0, s)$
  • 路径连续但处处不可微

Itô引理:随机微积分的"链式法则"。若 $dX_t = \mu , dt + \sigma , dW_t$,则对 $f(X_t, t)$

$$df = \left(\frac{\partial f}{\partial t} + \mu \frac{\partial f}{\partial x} + \frac{1}{2}\sigma^2 \frac{\partial^2 f}{\partial x^2}\right)dt + \sigma \frac{\partial f}{\partial x} dW_t$$

比普通链式法则多了 $\frac{1}{2}\sigma^2 f''$ 项,因为 $(dW_t)^2 = dt$

量化应用:推导Black-Scholes公式、理解对冲比率(Delta)、推导各种衍生品定价公式。


Q14:几何布朗运动(GBM)的假设和局限是什么?

标准答案:

GBM模型:

$$dS_t = \mu S_t , dt + \sigma S_t , dW_t$$

解为:

$$S_t = S_0 \exp\left[\left(\mu - \frac{\sigma^2}{2}\right)t + \sigma W_t\right]$$

假设

  • 对数收益率独立同分布且服从正态
  • 波动率恒定
  • 无跳跃

局限

  • 实际中波动率不恒定(波动率微笑/偏斜)
  • 收益率有厚尾(极端事件被低估)
  • 存在跳跃(如财报发布、政策突变)
  • 收益率存在自相关和波动率聚集

改进模型:随机波动率模型(Heston)、跳跃扩散模型(Merton)、局部波动率模型(Dupire)。


编程(Python / C++)

Python基础与数据处理

Q15:Python中 list、tuple、dict、set 的区别与适用场景?

标准答案:

类型 可变性 有序性 查找复杂度 量化场景
list 可变 有序 O(n) 时间序列存储、策略信号列表
tuple 不可变 有序 O(n) 作为dict的key(如 (date, ticker))、函数多返回值
dict 可变 有序(3.7+) O(1) ticker→price映射、参数配置
set 可变 无序 O(1) 股票池去重、集合运算(交集并集求共同持仓)

面试高频追问:dict的底层实现是哈希表,冲突解决用开放寻址法(CPython);set也是哈希表。


Q16:深拷贝和浅拷贝的区别?在量化中踩坑的例子?

标准答案:

  • 浅拷贝copy.copy()list.copy()):创建新对象,但内部元素仍引用原对象
  • 深拷贝copy.deepcopy()):递归复制所有层级的对象

量化踩坑

# 危险:portfolio_b 和 portfolio_a 共享内部列表
portfolio_a = {'holdings': [{'ticker': 'AAPL', 'weight': 0.5}]}
portfolio_b = portfolio_a.copy()       # 浅拷贝
portfolio_b['holdings'][0]['weight'] = 0.3  # portfolio_a 也被修改了!

回测中修改了一个策略的持仓,另一个策略的持仓也被污染——这类bug极其隐蔽。


Q17:Pandas 中 applymapvectorized operations 的性能差异?

标准答案:

性能排序(快→慢):NumPy向量化 > Pandas内置方法 > apply > 纯Python循环

# 最快:向量化
df['ret'] = df['close'].pct_change()

# 较快:内置方法
df['log_ret'] = np.log(df['close'] / df['close'].shift(1))

# 慢:apply(每行调用一次Python函数)
df['signal'] = df.apply(lambda row: my_func(row['a'], row['b']), axis=1)

# 最慢:iterrows
for idx, row in df.iterrows(): ...

原则:能向量化就不用apply,能用内置方法就不自己写。处理大型tick数据时,性能差异可达100倍以上。

进阶:对无法向量化的复杂逻辑,考虑用 numba.jit 加速或用 polars 替代Pandas。


Q18:Python GIL是什么?如何在量化中实现真正的并行?

标准答案:

GIL(全局解释器锁)使得CPython中同一时刻只有一个线程执行Python字节码。

影响:CPU密集型任务(如大规模因子计算)无法通过多线程加速。

解决方案

方案 适用场景 工具
多进程 CPU密集型因子计算 multiprocessing, joblib, concurrent.futures.ProcessPoolExecutor
多线程 IO密集型(数据下载、API请求) threading, asyncio
向量化/C扩展 数值计算 NumPy, Numba, Cython
分布式计算 超大规模回测 Dask, Ray, Spark

Q19:如何避免Pandas中的 "SettingWithCopyWarning"?

标准答案:

这个警告出现在对DataFrame切片的赋值操作中,因为切片可能返回视图(view)而非副本(copy),赋值行为不确定。

# 危险写法:链式索引
df[df['sector'] == 'tech']['weight'] = 0.5  # 可能无效

# 正确写法1:.loc
df.loc[df['sector'] == 'tech', 'weight'] = 0.5

# 正确写法2:显式copy
subset = df[df['sector'] == 'tech'].copy()
subset['weight'] = 0.5

Python进阶

Q20:装饰器(Decorator)的原理?在量化系统中的实际应用?

标准答案:

装饰器本质上是一个接收函数并返回新函数的高阶函数,语法糖 @decorator 等价于 func = decorator(func)

量化中的实际应用

import time
import functools

# 1. 计时器:监控因子计算耗时
def timer(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
        start = time.perf_counter()
        result = func(*args, **kwargs)
        elapsed = time.perf_counter() - start
        print(f"{func.__name__} took {elapsed:.4f}s")
        return result
    return wrapper

# 2. 缓存:避免重复计算(如日频因子值)
from functools import lru_cache

@lru_cache(maxsize=1024)
def get_factor_exposure(ticker, date):
    ...

# 3. 重试机制:应对数据源不稳定
def retry(max_retries=3, delay=1):
    def decorator(func):
        @functools.wraps(func)
        def wrapper(*args, **kwargs):
            for attempt in range(max_retries):
                try:
                    return func(*args, **kwargs)
                except Exception as e:
                    if attempt == max_retries - 1:
                        raise
                    time.sleep(delay * (attempt + 1))
        return wrapper
    return decorator

Q21:Python中的生成器(Generator)是什么?在量化中的应用?

标准答案:

生成器是使用 yield 关键字的函数,它惰性地产生值,不会一次性将所有结果加载到内存。

量化应用:处理大规模tick数据时避免内存溢出。

def read_ticks(filepath):
    """逐行读取数亿行tick数据,内存占用恒定"""
    with open(filepath) as f:
        header = f.readline().strip().split(',')
        for line in f:
            values = line.strip().split(',')
            yield dict(zip(header, values))

# 流式处理,内存友好
for tick in read_ticks('huge_tick_data.csv'):
    process(tick)

也常用于滚动窗口计算、事件驱动回测引擎的信号生成等。


C++ 基础(QR 延伸阅读)

Q22:C++ 中指针和引用的区别?

标准答案:

特性 指针 引用
可否为空 可以为nullptr 不可以,必须绑定对象
可否重新绑定 可以指向其他对象 不可以,绑定后不变
语法 需要 * 解引用 直接使用,语法透明
内存 占用空间(存地址) 通常被编译器优化为别名

量化场景:高频交易系统中传递大型订单簿对象时用 const & 避免拷贝开销;智能指针(shared_ptr, unique_ptr)管理行情数据的生命周期。


Q23:C++ 中的虚函数(virtual function)和多态是什么?

标准答案:

虚函数允许通过基类指针/引用调用派生类的重写方法,实现运行时多态。底层通过虚函数表(vtable)实现。

class Strategy {
public:
    virtual void on_market_data(const MarketData& md) = 0;  // 纯虚函数
    virtual ~Strategy() = default;  // 虚析构函数(重要!)
};

class MomentumStrategy : public Strategy {
public:
    void on_market_data(const MarketData& md) override {
        // 动量策略的具体实现
    }
};

面试追问:为什么基类析构函数要声明为virtual?——如果不声明,通过基类指针delete派生类对象时只调用基类析构函数,派生类资源不会释放,造成内存泄漏。


Q24:什么是 move 语义和右值引用?在高频系统中的意义?

标准答案:

C++11引入右值引用(&&)和 std::move,允许"窃取"临时对象的资源而非拷贝。

// 拷贝:O(n) —— 分配新内存,逐元素复制
std::vector<Order> orders2 = orders1;

// 移动:O(1) —— 直接接管 orders1 的内存
std::vector<Order> orders3 = std::move(orders1);
// orders1 此后处于"有效但未定义"状态

高频意义:在微秒级延迟的交易系统中,一次不必要的深拷贝可能就是几微秒的延迟。移动语义在订单传递、行情数据转发等热路径上至关重要。


Q25:C++ STL 容器的选择原则?

标准答案:

容器 底层结构 查找 插入/删除 量化场景
vector 连续数组 O(n) 尾部O(1) 时间序列、K线存储
deque 分段连续 O(n) 头尾O(1) 滑动窗口
map/set 红黑树 O(log n) O(log n) 有序订单簿
unordered_map/set 哈希表 O(1)均摊 O(1)均摊 ticker→策略映射
priority_queue 取极值O(1) 插入O(log n) 事件驱动引擎的事件队列

高频考虑vector 因内存连续、缓存友好,在遍历性能上远优于链表。高频系统中优先使用 vector + 排序,而非 map


Q26:什么是模板(Template)元编程?在量化中有什么用?

标准答案:

模板允许在编译期生成特化代码,实现零开销抽象。

// 编译期计算阶乘
template<int N>
struct Factorial {
    static constexpr int value = N * Factorial<N-1>::value;
};
template<>
struct Factorial<0> {
    static constexpr int value = 1;
};

量化应用

  • 表达式模板(Expression Templates):避免临时对象,实现高效矩阵运算(Eigen库的核心技术)
  • 策略模式的编译期实现:用模板参数选择不同的执行逻辑,避免虚函数的间接调用开销
  • CRTP(Curiously Recurring Template Pattern):静态多态,高频系统中替代虚函数

NumPy / 数值计算

Q27:NumPy 的广播(Broadcasting)机制是什么?

标准答案:

广播允许不同形状的数组进行运算。规则:

  1. 从最后一个维度开始对齐
  2. 每个维度要么相同,要么其中一个为1
  3. 维度为1的那个轴会被"广播"(逻辑复制)
# 对每只股票的收益率减去其均值(截面去均值)
returns = np.random.randn(252, 500)     # (252天, 500只股票)
mean_ret = returns.mean(axis=0)          # (500,)
demeaned = returns - mean_ret            # 广播:(252, 500) - (500,) → (252, 500)

理解广播是写出高效NumPy代码的关键,避免不必要的循环和内存分配。


Q28:如何用NumPy高效实现滚动窗口计算?

标准答案:

# 方法1:stride_tricks(零拷贝,最高效)
from numpy.lib.stride_tricks import sliding_window_view
windows = sliding_window_view(prices, window_shape=20)  # (n-19, 20)
rolling_mean = windows.mean(axis=1)

# 方法2:cumsum技巧(O(n),适合求和/均值)
cumsum = np.cumsum(np.insert(prices, 0, 0))
rolling_sum = cumsum[20:] - cumsum[:-20]
rolling_mean = rolling_sum / 20

# 方法3:Pandas(最方便,但慢于纯NumPy)
pd.Series(prices).rolling(20).mean()

在大规模因子计算中,方法1和2比Pandas快3-10倍。


因子与 Alpha 策略

因子投资基础

Q29:什么是因子(Factor)?Alpha 和 Beta 的区别?

标准答案:

因子:能够系统性解释资产收益率截面差异的变量。

Alpha vs Beta

  • Beta(系统性风险暴露):承担市场、规模、价值等公共因子风险获得的补偿,人人可以获取
  • Alpha(超额收益):在控制所有已知因子暴露后剩余的收益,来自信息优势或更优的执行

$$r_i - r_f = \alpha_i + \beta_{i,MKT} \cdot (r_{MKT} - r_f) + \beta_{i,SMB} \cdot SMB + \beta_{i,HML} \cdot HML + \epsilon_i$$

如果 $\alpha_i$ 显著大于零,说明存在无法被已知因子解释的超额收益。

核心洞察:今天的Alpha可能是明天的Beta——当一个信号被足够多的人知晓和使用后,它就变成了一个定价因子。


Q30:解释 Fama-French 三因子和五因子模型

标准答案:

三因子模型(1993)

  • MKT(市场因子):市场组合超额收益
  • SMB(Small Minus Big):小盘股超额收益
  • HML(High Minus Low):高B/M(价值股)超额收益

五因子模型(2015)新增

  • RMW(Robust Minus Weak):高盈利vs低盈利
  • CMA(Conservative Minus Aggressive):低投资vs高投资

核心贡献:建立了因子投资的分析框架。任何策略的收益都应该用这些因子回归分解——如果Alpha不显著,说明你只是在承担已知风险。

争议:HML在五因子模型中可能是冗余的(被RMW和CMA吸收);动量因子(UMD)未被包含但实证上很强。


Q31:常见的量价因子有哪些?如何构建?

标准答案:

因子类别 代表因子 构建逻辑
动量 12-1月动量 过去12个月累计收益(跳过最近1个月)
反转 短期反转 过去1个月/1周收益取反
波动率 特质波动率 回归残差的标准差(IVOL)
流动性 Amihud非流动性 $|r| / \text{Volume}$ 的均值
换手率 平均换手率 日均成交量 / 流通股本
量价背离 价升量缩 价格与成交量趋势方向不一致的程度

构建流程

  1. 原始值计算 → 2. 截面标准化(z-score或排序) → 3. 异常值处理(MAD/Winsorize) → 4. 行业/市值中性化 → 5. 缺失值填充

Q32:什么是因子 IC(Information Coefficient)和 IR(Information Ratio)?

标准答案:

  • IC:因子值与下期收益率的截面Rank相关系数(Spearman)。衡量因子单期选股能力。

    • IC > 0.03 就算不错了
    • 更稳健的变体:RankIC、quantile-spread
  • ICIR:$ICIR = \frac{\overline{IC}}{\sigma_{IC}}$,即IC均值除以IC标准差。衡量因子的稳定性。

    • ICIR > 0.5 通常认为是优秀因子
  • IR(策略层面):$IR = \frac{\text{年化超额收益}}{\text{年化跟踪误差}}$。衡量策略承担主动风险的效率。

基本定律(Fundamental Law of Active Management)

$$IR \approx IC \times \sqrt{BR}$$

其中 $BR$(Breadth)是独立决策次数。含义:微弱的IC也可以通过大量独立决策积累出好的IR。


Q33:因子的多重共线性问题如何处理?

标准答案:

当多个因子高度相关时(如EP和BP都是价值因子),回归系数不稳定,单因子测试有效但组合后失效。

处理方法

  1. 正交化:对因子做Gram-Schmidt正交化或回归取残差
  2. PCA降维:提取主成分作为合成因子
  3. 因子分组:同类因子等权合成为一个复合因子
  4. 弹性网络(Elastic Net):L1+L2正则化自动处理共线性
  5. VIF检验:方差膨胀因子 > 10 视为严重共线性

Q34:什么是因子拥挤(Factor Crowding)?如何检测和应对?

标准答案:

因子拥挤:过多资金追逐同一个因子策略,导致因子估值过高、预期收益下降、崩盘风险上升。

检测信号

  • 因子多空组合的估值价差达到历史极端
  • 短边借股成本飙升(做空拥挤)
  • 同类策略的相关性上升
  • 因子回撤加深且恢复变慢

历史案例:2007年8月量化危机——大量统计套利基金同时去杠杆,价值和动量因子在几天内回撤超过20%。

应对

  • 监控因子估值水平和拥挤度指标
  • 分散因子来源(基本面+量价+另类数据)
  • 动态调整因子暴露
  • 保持流动性缓冲

组合优化

Q35:均值-方差优化(MVO)的原理和问题?

标准答案:

原理(Markowitz, 1952)

$$\min_w \frac{1}{2} w^T \Sigma w \quad \text{s.t.} \quad w^T \mu = \mu_{\text{target}}, \quad \mathbf{1}^T w = 1$$

求解得到有效前沿上的最优组合。

实践中的问题

  1. 对输入极度敏感:期望收益率微小变化会导致权重剧烈变动("误差最大化器")
  2. 估计风险:期望收益率极难准确估计,协方差矩阵含噪
  3. 集中持仓:最优解常常极度集中在少数资产上
  4. 忽略交易成本:理论最优组合频繁调仓不现实

改进方法

  • Black-Litterman模型(融入主观观点)
  • 加入正则化约束(如持仓上下限、换手约束)
  • 风险平价(Risk Parity):$w_i \propto 1/\sigma_i$
  • 最小方差组合(不需要估计期望收益率)
  • 收缩估计(Ledoit-Wolf)改进协方差矩阵输入

Q36:什么是风险平价(Risk Parity)?和等权有什么区别?

标准答案:

风险平价:使每个资产对组合总风险的贡献相等。

资产i的风险贡献:$RC_i = w_i \cdot (\Sigma w)_i$

风险平价要求:$RC_1 = RC_2 = \cdots = RC_N = \frac{w^T \Sigma w}{N}$

vs 等权:等权是 $w_i = 1/N$(权重相等),风险平价是风险贡献相等。在波动率差异大的多资产组合中,等权会让高波动资产主导风险。

典型应用:Bridgewater的All Weather策略。股债配比中,股票波动率远高于债券,等权配比下股票贡献90%+的风险;风险平价下需要大量增配债券(通常加杠杆),使风险贡献均衡。


回测与策略评估

Q37:回测中常见的偏差(Bias)有哪些?

标准答案:

偏差 描述 危害
前视偏差(Look-ahead Bias) 使用了回测时刻不可得的未来信息 收益虚高,致命
幸存者偏差(Survivorship Bias) 只用了存续至今的股票/基金数据 高估历史收益
过拟合偏差 参数过度拟合历史数据 样本外表现崩塌
交易成本忽略 不考虑滑点、手续费、冲击成本 盈利被吃掉
时间段选择偏差 选择有利的回测区间 不具代表性

如何减轻

  • 严格使用 point-in-time 数据库
  • 在回测框架中内置时间戳检查
  • 分样本内/样本外/前向验证
  • 纸交易(Paper Trading)验证

Q38:常用的策略评估指标有哪些?各自的局限?

标准答案:

指标 公式/含义 局限
年化收益率 $(1+R_{\text{total}})^{252/T} - 1$ 不反映风险
夏普比率(Sharpe) $\frac{R_p - R_f}{\sigma_p}$ 假设正态分布,忽略尾部风险
索提诺比率(Sortino) 用下行偏差替代标准差 更关注下行风险,但对下行的定义依赖阈值
最大回撤(Max DD) 峰值到谷底的最大跌幅 只描述单次最坏情况
Calmar比率 年化收益 / 最大回撤 对单一极端事件敏感
信息比率(IR) 超额收益 / 跟踪误差 依赖于基准选择

进阶指标

  • t统计量:$t = \frac{SR \times \sqrt{T}}{\text{correction}}$,检验夏普比率是否显著异于零
  • Bailey-López de Prado建议:至少需要 $t &gt; 3$ 才可信(考虑多重检验后)

Q39:什么是过拟合?如何在策略开发中避免?

标准答案:

过拟合:模型/策略在历史数据上表现优异,但在新数据上表现大幅衰减。本质上是拟合了噪声而非信号。

判断信号

  • 样本内夏普比率远高于样本外
  • 策略逻辑过于复杂(大量参数、特殊规则)
  • 对参数微调极度敏感

避免方法

  1. 数据层面:训练集/验证集/测试集严格分离;使用 Walk-Forward 验证
  2. 模型层面:限制参数数量;用简单模型作为基线
  3. 统计层面:对多重测试做校正(Deflated Sharpe Ratio)
  4. 经济学层面:策略逻辑必须有合理的经济学解释
  5. 稳健性检验:更换时间窗口、市场、参数范围看策略是否稳定

Marcos López de Prado 的提醒:回测更适合承担验证职责,研究本身应先来自假设与机制。


Q40:什么是交易成本模型?如何估计市场冲击成本?

标准答案:

交易成本构成

  • 显性成本:佣金、印花税、交易所费用
  • 隐性成本:买卖价差(bid-ask spread)、市场冲击(market impact)、时机成本

市场冲击模型

Almgren-Chriss模型(经典):

$$\text{Impact} = \sigma \cdot \gamma \cdot \left(\frac{V}{ADV}\right)^{\delta}$$

其中 $V$ 是订单量,$ADV$ 是日均成交量,$\gamma$ 和 $\delta$ 是经验参数。

平方根模型(业界常用简化版):

$$\text{Impact} \approx \sigma \cdot \sqrt{\frac{V}{ADV}}$$

重要性:高换手策略(如短期反转)的收益可能被冲击成本完全吃掉。策略开发时必须将冲击成本纳入回测。


机器学习 / 深度学习在量化中的应用

机器学习基础

Q41:偏差-方差权衡(Bias-Variance Tradeoff)是什么?

标准答案:

$$\text{MSE} = \text{Bias}^2 + \text{Variance} + \text{Irreducible Noise}$$

  • 偏差(Bias):模型假设过于简单导致的系统性误差。欠拟合。
  • 方差(Variance):模型对训练数据过度敏感导致的波动。过拟合。

在量化中的含义

  • 高偏差模型(如简单线性回归)可能错过非线性alpha
  • 高方差模型(如深度神经网络)可能拟合市场噪声
  • 金融数据信噪比极低(信号微弱、噪声巨大),通常偏向低方差模型更安全
  • 原则:宁可欠拟合也不要过拟合——错过一个机会的代价远小于错误地相信一个不存在的机会

Q42:正则化(L1/L2/ElasticNet)的区别和量化应用?

标准答案:

正则化 惩罚项 效果 量化场景
L1(Lasso) $\lambda \sum |w_i|$ 产生稀疏解,自动选择因子 从大量候选因子中筛选有效因子
L2(Ridge) $\lambda \sum w_i^2$ 缩小权重但不为零 因子共线性处理,稳定回归
Elastic Net $\alpha L1 + (1-\alpha) L2$ 兼具稀疏和稳定 高维因子选择的默认选择

直觉:L1像用刀切(有的因子直接砍到0),L2像用手压(所有因子都缩小但保留)。

量化中的额外考虑:正则化强度 $\lambda$ 的选择不应只看交叉验证误差,还要考虑因子的经济学可解释性——如果L1选出了无法解释的因子,可能只是拟合了噪声。


Q43:时间序列的交叉验证应该怎么做?为什么不能用普通K-Fold?

标准答案:

问题:普通K-Fold随机划分,破坏了时间序列的时序结构,导致未来信息泄漏到训练集。

正确方法

Time →
|---Train---|---Gap---|--Test--|                 第1轮
|------Train-------|---Gap---|--Test--|          第2轮
|---------Train-----------|---Gap---|--Test--|   第3轮
  • Walk-Forward(前向验证):固定或扩展窗口训练,向前滚动测试
  • Embargo Gap:训练集和测试集之间留缓冲期,防止特征计算中的信息泄漏
  • Purged K-Fold(López de Prado提出):在K-Fold基础上,清除训练集中与测试集标签在时间上重叠的样本

Embargo的计算:如果特征使用了过去20天的数据来预测未来5天的收益,Embargo至少应设为5天(标签的前瞻窗口)。


Q44:XGBoost / LightGBM 为什么在量化比赛中这么流行?

标准答案:

核心优势

  1. 天然处理非线性和交互:树模型自动捕捉因子间的非线性关系和交互效应
  2. 对异常值鲁棒:基于排序分裂,不受因子分布影响
  3. 特征重要性:内置特征选择,直接看哪些因子有用
  4. 缺失值处理:原生支持缺失值
  5. 训练效率高:GPU加速,大规模因子矩阵可快速训练

量化中的关键调参

  • max_depth:3-7即可,太深容易过拟合
  • learning_rate:0.01-0.1,配合较多的 n_estimators
  • subsample / colsample_bytree:0.5-0.8,增加随机性
  • min_child_weight:防止拟合噪声

注意:树模型在量化中的表现上限可能不如线性模型——因为金融数据信噪比极低,复杂模型更容易拟合噪声。实际中线性模型+好因子常常比复杂模型+普通因子更稳定。


Q45:特征工程在量化ML中有哪些关键技巧?

标准答案:

技巧 描述 原因
截面排序/z-score 每个截面时间点标准化 消除时间趋势,保留截面排序信息
滞后特征 feature_lag1, feature_lag5 捕捉因子动量或反转
滚动统计量 均值、标准差、偏度、峰度 捕捉分布特征的时变性
交互特征 因子A × 因子B 捕捉条件效应(如"价值+动量"联合信号)
分位数编码 连续值→分位数桶 减少异常值影响,对树模型可提升稳定性
目标编码的陷阱 不可对测试集做全局编码 信息泄漏的常见来源

最重要的原则:每个特征必须在预测时刻(point-in-time)确实可以获得。回测中使用了未来信息的特征工程是最隐蔽的前视偏差。


深度学习

Q46:RNN / LSTM / Transformer 在量化时间序列预测中各自的优劣?

标准答案:

模型 优势 劣势 量化适用
RNN 简单、参数少 梯度消失、长程依赖弱 基本淘汰
LSTM 门控机制解决长程依赖 串行计算慢,超参敏感 中频时序预测
GRU 比LSTM简化、参数更少 能力略弱于LSTM LSTM的轻量替代
Transformer 并行计算、全局注意力 对位置敏感,数据需求大 多因子截面学习,注意力权重可解释
Temporal Fusion Transformer 专为时序设计,内置变量选择 复杂度高 多变量时序+可解释性需求

实践建议:不要迷信模型复杂度。在低信噪比的金融数据中,简单LSTM配合好的特征工程和正则化,常常优于Transformer。


Q47:AutoEncoder 和 VAE 在量化中有什么用?

标准答案:

AutoEncoder(AE)

$$\text{Input} \xrightarrow{\text{Encoder}} \text{Latent} \xrightarrow{\text{Decoder}} \text{Reconstruction}$$

量化应用

  • 因子降维:从上百个原始因子中提取非线性压缩表示
  • 异常检测:重建误差大的样本可能是异常行情
  • 缺失值填充:用训练好的AE重建缺失的因子值

VAE(变分自编码器)

在AE基础上引入概率,latent space是参数化的高斯分布:$q(z|x) \sim N(\mu, \sigma^2)$

额外能力

  • 生成合成金融数据(数据增强)
  • 对市场状态的不确定性建模
  • 更平滑的latent space有利于下游任务

Q48:GAN(生成对抗网络)在量化中有哪些应用?

标准答案:

金融数据生成

  • 生成合成的价格路径/收益率序列,用于扩充训练集
  • 生成极端行情场景(压力测试)
  • 保护隐私的数据共享

常用变体

  • TimeGAN:专门针对时间序列数据,保留时序依赖性
  • WGAN-GP:训练更稳定,避免模式崩塌

核心挑战

  • 评估生成质量困难——FID等图像指标不直接适用
  • 必须验证生成数据的统计特性(自相关、波动率聚集、厚尾、杠杆效应)
  • 用生成数据训练的模型,样本外表现仍需在真实数据上验证

Q49:图神经网络(GNN)在量化中的应用场景?

标准答案:

金融市场天然是图结构:股票之间通过产业链、股东关系、资金流、相关性等形成网络。

应用场景

  • 关联股预测:上下游公司的信息传导(供应链图谱)
  • 行业传导:行业龙头的涨跌对同行业/产业链的影响建模
  • 风险传染:金融机构间的系统性风险传导
  • 知识图谱因子:从企业关系图中提取因子(如"供应商动量"因子)

常用模型:GCN、GAT(Graph Attention Network)、GraphSAGE

关键难点:图结构本身是动态变化的(公司关系、股东结构会变),需要时序图网络(Temporal GNN)或定期更新图结构。


强化学习

Q50:强化学习(RL)在量化中的应用和挑战?

标准答案:

应用场景

  • 最优执行:将大单拆分为小单逐步执行,最小化冲击成本(Almgren-Chriss的RL版本)
  • 动态组合管理:根据市场状态动态调整持仓,考虑交易成本
  • 做市策略:动态调整报价价差和挂单量

常用算法

  • PPO / A2C / SAC(连续动作空间,适合权重/价格决策)
  • DQN(离散动作空间,适合买/卖/持有决策)

核心挑战

  1. 数据不足:金融数据的有效样本远少于游戏/机器人场景
  2. 非平稳环境:市场结构持续变化,训练好的agent可能快速失效
  3. 奖励设计困难:简单用PnL做reward会导致高方差;需要设计风险调整后的reward
  4. 模拟器偏差:回测模拟器无法完美还原真实市场的冲击和流动性
  5. 可解释性差:策略决策过程不透明,难以获得风控信任

实践建议:RL在执行优化(Optimal Execution)中最为成熟,在alpha策略中仍处于研究阶段。


实战问题

Q51:如何处理金融数据中标签(Label)不平衡的问题?

标准答案:

场景:预测涨跌时,实际中大量微小变动(噪声),真正大涨大跌是少数。

处理方法

  1. 标签重定义:不用涨跌,用超额收益分位数(Top 20% vs Bottom 20%,中间丢弃)
  2. 重采样:过采样少数类(SMOTE)或欠采样多数类
  3. 损失函数加权class_weight='balanced' 或 Focal Loss
  4. 评估指标:不用Accuracy,用AUC、Precision-Recall、IC等

量化特有考虑:金融中"不平衡"不一定是问题——中间区域的样本可能确实不包含有效信号,强行学习反而引入噪声。Triple-barrier方法(López de Prado)通过止盈、止损、最长持有期三个条件定义标签,是更好的方案。


Q52:如何在量化ML中防止信息泄漏?

标准答案:

常见泄漏来源

  1. 特征泄漏

    • 使用了包含未来信息的因子(如未来才发布的财报数据)
    • 用全局统计量做标准化(应该用历史窗口内的统计量)
  2. 标签泄漏

    • 收益率标签与特征时间窗口重叠
    • 例:用t-20到t天的均值预测t到t+5的收益,但t-20到t已包含了部分t+5的信息
  3. 验证泄漏

    • 用未来数据调参(如用整个时期做网格搜索选最优参数)
    • K-Fold未保持时序
  4. 数据处理泄漏

    • 先做全局PCA再划分训练/测试集
    • 缺失值用全局均值填充

防御清单

  • 所有数据处理管道必须在训练集上fit,在测试集上transform
  • 建立 point-in-time 数据库,每条数据标注其可用时间
  • sklearn.pipeline.Pipeline 封装所有预处理步骤

Q53:解释 Attention 机制在多因子选股中的应用

标准答案:

传统多因子模型对所有因子等权或固定权重组合,Attention机制允许模型动态地针对不同股票和不同时期为因子分配不同权重。

具体做法

输入:N只股票 × K个因子 × T个时间步
               ↓
   时间维度 Attention:关注哪些历史时刻更重要
               ↓
   因子维度 Attention:关注哪些因子在当前市场环境下更有效
               ↓
   输出:每只股票的预测收益率 / 排序分数

优势

  • 自动实现"因子择时"——在不同市场状态下侧重不同因子
  • Attention权重提供可解释性——可以看到模型关注了哪些因子
  • Cross-Attention可以捕捉股票之间的关联信息

挑战:模型容易过拟合,需要较强的正则化和较大的样本量。


Q54:量化中的集成学习(Ensemble Learning)策略有哪些?

标准答案:

方法 原理 量化应用
Bagging 多个模型在不同子样本上训练,平均预测 随机森林做因子打分
Boosting 串行训练,每个模型修正前一个的残差 XGBoost/LightGBM因子选股
Stacking 用元模型组合基模型的预测 第一层多个异质模型,第二层线性组合
Blending 简单加权平均多个模型的输出 多策略信号等权/风险平价组合

量化中的特殊集成技巧

  • 时间集成:对不同时间窗口训练的模型取平均,增强稳定性
  • 因子集成:同一个Alpha逻辑,用多个模型(线性、树、NN)分别实现,取中位数信号
  • 交叉验证集成:K个Fold的模型全部保留,对新数据取K个预测的均值

核心洞察:集成学习的价值不在于提高精度,而在于降低方差——在低信噪比的金融数据中,降低方差比提高精度更重要。


Q55:大语言模型(LLM)在量化中有哪些应用?

标准答案:

已落地的应用

  • 新闻/公告情感分析:用LLM解析财报电话会议、新闻、社交媒体的情绪
  • 事件提取:从非结构化文本中提取并购、高管变动、产品发布等事件
  • 研报摘要与因子化:将卖方研报的观点量化为多空信号
  • 代码辅助:加速策略开发、回测代码编写

前沿探索

  • LLM作为Alpha信号:直接让LLM根据新闻判断涨跌方向
  • 多模态理解:结合文本、表格、图像(如K线图)的分析
  • 策略推理:让LLM解释因子失效原因或生成交易假设

关键限制

  • 推理成本高,实时交易中延迟大
  • 幻觉问题——LLM可能自信地给出错误的金融分析
  • 训练数据截止日期导致的信息滞后
  • 不适合需要精确数值计算的场景


🌱 最后的话

量化是一个需要持续学习的领域。市场在变,技术在进化,Alpha 在衰减。八股文是入门的钥匙,长期护城河来自对市场的理解、严谨的研究方法论,以及不断迭代的能力。


🤝 维护与参与贡献

维护边界:Last reviewed: 2026-06。本仓库主线只做 QR;QD / Trader 相关内容只在能帮助理解 QR 时少量补充。社媒内容和个人面试复盘只作为观察材料。

参与贡献:欢迎补充 QR 面试题、论文路线、因子研究项目复盘、失效链接修复和表达建议。可直接开 Issue 或提交 Pull Request

联系咨询@0xYuCry(X)· 0xyucry@gmail.com

🛡️ 免责声明

本 README 只保留可迁移的准备方法、公开资料和抽象后的通用追问,不含公司原题、未脱敏材料或任何非公开信息。若内容引用或整理存在不妥,欢迎通过 Issue / X 联系我,我会及时修改或删除。

📄 许可证

本项目采用 MIT 许可证。


如果这个项目对你有帮助,欢迎点亮一颗 Star ⭐

Star History

Star History Chart

About

量化金融八股文 | 55道高频考点 × 详细解答 | 数学统计 · Python/C++ · 因子与Alpha策略 · 机器学习/深度学习 | 面试 + 学习两用指南

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors