2019年12月6日 星期五

【資料分析應用篇】無所不在的Python於Fintech與資料科學的應用

文/何孟翰 恆逸教育訓練中心資深講師

Python是一個跨平台的語言,並且有著高效能,好撰寫,開放源始碼與擁有廣大的社群支持等等的特性。在以往的client/server端程式中早就是非常成熟的Python,在近年來的物聯網和大數據,機器學習和深層學習(deep learning)中,一個愈來愈熱的語言即是Python,但其實Python給我們的影響遠遠大於此,其它像是程式交易(algorithm trading)與一些金融資料的分析,Python也是佔有一席之地。

                                                                                Img source: yen.io

舉例來說,像2011年在美國Boston就有一個新的公司叫作Quantopian,就是一個能夠讓你使用Python做程式交易的一個網站https://www.quantopian.com/


在這個網站上,你可以取得以分鐘為精準度的美股資料,並且使用Python撰寫演算法,並且進行過去資料的模擬,開發並且進行演算法的操作之後,再進行實際交易的輔助。

而在Quantopian的背後有一個以時序交易為基礎的zipline(http://www.zipline.io/)


zipline是一個Python的演算法交易library,同時也可以藉著它的指令列,取得以pandas的data frame為基礎的歷史資料。同時,zipline提供了明確的api,讓你可以藉著一個initialize()的初始化函數決定交易的一些變數狀態,例如要取得的股票或其它資產的代號,或者是其它的必要資訊,之後即可以在handle_data()的函數中依照預期的交易邏輯進行股票或其它資產的買賣了。當然,既然是程式交易,對於移動平均,或者一些常用的財務上的函數,在zipline中也進行了許多實作。

而zipline的基礎,是搭載於Python一個非常穩固的套件scipy上(https://www.scipy.org/),scipy唸作「sigh拍」,它就是一個Python的科學運算的套件,裡面有非常多重要的專案像是:
◆  Numpy
Python的數值運算套件,可以把Python的List轉變成數學上的矩陣進行一些複雜的數值分析與運算。

  Scipy
提供更多科學計算的函式庫,也是使用Python的機器學習的基礎,Python機器學習的套件在http://scikit-learn.org/, 提供了很多分群,分類,回歸等等的演算法可以使用。

  matplotlib
是一個Python的繪圖函式庫,它提供了強大的繪圖功能,讓Python能夠如商用軟體matlab般的進行資料視覺化的動作。

  ipython
是一個強化的互動介面,能夠讓我們一步一步的執行Python的資料分析與轉換。

  jupyter notebook
ipython有一個web的介面叫作ipython notebook,而這個介面後來稱為jupyter,這個介面可以將程式碼,繪圖的結果與文件放在同樣的介面,同時這個文件也可以採用markdown的格式進行撰寫。

  pandas
pandas是一個資料輸入格式的函式庫,可以讀取Excel與其它格式並且轉成資料表格data frame的格式,同時它也有一個相關的pandas-datareader,可以讀world bank、Yahoo、Google等各種相關數據。

因此,在使用quantopian與zipline時,你也可以搭配這些相關的library,進行自己客製化的資料處理與分析。


0 意見:

張貼留言