針對Quant的Python快速入門指南
作者:用Python的交易員 (原創文章,轉載請註明出處)
最近有越來越多的朋友在知乎或者QQ上問我如何學習入門Python,就目前需求來看,我需要寫這麽一篇指南。
針對整個vn.py框架的學習,整體上有兩條不同的路線:
- 有經驗的Quant學習如何使用Python語言來做策略和交易程序的開發(編程語言是學習重點)
- 有經驗的程序員學習如何將自己的編程知識和經驗應用在量化研究和策略開發上(金融量化是學習重點)
我自己本身是金融工程碩士,畢業後也是從Quant入行,所以這篇指南主要針對的是第一條路線,歡迎社區裏從第二條路線入行的朋友寫寫自己的經歷。
以下內容建議按照順序一步步走,不要跳步、不要偷懶,多敲代碼、多做調試,英語不好的就當順道提高閱讀水平吧。
Learn Python The Hard Way
鏈接:http://learnpythonthehardway.org/book/
這套教程是我進入Python世界大門的敲門磚,一共50個Exercise包含了一個Python新手需要知道的所有基礎:
- 如何搭建Python環境
- 變量、註釋、運算符
- 輸入、輸出
- 函數
- 數據結構:字典、列表、集合
- OO:類和對象
- 控制語句:條件、循環
- Python的模塊
- 構建一個小型項目
- 等等
學習方法很簡單:照著Introduction章節中的要求,不用IDE只用編輯器(文中推薦的是Notepad++,個人覺得Sublime Text也不錯),一行一行地敲代碼,敲完後用最原始的方法來運行,根據Python解釋器的異常輸出來做調試。
利用Python進行數據分析
鏈接:亞馬遜購買頁面
這本書的作者Wes McKinney在美國著名的量化對沖基金AQR工作時開發了Python在數據分析領域的主要工具pandas。這本書最大的特點之一是作者用非常多的案例來介紹numpy、matplotlib、pandas和ipython在實踐中的使用方法,讀者實際操作過一次後立即就可以把相關的知識應用在自己其他相關的項目上。
網上有不少建議新手直接從某個庫的用戶手冊開始學習,我個人不贊同這種方法。原因是大部分庫的用戶手冊主要是介紹其API的使用方法,內容寫得太過抽象,對於本來就沒有太多經驗的新手而言就跟死記硬背英文單詞差不多,看了挺久後往往還不知道如何把代碼系統化的整合起來解決自己的問題。
Python Cookbook
鏈接:京東購買頁面
有了以上兩段學習的基礎後,可以把Cookbook這本著名的“烹飪秘籍”買了放在書櫥裏以備不時之需(沒完成以上兩段買了也是浪費看不懂)。既然叫秘籍,內容難度高是必然的,整本書根據用戶要使用Python解決的具體問題來區分章節,請了每個領域中的大牛分享了一些經驗和代碼。
和前兩本不同的是這本書的內容不用全部掌握,可以先大概掃一遍知道每章有什麽內容,後面做開發遇到相應問題時再來翻書研究。另外這本書裏很多技術屬於Python的“奇技淫巧”級別,如果能全部掌握對於編程水平會有非常大的提高。
PyQt4入門(ZetCode)
鏈接:ZetCode
PyQt4是目前Python上最為主流的GUI開發庫,底層運行的是C++開發的Qt代碼,上層使用Python封裝的API來實現調用,運行效率足以滿足開發量化交易實時監控界面的需求。
對於Python新手而言,學習PyQt4除了開發GUI外,更重要的是吸收PyQt4代碼中的面向對象(OO)的設計模式相關的知識。簡單的量化策略可以用過程式編程的方法來實現(如輪詢價格、突破100買、跌破90賣),但是對於復雜的量化策略(如期權波動率套利、跨多市場套利等)就需要使用OO的設計模式來解耦不同功能的模塊(信號生成、委托下單、風險管理),提高整個代碼的健壯性和可維護性。PyQt4的OO編程風格非常簡潔和清爽,掌握後用在其他的項目開發上可以大幅提高程序的編碼質量。
另外推薦這本書給想要更深入學習PyQt4的朋友:Introduction to Python Programming and Developing GUI Applications with PyQT
QuantStart
鏈接:https://www.quantstart.com/
應該是目前全球Python量化交易領域訪問量最大和內容最豐富的網站,不加之一是因為據我所知還沒有更大的,而且我還喜歡經常在網上找Python量化的資料,應該算得上經驗豐富。
QuantStart上的內容整體難度較高,都是直接使用Python來處理量化交易項目的知識經驗和代碼實例,沒有老老實實學完前幾個部分大概率是會看得雲裏霧裏。
總結下網站文章的大體分類:
- 買方(P宗):
- 算法交易
- 統計建模和機器學習
- 量化策略研究
- 時間序列建模
- 賣方(Q宗):
- 二叉樹模型
- 隨機積分
- 偏微分方程PDE
- 代碼示例:
- C++
- Python
- 外匯交易平臺開發
- 統計套利平臺開發
- Quant職業生涯
- 職業生涯建議
- 讀書筆記
另外網站的作者也寫了兩本書Successful Algorithmic Trading和Advanced Algorithmic Trading,比起另外一個著名的量化博客主E.P. Chan寫的兩本書質量要好非常多,推薦購買。
其他學習內容
CodeCombat
鏈接:http://codecombat.com/
寫Python代碼來玩RPG遊戲,遊戲設計的非常好,毫無基礎的人也能逐步掌握Python編程(本來就是設計給孩子的),同時一些關卡對於程序員的邏輯思維能力有很好的訓練。遊戲難度隨著關卡逐步增強,到後期還是有相當的挑戰度,可能導致學習者沈迷其中,入坑前請謹慎三思……
Flask Web開發:基於Python的Web應用開發實戰
鏈接:亞馬遜購買頁面
Flask是Python目前在Web開發領域人氣最高的框架之一(另一個是Django),采用微框架的設計哲學,代碼短小精悍,同時還有著非常好的擴展性。整本書的內容就是教會讀者如何一步步從0開始搭建一個自己的博客,中間涉及的設計模式、數據庫ORM、APP部署等知識在量化領域也都有相應的應用。
廖雪峰的Python教程
鏈接:http://www.liaoxuefeng.com/
可以作為LPTHW的中文版替代,涉及的內容相對更加豐富也帶有大量的代碼實例,不過整個教程中對於Python一些底層特性的講解較多,更加適合完成了前幾個階段的學習後用來作為二次的知識鞏固和提高,初學者建議還是從LPTHW開始入門。
知乎
鏈接:http://www.zhihu.com
知乎和豆瓣一樣,都是國內使用Python開發的大型項目,其員工對於Python的討論氛圍非常濃厚。同時作為一個以問答為主的社區,知乎上的Python問題下匯聚了很多國內Python業界的大牛級高手的回答和文章,上下班擠地鐵、買早飯排隊、晚上睡不著的時候隨手翻一翻,既解決了無聊又能吸收很多碎片化的知識。
vn.py項目
鏈接:項目官網和維恩的派論壇
最後,請允許我厚著臉皮推薦一下自己的開源項目…… #^_^#
針對Quant的Python快速入門指南