官术网_书友最值得收藏!

第2章 Python量化編程基礎

本章首先介紹了Python語言作為量化交易入門語言的理由,然后講解了Python的基礎概念,介紹常用的數據分析庫NumPy與Pandas,以及機器學習庫scikit-learn,最后講解繪圖庫Matplotlib的基本用法。

純粹從計算機性能和速度出發,C++語言無疑是量化交易的最佳選擇,它是最接近計算機底層的語言。C++語言通過對CPU多核多線程的優化,合理分配內存及顯卡計算等,可充分“榨干”硬件的每一份性能,在微秒必爭的高頻交易世界去追求更低的延時。在高頻交易領域,只有更快的速度才能搶到價格更低的單子,交易成本就會低于對手。所以只要交易數量足夠大,積少成多,其贏利是“恐怖”的。

為了保證交易系統的高效性和穩健性,公司會習慣讓IT團隊自主開發或者購買C++搭建的底層通用平臺開發程序,對內部組件進行封裝,對外提供行情和交易API接口,可以讓其他編程語言,如Python、C#和R等語言接入來開發策略。

但從新手入門量化交易的角度來看,Python語言則打敗強大的C++語言,成為新手最受歡迎的語言,原因有以下幾點。

(1)在高頻交易領域,必須靠速度來賺錢。但是對于中低頻的交易,速度就顯得不那么重要了,一定程度的網絡延時或者交易系統延時還是能接受的,贏利重心轉向交易策略。所以C++語言的特性在中低頻交易中并不能凸顯出來。

(2)在研發交易策略上,C++語言不是一個很好的選擇。作為靜態語言,什么都要自己定義,這會浪費大量的精力。打個比方,拿到一份股票數據,不管是分析歷史價格趨勢還是波動性,第一件事就是通過畫圖來直觀感受。Python語言有非常強大的數據分析庫,不到十行代碼就能夠輕松搞定。若用C++語言的話,肯定會花大量的時間在編譯、調試、再編譯上。當最后把圖畫出來,發現已經碼完上百行代碼了。所以用C++語言去研發策略的話,大部分的精力容易先浪費在“造輪子”上,之后才會考慮策略本身的問題。人的精力和天賦是有限的,很難同時兼顧數學建模和底層代碼調試這種差距巨大的工作。而Python語言則提供很多造好的“輪子”,例如,科學計算庫NumPy與Pandas、數據繪圖庫Matplotlib、技術指標計算庫TA-Lib等。這些“輪子”是用強大的C++語言編寫并且封裝好的,在需要的時候直接調用就可以了。Python膠水語言的特性可以讓研究員放心地把精力放在數學建模上。

(3)C++操作的煩瑣也間接反映其學習曲線過于陡峭,對于量化交易新手而言非常不友好。與之相反,Python因為其語法非常像英語,學習的邊際成本會大幅度降低。Python容易到連小學生都可以學,例如為了響應2017年國務院發布《新一代人工智能發展規劃》,山東省最新出版的小學信息技術六年級教材加入了Python語言的學習內容。

綜上所述,Python倚著其易學性、強大的數據分析庫,以及可擴展性成為新手入門量化交易的首選語言。

2.1 Python運行環境搭建

因大多數初學者是Windows用戶,所以本次Python運行環境的搭建是基于Windows的,并且在以后講述的章節中用到vn.py 1.9.0版本,Python的安裝版本為Python 2.7(用戶亦可直接安裝vn.py 1.9.2 LTS版本,二者相差不大)。

2.1.1 安裝Anaconda2-5.0.0(32位)

Anaconda是一個基于Python的環境管理工具,其中包含了Conda,Python,NumPy,Scipy,Jupyter Notebook在內的超過180個科學庫及其依賴項。

Conda是包及其依賴項和環境的管理工具,適用于Python,R,Ruby,Lua,Scala,Java,JavaScript,C/C++和Fortran語言。Conda可以用于快速安裝、運行和升級包及其依賴項,在計算機中便捷地創建、保存、加載和切換環境。因為Conda同樣是一個環境管理器,僅需要幾條命令,就可以創建一個完全獨立的環境來運行不同的Python版本,同時支持在常規的環境中使用常用的Python版本。

由于兼容vn.py的需要(詳見第3章),要求安裝特定版本,即Anaconda2 5.0.0-Windows-x86,如圖2-1所示。

圖2-1 Anaconda安裝界面

這里要說明一下,Anaconda2 5.2.0對應的是vn.py 1.9.0,也是本書所使用的版本。若使用vn.py 1.8.1或者以前的版本,則需安裝Anaconda2-4.0.0,另外在2019年推出vn.py 2.0版本后,將會兼容Anaconda3 64位的版本。

安裝完成后要進入Anaconda Prompt,在Prompt上可以使用conda或者pip命令來安裝對應的Python依賴庫,如圖2-2所示。

圖2-2 Anaconda Prompt界面

2.1.2 設置Anancoda環境

安裝nb_conda用于Jupyter Notebook自動關聯nb_conda的環境,如圖2-3所示。

圖2-3 安裝nb_conda

    conda install nb_conda

在終端中使用:

    conda create -n env_name package_names

在上面的命令中,env_name是所創建環境的名稱,package_names是用戶要安裝在環境中的包名稱。

當同時使用Python 2.x和Python 3.x中的代碼時這很有用。創建具有特定Python版本的環境,例如,創建環境名稱為py2,并安裝Python2,在終端中輸入:

    conda create -n py2 python=2

創建環境名稱為py3,并安裝最新版本的Python3,在終端中輸入:

    conda create -n py3 python=3

由于用戶做的項目不同,有時候會用到Python2,有時候會用到Python3。所以可以在自己的計算機上創建了這兩個環境,并分別取名:py2,py3。這樣用戶可以根據不同的項目輕松使用不同版本的Python。

最后,如果用戶要安裝特定版本(例如Python 3.6),輸入下面命令,如圖2-4所示。

圖2-4 創建Python環境命令

    conda create -n py3.6 python=3.6

2.1.3 創建共享環境

共享環境的作用在于能夠讓其他用戶在安裝的創作者代碼中使用所有包,并確保這些包的版本正確。比如,A開發了一個藥店數據分析系統,提交給項目部署系統的B來部署,但是B并不知道A當時開發時使用的是Python哪個版本,以及使用了哪些包和包的版本。為解決這個問題,A可以在當前的環境終端中使用:

    conda env export > environment.yaml

將A當前的環境保存為yaml文件(包括Python版本和所有包的名稱),讓B及其他人更輕松地安裝A的代碼的所有依賴項,如圖2-5所示。

圖2-5 創建共享環境

2.1.4 列出共享環境

如圖2-6所示,輸入下面命令可以列出共享環境:

圖2-6 列出共享環境

    conda env list

2.1.5 安裝Jupyter Notebook

Jupyter Notebook是基于網頁的用于交互計算的應用程序,它可以在網頁頁面中直接編寫和運行代碼,代碼的運行結果也會直接在代碼塊下顯示。在編程過程中如果需要編寫說明文檔,可在同一個頁面中以Markdown的格式編寫。安裝Jupyter Notebook的命令:

    conda install jupyter notebook

安裝完后,在Anaconda Prompt中輸入命令“jupyter notebook”,按Enter鍵便以網頁的形式打開。單擊“new”選項就會顯示創建出來的Python環境,如圖2-7所示。

圖2-7 Jupyter Notebook界面上的Python環境

圖2-7所示的Python[conda root]和Python[default]指的是Anaconda默認環境,即Python2。

在圖2-7右上角“new”選項單擊“Python[conda env:py3]”進入新的頁面,可輸入第一行Python代碼“Hello world”,單擊圖2-8所示方框的運行按鈕或用快捷鍵“Ctrl+Enter”即可執行代碼。

圖2-8 運行按鈕

安裝好Python后就可以開始正式學習了。為了更好掌握Python語言的基本用法,這里將Python語言分成4部分逐一講解,分別是數據、函數、條件判斷和循環。

主站蜘蛛池模板: 武胜县| 南漳县| 萝北县| 抚松县| 乌兰县| 阿荣旗| 丹阳市| 新田县| 阳曲县| 郁南县| 北海市| 靖西县| 普洱| 二连浩特市| 罗城| 望江县| 枣庄市| 天柱县| 阳江市| 蒙阴县| 井冈山市| 昌江| 罗甸县| 禄丰县| 盐亭县| 桑植县| 虎林市| 册亨县| 胶州市| 涞水县| 临泽县| 广水市| 河北省| 比如县| 西峡县| 汽车| 原平市| 祁连县| 汾阳市| 平阴县| 和平县|