筆者編著的《金融數(shù)量分析——基于MATLAB編程》自2009年上市到現(xiàn)在已經(jīng)更新了4個版本。近十年,國內(nèi)金融市場變革迅速,金融產(chǎn)品日新月異,在此期間Python由于其免費(fèi)與便捷的特點(diǎn)已經(jīng)開始在金融行業(yè)被廣泛應(yīng)用,為此筆者誠意邀請懷偉城、王瑋珩兩位Python專家將《金融數(shù)量分析——基于MATLAB編程》中的案例改寫為用Python編寫的案例。
也許大家是因?yàn)槁犝fPython功能強(qiáng)大,并能解決許多問題才開始學(xué)習(xí)Python的。但我相信如果有一個更好的、更能說服自己的理由,大家也許能夠更主動、積極地學(xué)習(xí)Python,并將Python用于金融數(shù)值計(jì)算,同時提高自己對于金融的理解。
1. 巨大的數(shù)據(jù)量
“大數(shù)據(jù)”時代,在金融方面我們需要處理的數(shù)據(jù)量越來越大。A 股股票數(shù)量早已超過3 000只,公募基金的數(shù)量也已經(jīng)超過5 000只,備案私募基金的數(shù)量超過40 000只;中證指數(shù)有限公司、深證信息公司、中信標(biāo)普等指數(shù)編制機(jī)構(gòu)發(fā)布的各類指數(shù)也已數(shù)千,而且還在快速增長;開盤價、收盤價、PE、PB、ROE、ROA、夏普比率、波動率等各種指標(biāo)數(shù)據(jù)不計(jì)其數(shù)。
2. 復(fù)雜的模型
隨著投資標(biāo)的品種(股指期貨、股指期權(quán)、商品期權(quán)、可轉(zhuǎn)債)的增加,我們所需掌握的定價模型越來越復(fù)雜,例如,期權(quán)定期、Beta對沖、浮動利息債券等;同時,隨著程序化交易的快速發(fā)展,各種復(fù)雜的交易策略模型也在市場中被大量應(yīng)用。這些復(fù)雜的模型都需要強(qiáng)大的數(shù)值計(jì)算平臺的支持。
3. 避免主觀臆斷
人類大腦的思維具有局限性并且邏輯有時具有跳躍性,常常憑借直觀感覺判斷事物。例如,幾年前大家常見的一個量化案例: 某策略賺3%止贏即獲利平倉,虧損1%平倉止損,每一組止贏與止損交易可以獲利2%。如果這個策略進(jìn)行高頻交易,將獲利豐富啊! 但我們卻忽略了一點(diǎn),即賺3%與賠1%的概率并非一致,如果進(jìn)一步思考就會發(fā)現(xiàn)我們忽略了交易成本。
再舉一個我常常使用的問例: 兩個[0,1]上的均勻分布的和是什么分布? 三個[0,1]上的均勻分布的和是什么分布? n 個呢? 有的讀者會直接回答還是均勻分布,有的讀者深思一下回答是正態(tài)分布。這兩個答案或許都不正確,但如何驗(yàn)證呢? 我們可以通過編程的方式進(jìn)行數(shù)值試驗(yàn),對兩個結(jié)論進(jìn)行驗(yàn)證。如果做數(shù)值試驗(yàn),那就需要編程實(shí)現(xiàn)。
4. 實(shí)現(xiàn)自動化辦公
大多數(shù)人在日常工作中都會面對很多重復(fù)性的勞動與煩瑣的計(jì)算。例如,某個報表每日(周、月)都要更新,且更新邏輯很明確:增加內(nèi)容,統(tǒng)計(jì)市場數(shù)據(jù),附加某些計(jì)算等;或者,在每天的工作中Excel或Word的重復(fù)工作占據(jù)了你大量的時間。如果有一種方法可以將你從中解脫出來,那么你就可以有更多的時間進(jìn)行創(chuàng)造性的工作或享受生活了。
所謂重復(fù)勞動,大多都是規(guī)則明確化的,它包括腦力與體力兩個方面。從人工智能角度發(fā)展,就是讓機(jī)器代替人類執(zhí)行重復(fù)計(jì)算或勞動的過程。比如自從有了計(jì)算機(jī),大家的勞動相比之前高效了許多。但是,我們在計(jì)算機(jī)上還是會進(jìn)行某些重復(fù)性的勞動與煩瑣的計(jì)算,這又是為什么呢? 這是因?yàn)檐浖、硬件作為商品都是普遍適用的,基于利潤或穩(wěn)定性方面的考慮,它不會針對某件事或某個人設(shè)定,所以面對各自的工作問題,就需要自己或請人來解決。由于某些業(yè)務(wù)的復(fù)雜性(非技術(shù)上的),其中的邏輯只有自己最清楚,所以自己編程解決是一條非常有效的路徑。例如,金融市場數(shù)據(jù)每日更新,通過Python,可以將自己從一定的重復(fù)勞動中解脫出來。
實(shí)現(xiàn)自動化辦公需要自己編程,但你或許會問: 不會編程怎么辦? 首先,必須說明的是,有些人適合編程而有些人不適合編程,適合不適合只有自己嘗試過才知道。其次,還有一條途徑——請別人幫你解決問題,如果你覺得貴就只有自己繼續(xù)重復(fù)勞動了。假設(shè)你工作30年,每天有50%的時間在重復(fù)勞動,那么你的15年時間就在重復(fù)勞動中度過了。是否嘗試一下由你自己決定! 在這里聲明,重復(fù)并非不好,或許大多數(shù)工作的性質(zhì)就是重復(fù),每個人的生活態(tài)度不一樣。筆者厭惡重復(fù),有時為了生活也不得不重復(fù),但在重復(fù)的過程中我總是思考如何能自動化,如何擺脫重復(fù)。
5. 量化交易“賺錢”
量化交易者的楷模是數(shù)學(xué)家西蒙斯,關(guān)于他的文藝復(fù)興科技公司與大獎?wù)禄鸾榻B如下:華爾街賺錢機(jī)器文藝復(fù)興科技公司,依靠公司的旗艦產(chǎn)品大獎?wù)禄?Medallion Fund)20年的超群表現(xiàn)贏得無數(shù)贊譽(yù)。據(jù)《福布斯》雜志的統(tǒng)計(jì),截至2012年9月,西蒙斯的身價已高達(dá)110億美元,在福布斯全球富豪榜上位居第82位。數(shù)據(jù)顯示,自1988年成立至2010年西蒙斯退休,大獎?wù)禄鹉昃貓舐矢哌_(dá)35%,不僅遠(yuǎn)遠(yuǎn)跑贏大市,還比索羅斯和巴菲特的操盤成績高十余個百分點(diǎn),這使得西蒙斯在人才濟(jì)濟(jì)的華爾街笑傲群雄。他被投資界稱為“量化投資之王”。西蒙斯成功的秘訣主要有三:一是針對不同市場設(shè)計(jì)數(shù)量化的投資管理模型;二是以計(jì)算機(jī)運(yùn)算為主導(dǎo),排除人為因素干擾;三是在全球各種市場上進(jìn)行短線交易。如果沒有仔細(xì)閱讀前面4點(diǎn),直接看到“量化交易‘賺錢’”,或有圖急功近利之嫌。作者想提醒讀者先閱讀前面4點(diǎn),尤其是“避免主觀臆斷”與“實(shí)現(xiàn)自動化辦公”,以“量化交易‘賺錢’”或許需要天賦與運(yùn)氣,但實(shí)現(xiàn)“避免主觀臆斷”與“實(shí)現(xiàn)自動化辦公”只需要你用些時間去學(xué)習(xí)一下Python編程。
最后,希望本書能對各位讀者有所幫助,并且再次感謝懷偉城、王瑋珩兩位Python專家,以及北京航空航天大學(xué)出版社的各位老師卓有成效的工作。
6. 其 他
書中所有程序的源代碼可在北京航空航天大學(xué)出版社網(wǎng)站(http://www.buaapress.com.cn/mzs/welcome/index)“下載專區(qū)”免費(fèi)下載。
由于作者水平有限,書中不當(dāng)之處,敬請讀者批評指正。本書網(wǎng)絡(luò)支持:www.ariszheng.com,作者郵箱:ariszheng@gmail.com,編輯郵箱:shpchen2004@163.com。
鄭志勇
2018年5月于北京