Python 是金融分析和開發(fā)的強大工具。從計算原始數(shù)據(jù)到創(chuàng)建美觀而直觀的圖形用戶界面(GUI),有無數(shù)的庫可以幫助用戶建立自己的金融模型。 本文將介紹10個主流的金融和金融建模庫,重點關(guān)注量化金融領(lǐng)域的特定應用,這些應用需要完成數(shù)據(jù)導入和轉(zhuǎn)換、時間序列和風險分析、交易和回溯測試、EXCEL 集成以及數(shù)據(jù)可視化等編程任務。 1 NumPy從根本上說,所有金融模型都依賴于數(shù)字運算。NumPy 是用 Python 進行科學和數(shù)學計算的基礎(chǔ)庫。它不僅在 Python 中引入了 n 維數(shù)組和矩陣,還包含一些基本的數(shù)學函數(shù)來操作這些數(shù)據(jù)結(jié)構(gòu)。本文后面提到的大多數(shù)高級金融 Python 庫都依賴于 NumPy。 例如,創(chuàng)建兩個 2×2 復數(shù)矩陣并打印總和: import numpy as np 輸出:
2 SciPyNumPy 庫為操作和存儲數(shù)據(jù)提供了基本的數(shù)學結(jié)構(gòu)。但要基于這些數(shù)據(jù)建立復雜的模型,還需要一個包含更高級統(tǒng)計工具和操作的存儲庫,這就是 SciPy。 SciPy提供了對建立任何統(tǒng)計模型所需的高級科學計算至關(guān)重要的函數(shù)和算法。其中包括插值、優(yōu)化、聚類、轉(zhuǎn)換和數(shù)據(jù)整合算法。在進行任何類型的數(shù)據(jù)分析或構(gòu)建任何類型的預測模型時,這些操作都是必不可少的。 為了演示插值,我首先使用 NumPy 用任意函數(shù)創(chuàng)建一些數(shù)據(jù)點,然后比較不同的插值方法: from scipy.interpolate import interp1d 3 PandasPandas建立了一種直觀易用的數(shù)據(jù)結(jié)構(gòu)--DataFrame,專門用于分析和建立模型。 Pandas以 NumPy 引入的數(shù)組為基礎(chǔ),針對表格、多維和異構(gòu)數(shù)據(jù)進行了優(yōu)化。最常見的操作,如分組、連接、合并或填充、替換和歸納空值,都可以在一行中執(zhí)行。 此外,Pandas還提供了從各種標準格式導入數(shù)據(jù)的函數(shù),以及用于快速繪圖、檢索基本統(tǒng)計數(shù)據(jù)或輸出數(shù)據(jù)的其他函數(shù)。 創(chuàng)建 DataFrame
合并dataframe df_2 = pd.DataFrame({'col3': [5,6], 'col4': [7,8]}) 4 statsmodelsSciPy 提供了一個統(tǒng)計工具庫,允許用戶構(gòu)建模型,而 pandas 則使其易于實現(xiàn)。statsmodels 以這些庫為基礎(chǔ),對不同的統(tǒng)計模型進行了更高級的測試。 對于任何給定的模型,每個估計器都有大量的結(jié)果統(tǒng)計和診斷列表,目的是讓用戶全面了解模型的性能。這些結(jié)果將根據(jù)現(xiàn)有的統(tǒng)計庫進行測試,以確保其正確性。 例如,導入一個內(nèi)置數(shù)據(jù)集:
并用泊松模型對數(shù)據(jù)集進行擬合: poisson_mod = sm.Poisson(rand_data.endog, rand_exog) 5 QuandlQuandl 是金融數(shù)據(jù)源庫,提供了的大量經(jīng)濟、金融和市場數(shù)據(jù)。大多數(shù)原始數(shù)據(jù)集在注冊后可免費訪問(需要一個 API 密鑰),更高級和更深入的數(shù)據(jù)集則需要付費。 6 ZiplineZipline是一個強大的 Python 算法交易庫, 將統(tǒng)計、數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)源聯(lián)系,且為 Quantopian(一個用于構(gòu)建和執(zhí)行交易策略的免費平臺)提供支持。 Quandl的數(shù)據(jù)可以輕松導入,自定義算法也可以輕松設計、測試和實施。這包括算法的回溯測試和實時交易。一個基本算法是這樣的:
我們從 zipline 中導入訂單、記錄和符號函數(shù),建立了一個記錄蘋果股票價格的算法。 7 Pyfolio在 zipline 中設計和測試算法后,pyfolio 庫提供了一種生成包含性能統(tǒng)計數(shù)據(jù)的簡便方法。這些統(tǒng)計數(shù)據(jù)包括年度/月度回報、回報量化、滾動貝塔/夏普比率、投資組合周轉(zhuǎn)率等。生成單只股票的示例數(shù)據(jù)表: import pyfolio as pf 輸出結(jié)果將是一系列包含性能指標的表格和圖表。 8 TA-Lib接下來的兩個庫是 zipline 和 pyfolio 的替代品。第一個是技術(shù)分析庫,簡稱 TA-Lib,它使用 C++ 編寫,但也有 Python 的封裝。與 zipline 一樣,TA-Lib 提供了常見的金融工具,如重疊研究、動量指標、成交量指標、波動率指標、價格轉(zhuǎn)換、周期指標、模式識別和純統(tǒng)計功能。 9 QuantLibQuantLib 是 zipline 和 pyfolio 的第二個替代庫,與 TA-Lib 類似,QuantLib 也是用 C++ 編寫,然后導出到 Python。 QuantLib旨在創(chuàng)建一個免費、開源的建模、交易和風險管理庫。該庫包含設計和實施高級算法的工具,其中包括市場慣例、收益曲線模型、求解器、PDE、蒙特卡羅等功能。 10 Matplotlib前面用于金融的 python庫包含了金融數(shù)據(jù)源、金融數(shù)據(jù)的最佳數(shù)據(jù)結(jié)構(gòu)以及統(tǒng)計模型和評估機制。但沒有一個庫提供了用于金融建模的最重要的 Python 工具之一:數(shù)據(jù)可視化(本文中的所有可視化均由 matplotlib 提供)。 可視化不僅對于理解金融數(shù)據(jù)的趨勢很重要,而且對于向非技術(shù)人員傳達見解也很重要。Python 中有許多數(shù)據(jù)可視化庫,每個庫都有其優(yōu)點和缺點,但在金融建模中最容易實現(xiàn)的是 matplotlib。這主要是因為許多庫都已經(jīng)依賴 matplotlib。 來源:activestate |
|