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