Quant 求職系列文(2)  —  面試準備篇

這篇為 Quant 求職系列文的第二篇,主要會介紹 Quant 相關職缺的準備,這邊只會針對我投過的職缺:Quantitative Trader, Quantitative Researcher, Alpha Researcher 做一個綜合的統整
quant 求職 - 面試

前言

這篇為 Quant 求職系列文的第二篇,主要會介紹 Quant 面試相關的準備,而因為 Quant 職缺還有滿多細項的分支,這邊只會針對我投過的職缺:Quantitative Trader, Quantitative Researcher, Alpha Researcher 做一個綜合的統整,對於想投遞風險管理或是軟體開發相關職缺的朋友可能需要觀看其他的文章。

文章撰寫方式會先從整體的準備方式再帶到針對特定公司的準備。

其他相關文章:
動機成果篇
 心態篇

Quant 面試準備範圍

面試準備清單:
熱門必考: 🔥

(1) Mathematics:
 - Linear algebra 🔥
 - Calculus
 - Mental math

(2) Statistics:
 - Probability and expected value 🔥
 - Distribution 🔥
 - Basic statistics (e.g., variance, covariance, coefficient) 🔥

(3) Programming:
 - Python concepts (e.g., mutable/immutable) 
 - Python packages (e.g., pandas, numpy)
 - C++ concepts (e.g., virtual function, template)
 - Algorithms (leetcode) 🔥

(4) Machine Learning:
 - Linear regression 🔥
 - PCA
 - Tree model
 - Deep learning

(5) Trading:
 - Alphas
 - Market making
 - Backtesting

(6) Brain Teasers:
 - Pattern recognition(e.g., sequence, graph) 🔥
 - Fermi questions 🔥
 - Others

(7) BQ (behavioral questions) 🔥

要想在 Quant (p-quant) 領域一展長才,首先需要的就是強健的量化基底,而量化的本質,其實就是來自於一些基本的數學與統計知識,接下來我們來看看要怎麼準備量化這一塊。

Mathematics

線性代數與微積分:
可以參考 A practical guide to quantitative finance interviews (綠皮書)的第三章,他會幫你做個簡單的複習,而我之後的練習題目基本上都是直接從面經找的 (參考一畝三分地,量大管飽)

心算:
影片:https://www.youtube.com/channel/UCb7w5aTnt7YeXBcVCY0mgFw
這個頻道裡面有一系列心算的分享,可以先針對加減乘除的部分觀看,只要稍微練習一下就會進步非常快。

練習平台:https://arithmetic.zetamac.com/game?key=a7220a92, https://www.tradermaths.com/math-tests
尤其是第一個網站,滿適合隨手點開做練習的,他也是我最常練習的網站,只要每天練個 20–30 分鐘即可,一開始我的分數很爛,大概只有 30–40 左右,但練到後來分數就可以穩定在 60 以上,偶爾會達到 70 以上。

不過後來在面試時我有發現一些問題,這類型的網站雖然方便且可以快速的練習心算技巧,但他終究會在畫面顯示數字與運算公式,這會使得你在練習的過程中少了 ”把公式列在腦中” 步驟,與真正的面試不太相同。

Note:
我投遞的 Quant 主要是 P Quant,因此較為複雜的數學(e.g., 隨機微積分)以及金融工程理論基本上不會用到。 (p quant 與 q quant 介紹:https://www.zhihu.com/question/24820388

Statistics (quant 求職必考)

基本上是所有 quant 面試都會考,非常重要。

練習書目:
A practical guide to quantitative finance interviews (綠皮書)的第四章,他會同時涵蓋排列組合、機率、統計分佈、期望值等概念,且他講解的方式非常詳細,很少有看完解答會卡住的時候。這一章節通常我在面試前都會想辦法把他看過一遍,面試到現在前前後後應該差不多重頭刷了 3–4 遍,對於真實的面試題目來說,雖然重疊的機率很低,但他可以給你提供一個完善的基礎,讓你在回答問題的時候可以根據提示想出之後的解法。

其他練習:
1. 中央極限定理:通常會搭配大數法則,較為常見的問題就是執硬幣,詳細做法可以參考這部影片
2. 常態分佈的加減乘除
3. Uniform distribution 的加減 
4. Correlation:計算方法 (包含 coding)、值域、圖像化概念

有了強健的量化基底,再來就是想辦法使用特別的工具,將這些抽象的概念化為實際的應用,下面將會介紹 “工具” 的準備,其中包含程式語言以及機器學習

1*UvqFbsIM2WE27tLJWGEYYw

Programming

Python 觀念:
只要稍微查一下面經應該就可,想要了解比較多一點的也可以參考網路上的文章(e.g., https://www.gushiciku.cn/pl/pDR3/zh-tw)。

C++ 觀念:
因為我只有在碩一的時候有用過,基礎比較不牢,為了想要短期把這個技能點起來,我是直接刷 HackerRank C++ 的題目,大概 40 多題左右,一些常見的概念都可以在這邊看到,算是不錯的一個複習方式。

演算法
我是直接刷 leetcode (有買 premium),一開始先從 Blind 75 開始刷,刷完之後再針對公司刷題,而因為 quant 公司滿多沒有在他收錄的公司裡面,因此要先從面經找一下這類型的公司喜歡考那一部分的題目,再針對該部分做練習(整體來說,DP 與 DFS 系列的題目滿常見的)。

練習的方式我是會依據我對該資料結構的熟悉度做拆分,如果較為熟悉,我會直接篩選該類題目然後練習他們的高頻考題,反之,就會用 leetcode 一個叫做 explore 的功能,他裡面會針對每一種算法做詳細的介紹,也會有對應的練習題。

語言部分,我一開始是先用 python 刷題,大致刷完之後,再用 C++ 補刷某部分題目,會這樣做的原因主要是因為面試公司的順序,我主要先面試考 python 的公司(大多數),之後再面試考 C++ 的,另外也是因為我對 python 比較熟,先用 python 練習的話對我來說難度比較剛好,較為容易養成刷題的習慣。

雖然說最後只刷了大概 100 初的題目,但是除了一個考 Floyd-Warshall (完全忘記要怎麼做)的 coding OA 之外,其他 OA 與程式相關的面試都可以通過,畢竟我應徵的是 quant trader/researcher 相關的職缺,因此他的程式技能不需要像 developer or 軟體工程師那樣強,整體上來說還堪用。(不過如果時間較多的話還是建議刷多一點會比較保險)

Machine learning

線性回歸:
參考文章:https://zhuanlan.zhihu.com/p/45149297 ,他有一系列精彩回歸分析的文章,可以讓我們很清楚的了解回歸分析的本質。

常見題目:beta 如何求解、是否有唯一解(高維空間下)、R square 解釋、新增 features 後各個 beta 值會如何變化、L1, L2 regularization 差異以及使用時機、線性回歸假設

PCA:
參考文章:https://leemeng.tw/essence-of-principal-component-analysis.html,如它標題所說,真的是最生動的 PCA 介紹,好玩的同時又包含實作與原理介紹。

深度學習與樹模型:
部分我沒有特別做複習,偶爾遇到的面試題目也是根據我的過往經歷往下問而已(過去的專案有使用到這些模型),通常這類問題都是開放性題目,只需要把當初為甚麼會這樣用、用的時候有什麼缺陷(e.g., overfitting)、如何改進等等搞清楚應該就沒問題了。

了解工具如何使用之後,下一步就是去了解這些工具的應用場景,比如你想將工具用來創造 alpha 或是用來做造市策略

Trading

Alpha: 
中低頻的對沖基金有些會問,問題包含 alpha 定義、如何找 alpha 、如何評估 alpha 等等,可以參考 Finding alphas 這本書,我只讀前半部分就非常夠用了。

Market making: 
高頻做市商通常會問這類型的問題,也會玩一些小遊戲,這一部分通常需要對 order book 有個基本的理解,可以參考 Jane street 的這份介紹,另外,一些專有名詞可以參考這個網站

Backtesting: 
我遇過兩次這類型的問題,考法通常是要你寫一個交易策略的同時撰寫對應的回測方式,這邊根據資料的形式會分成直接用價格做回測以及用 order book 做回測。

其中第一個部分如果要自己寫的話可以參考 leetcode buy stock 一系列的問題,幫助滿大的,用套件的話或許可以直接使用 backtrader。而第二部分就比較麻煩一點,但如果熟悉了 order book 的運作原理應該沒啥問題,想找現成的程式碼參考的話可以搜尋 trading execution / order execution 的 github。

綜合問題:
上面三個基本上是根據公司的性質擇 1 or 擇 2 考,除此之外,也有一些被叫綜合的文題如下。

像是你目前有使用過哪些交易方法以及影響金融市場的因子為何,這類型的問題只需要平常多關注市場應該不會有太大的問題,這部分我主要是看 izaax 的部落格,他是台灣散戶中做總經交易的大師,部落格中同時也會對近期的新聞與總經指標做分析。

目前為止,你已經有了強健的量化基底,並瞭解該如何透過工具使用它們,也明瞭他所使用環境的大致壯況,接來要準備的,就是如何應對那些我們不熟悉的狀況

1*yp7bBfa8l2bmHW49mErOZA

Brain Teasers

練習書目:
A practical guide to quantitative finance interviews (綠皮書)的第二章,這裡面會包含各式各樣經典的問題,像是海盜分配財寶等等,在練習的時候非常有趣,不會有那種你在 “唸書” 的感覺,反而有一種解謎的快感。

數列規律
網站:https://web.archive.org/web/20171226230900/http://tradertest.org/test_sequence.php?showSetup=on,滿實用的,練一次就會大概理解數列規律的考法。

圖形規律
網站:https://rankyourbrain.com/iq-games/18/abstract-reasoning,滿有趣的網站,但也滿難的,他的好處是每次回答完問題會跟你說解答是哪個,然後就可以慢慢的花時間想出規律。

Fermi questions: 
主要是參考之前上過的線上課程,這邊的其中一部分會有介紹到費米問題的解法,概念是要想辦法有條理的拆解問題並給出一條計算公式,之後再根據邏輯與你的生活經驗估計出那一條公式的解,這邊面試官通常會針對你的拆解方式問問題,同時也會要你給出一個信心水準以及之後的改進方式。

心態上不用特別擔心你算出來的東西不準,這一關真正要考的只是你的邏輯推理能力,以及模擬他們之後跟你討論問題的狀況。

現在的你,已經有了身為一名 Quant 的基本知識,最後一步,就是要向他人說出專屬於你的故事

1*bjIylbmiOJrlbr6rqGNnQQ

BQ

同樣是參考之前上過的線上課程,裡面會提供你回答問題的框架,之後只要按照框架做客製化更改即可,至於內容要怎麼改,主要會根據兩種方向。

一是你的個人能力與狀況,我這邊是有一個自己的故事,故事的主軸會圍繞我對金融量化交易的熱忱,並由我近年的各個選擇與規劃來佐證這一點,同時,在這個故事當中,你需要知道你自己的強項與弱項,強項部分需要符合你應徵的職位(比如以交易員來說,需要的就是 competititve),這樣會比較好應對之後的問題。

第二種方向是每間公司的文化,這點可以從公司網站與相關的社群媒體做調查,調查完成之後再把它適當的加到你的故事裡。

有了客製化的故事之後,只要將這故事做拆分,並把拆分完的細節補上(e.g., 專案名稱細節、研究經歷等等),其實就是你的個人履歷了。

面試準備時間

大概 1–2 個月左右,但我這邊不是全部準備完再投遞履歷,而是邊準備邊投遞,以戰養戰。

會這樣做的原因有兩個:
1. 對於上班族來說時間有限,準備時間只有下班後以及假日,而我又不想把整個時間拖太長。

2. 每家公司的面試偏重點不同,而且每一階段的面試題目也差異很大,因此我基本上只會先準備第一階端面試的題目,有過之後,再透過面試中間的空擋做題目練習,好處是以戰養戰,同時又有明確的 deadline,會使我的動力很高,壞處就是一開始會摔得很慘。

如何針對公司找面試題目

面試趣:台灣的平台,上面對於面試題目的分享有些還滿詳細的,不過對於外國的公司相關的分享會少很多。

一畝三分地:中國的討論平台,不論是唸書或是工作都可以在上面找到相關資訊,當初我是因為要準備博士才辦了帳號,後來有累積了一些登入點數,因此在後續找公司的面試題目(面經)時比較少遇到積分不夠的問題。登入之後直接查訊公司名稱就可以看到相關的面經,如果想特別找 quant 職缺的面經,可以篩選”金工”領域,這邊的面經都非常詳細,量大管飽。

glassdoor: 英文網站,這個大家應該比較熟,直接在上面搜尋相關面試問題即可。

Wall Street Oasis: 英文網站,專門給金融相關從業人員(包括 quant)的討論平台,可以從討論區或是該公司專屬的位置找尋相關的面試資訊。

GradAustralia: 澳洲工作的討論平台,可以直接搜尋對應的公司,會有面試相關的討論,不過直接給題目的偏少。

Reddit: 這個滿特別的,有些可以找到相關的題目,還可以直接問那些有面試過的人。

ptt, dcard: 台灣論壇,滿多人會在上面分享面試經驗。

結語

這一篇文章主要是分享我是怎麼準備 Quant 的面試,其中,內容順序從量化基底的配養、開發工具的練習、應用場景的熟悉、緊急狀況的應對方式(邏輯能力)以及如何講出自己的故事(BQ),除此之外,後續還有準備時間的分享以及如何針對特定公司找題目。當然,除了這些硬知識的準備之外,面試的心態也會影響到面試結果,這一部分我會在下一篇文章跟各位分享~

4 則留言

  1. Hi William,我正在投Quant的申請,有蠻多問題想問問看你的,不知道有沒有機會和你聊聊,如果願意的話可以透過email聯繫我,謝謝你。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *