看了Python在金融行業中的應用,大數據分析實在太重要了

異步社區 發佈 2019-12-23T01:49:45+00:00

來源 | 異步 | 文末贈書說起金融,大家並不陌生,畢竟和我們的錢包關係緊密。這個「多金」的產業能持續的高速發展,源自科技的賦能。從ATM到信用卡,從網上銀行到移動支付……金融科技正在改變著我們的生活。國內的金融科技發展尤為迅速,在全球金融科技市場中,中國正占據越來越重要的位置。


說起金融,大家並不陌生,畢竟和我們的錢包關係緊密。這個「多金」的產業能持續的高速發展,源自科技的賦能。
從ATM到信用卡,從網上銀行到移動支付……金融科技正在改變著我們的生活。國內的金融科技發展尤為迅速,在全球金融科技市場中,中國正占據越來越重要的位置。
即便如此,金融科技的風口卻從未停息……最近,在第四屆智能金融國際論壇上,再次提到了區塊鏈、人工智慧、5G等科技巨變的力量,強調了科技在資訊與數據領域的重要意義。


什麼是金融科技?

簡單介紹一下,金融科技(Fintech)是指通過利用各類科技手段創新傳統金融行業所提供的產品和服務,提升效率並有效降低運營成本。


根據金融穩定理事會(FSB)的定義,金融科技主要是指由大數據、區塊鏈、雲計算、人工智慧等新興前沿技術帶動,對金融市場以及金融服務業務供給產生重大影響的新興業務模式、新技術應用、新產品服務等。


隨著大數據時代的到來,人工智慧等前沿的科技在算法深刻改變了金融業態,並成為未來金融發展的制高點。金融科技正在傳統金融行業的各個領域積極布局,已然成為新的風口。


隨著人工智慧發展而大火的Python,有著簡單易學、速度快、可移植性、解釋性、可拓展性、可嵌入性以及豐富的庫等特點,使其在數學、大數據分析以及處理金融行業和財務(數據)分析中都有著得天獨厚的優勢。


Python在金融中的應用

Python的語法很容易實現那些金融算法和數學計算,每個數學語句都能轉變成一行Python代碼,每行允許超過十萬的計算量。


在金融環境中邁出使用Python第一步的大部分人都可能要攻克某個算法問題。這和想要解出微分方程、求取積分或者可視化某些數據的科學工作者類似。


一般來說,在這一階段,對正規開發過程、測試、文檔或者部署沒有太多的要求。然而,這一階段似乎是人們特別容易愛上 Python 的時候,主要原因是 Python 的語法總體上和用於描述科學問題或者金融算法的數學語法相當近。


我們可以通過一個簡單的金融算法——通過蒙特卡洛模擬方法估計歐式看漲期權的價值來說明這一現象。我們將考慮Black-Scholes-Merton(BSM)模型,在這種模型中期權的潛在風險遵循幾何布朗運動。假定我們使用以下數值化參數進行估值:

● 初始股票指數水平 S0=100;

● 歐式看漲期權的行權價格 K=105;

● 到期時間 T=1 年;

● 固定無風險短期利率 r=5%;

● 固定波動率 σ=20%。

在 BSM 模型中,到期指數水平是一個隨機變量,由公式 1-1 給出,其中 z 是一個標準正態分布隨機變量。公式Black-Scholes-Merton(1973)到期指數水平


下面是蒙特卡洛估值過程的算法描述。

(1)從標準正態分布中取得 I 個(偽)隨機數 z(i),i∈{1,2,…,I}。

(2)為給定的 z(i)和公式 1-1 計算所有到期指數水平 ST(i)。

(3)計算到期時期權的所有內在價值 hT(i)=max(ST(i) K,0)。

(4)通過公式 1-2 中給出的蒙特卡羅估算函數估計期權現值。公式 1-2 歐式期權的蒙特卡洛估算函數。

現在,我們需要將這個問題和算法翻譯為Python代碼。下面的代碼將實現一些必要的步驟。

NumPy在這裡作為主程序包使用。

定義模型並模擬參數值。

隨機數生成器種子值固定。

提取標準正態分布隨機數。

模擬期末價值。

計算期權到期收益。

計算蒙特卡洛估算函數。

列印輸出估算結果。

以下 3 個方面值得注意。


語法:Python 語法與數學語法相當接近,例如參數賦值的方面。

翻譯:每條數學或者算法語句一般都可以翻譯為單行 Python 代碼。


向量化:NumPy的強項之一是緊湊的向量化語法,例如,允許在單一代碼行中進行 10 萬次計算。這段代碼可以用於 IPython 或 Jupyter Notebook 等交互式環境。但是,需要頻繁重用的代碼一般組織為所 謂的模塊(或者腳本),也就是帶有.py 後綴的 Python(文本)文件。本例的模塊如下圖所示,可以將其保存為名為 bsm_msc_euro.py 的文件。


簡單算法示例說明,Python 的基本語法很適合為經典的科學語言二重奏——英語和數學來 提供補充。在科學語言組合中添加 Python 能使其更加全面。


Python用於分析學

Python效率較為明顯的領域之一是交互式的數據分析,對於大數據來說它無疑是一個最合適的選擇。這些領域從 IPython、Jupyter Notebook 等有力工具和pandas之類的程序中庫獲益良多。假設你是一位正在撰寫碩士論文的金融專業學生,對標普500指數感興趣,想要分析1年的歷史指數水平,以了解指數在這段時間內的波動性,你希望找到證據證明這種變動性與某些典型的模型假設相反,

它是隨時間變動而非固定。而且,應該對結果進行可視化,你要進行的主要的工作如下:

● 從網絡上下載指數水平數據;

● 計算年化對數收益率的滾動標準差(波動率);

● 繪製指數水平數據和波動性結果圖表。

這些任務很複雜,在不久之前還被認為是專業金融分析師才能完成的。而在今天,即使是金融專業的學

生也可以輕鬆地對付這類問題。我們來看看具體的做法:

導入 NumPy 和 pandas。導入 matplotlib 並配置 Jupyter 繪圖樣式和方法。pd.read_csv()可以讀取遠程或者本地存儲的逗號分隔值(CSV)形式數據集。選取一個數據子集,刪除NaN(非數值)值。顯示關於數據集的一些元信息。以向量化的方式(在 Python 級別上「無循環」)計算對數收益率。得出滾動年化波動率。最後繪製兩個時間序列。下圖展示了這一簡短交互會話所得到的圖形化結果。


用幾行代碼就足以完成金融分析中的典型複雜任務:數據收集、複雜和重複的數學計算以及結果的可視化,令人覺得不可思議。從這個例子中可以看到,pandas使整個時間系列的處理變得就像浮點數上的數學運算那樣容易。

將這個例子轉換到專業的金融環境中,可以看出金融分析師在應用提供高層次抽象的合適Python工具和庫的時候,能夠將焦點放在自身的領域上,而不用關心複雜的技術細節。分析師可以快速反應,幾乎實時地提供寶貴的調見,確保自己比競爭對手先行一步。這種效率的提高很容易轉換為可度量的財務效果。

除了Python在數據分析中那些很明顯的優點(易學,大量的在線社區等等)之外,在數據科學中的廣泛使用,以及我們今天看到的大多數基於網絡的分析,是Python在數據分析領域得以廣泛傳播的主要原因另外,Python在數學和人工智慧領域中也發揮著獨特的優勢,《Python金融大數據分析(第2版)》一書中還詳細為我們講述了Python以及Python在金融學中的應用。

本書適合對使用 Python 進行大數據分析和處理感興趣的金融行業開發人員閱讀。

- 推薦閱讀 -


今日福利


《Python金融大數據分析(第2版)》

適合對使用Python進行大數據分析、處理感興趣的金融行業開發人員閱讀。

如何獲得:參與話題留言+轉發本文至朋友圈,12月15日,異步君將抽取2名讀者贈送《Python金融大數據分析(第2版)》


今日互動話題:

「說一說金融科技對生活的改變」


-END-



點擊「閱讀原文」,立即試讀

關鍵字: