天天看點

金融行業掀起學Python熱潮,看看政策怎麼說!

從去年開始,朋友圈的Python課程就非常火,身邊好多程式員朋友都開始鑽研起了Python。不過最近,身邊很多金融行業的朋友也紛紛在朋友圈打起了卡,每天更新自己學習Python的進度。

這實在令我好奇,就專門找朋友一問究竟,朋友對我說:再不學Python都趕不上金融科技時代了!

金融行業掀起學Python熱潮,看看政策怎麼說!

前不久,中國人民銀行印發的《金融科技(FinTech)發展規劃(2019-2021年)》(以下簡稱《規劃》)指出,金融科技是技術驅動的金融創新,旨在運用現代科技成果改造或創新金融産品、經營模式、業務流程等,推動金融發展提質增效。

在政策的指導之下,如今,Python被廣泛地應用于金融投資和風險管理領域,更多金融機構嘗試着把Python與金融的風險管理相結合,用工具來把握金融市場的不确定性。

金融行業掀起學Python熱潮,看看政策怎麼說!

不僅如此,各大金融機構還将金融科技作為重要戰略計劃,招募金融科技領域中高端人才。一時間,“金融科技”、“數字化轉型”成為當下金融圈的熱門關鍵詞。

将技術應用于業務,科技賦能業務。在未來,Python将是金融領域從業者的必備技能。

不僅僅是程式猿,現在即便是資料相關的崗位,招聘需求上都會寫上“熟練使用Python”。

金融行業掀起學Python熱潮,看看政策怎麼說!
金融行業掀起學Python熱潮,看看政策怎麼說!

那Python在金融科技中到底能發揮多大價值呢?今天異步君就為大家介紹下兩個股票投資的案例看看Python的具體應用:

利用Python下載下傳資料并使之可視化

中證指數有限公司的官方網站提供了關于A股股指曆史走勢資料的下載下傳服務。下面,通過導入已下載下傳的上證綜指、深圳成指、中證500和中證800指數在2014年至2018年的日收盤價資料并且通過Python進行可視化,具體的代碼如下:

In [1]: import numpy as np
    ...: import pandas as pd
    ...: import matplotlib.pyplot as plt
    ...: from pylab import mpl 
    ...: mpl.rcParams['font.sans-serif'] = ['SimHei']
    ...: mpl.rcParams['axes.unicode_minus'] = False

In [2]: index_data=pd.read_excel('C:/Desktop/國内A股主要股指的日收盤資料(2014-2018).xlsx',   
sheet_name="Sheet1", header=0, index_col=0)   #導入外部資料

In [3]: index_data.plot(subplots=True,layout=(2,2),figsize=(10,10),fontsize=13,grid=True)
Out[3]:      
金融行業掀起學Python熱潮,看看政策怎麼說!
金融行業掀起學Python熱潮,看看政策怎麼說!

▲運用Python繪制A股相關指數日收盤價走勢圖(2014年至2018年)

利用Python計算投資組合的收益率和波動率

下面通過基于A股市場的一個案例并結合Python示範如何計算一個投資組合的收益率和波動率。

【例】假定投資組合配置了5隻A股股票(具體資訊見下表),資料是2016年至2018年期間的每個交易日收盤價格。下面就通過Python計算投資組合的預期收益率和年化波動率,具體分為4個步驟。

表:投資組合中的股票資訊

股票代碼 600009 600019 600837 601398 601857
證券簡稱 上海機場 寶鋼股份 海通證券 工商銀行 中國石油

第1步:導入股票的收盤價格資料并且進行可視化,具體的代碼如下:

金融行業掀起學Python熱潮,看看政策怎麼說!

▲股價2016至2018年的走勢圖(股價在2016年首個交易日歸一處理)

In [6]: data=pd.read_excel('C:/Desktop/建構投資組合的5隻股票資料(2016-2018).xlsx', sheet_name=  
"Sheet1",header=0,index_col=0)      #導入外部資料

In [7]: data.head()
Out[7]: 
            上海機場   寶鋼股份    海通證券   工商銀行   中國石油
日期                                        
2016-01-04  28.27     5.23      14.28     4.45      8.13
2016-01-05  28.76     5.43      14.33     4.47      8.07
2016-01-06  29.50     5.97      14.58     4.51      8.31
2016-01-07  27.99     5.38      13.23     4.43      7.83
2016-01-08  28.03     5.92      13.51     4.46      7.99

In [8]: (data/data.iloc[0]).plot(figsize=(8,6))  #将股價按首個交易日進行歸一處理并可視化      

從圖中不難發現,這5隻股票在2016年至2018年期間的走勢存在一定的分化。

第2步:按照前面介紹的式子建構這5隻股票日收益率的時間序列,同時進行可視化,代碼如下:

金融行業掀起學Python熱潮,看看政策怎麼說!

▲5隻股票日收益率的直方圖

In [9]: R=np.log(data/data.shift(1))      #按照對數收益率的計算公式得到股票收益率
     ...: R=R.dropna()                 #删除預設的資料
     ...: R.describe()
Out[9]: 
           上海機場    寶鋼股份    海通證券    工商銀行    中國石油
count  730.000000  730.000000  730.000000  730.000000  730.000000
mean     0.000802    0.000298   -0.000663    0.000237   -0.000165
std      0.019078    0.021775    0.016945    0.012614    0.012901
min     -0.105361   -0.104059   -0.098549   -0.067593   -0.082521
25%     -0.008854   -0.009260   -0.007118   -0.004662   -0.005274
50%      0.000372    0.000000   -0.000648    0.000000    0.000000
75%      0.008488    0.010305    0.006625    0.006316    0.005203
max      0.088763    0.095648    0.095198    0.059223    0.070761

In [10]: R.hist(bins=40,figsize=(10,10))    #将股票收益率按照直方圖方式展示
Out[10]:      

第3步:計算每隻股票的平均收益率、波動率以及協方差,由于運用的是日資料,是以需要進行年化處理,代碼如下:

In [11]: R_mean=R.mean()*252            #計算股票的年化平均收益率
     ...: print(R_mean)
上海機場    0.202051
寶鋼股份    0.075045
海通證券   -0.167117
工商銀行    0.059691
中國石油   -0.041456
dtype: float64

In [12]: R_cov=R.cov()*252               #計算股票的協方差矩陣并且年化處理
     ...: print(R_cov)
               上海機場  寶鋼股份 海通證券  工商銀行  中國石油
上海機場  0.091724  0.022705  0.022375  0.014478  0.017292
寶鋼股份  0.022705  0.119489  0.042816  0.023992  0.030719
海通證券  0.022375  0.042816  0.072361  0.021051  0.028913
工商銀行  0.014478  0.023992  0.021051  0.040094  0.016621
中國石油  0.017292  0.030719  0.028913  0.016621  0.041939

In [13]: R_corr=R.corr()                  #計算股票的相關系數矩陣
     ...: print(R_corr)
               上海機場  寶鋼股份  海通證券 工商銀行  中國石油
上海機場  1.000000  0.216880  0.274644  0.238733  0.278804
寶鋼股份  0.216880  1.000000  0.460463  0.346625  0.433946
海通證券  0.274644  0.460463  1.000000  0.390828  0.524851
工商銀行  0.238733  0.346625  0.390828  1.000000  0.405316
中國石油  0.278804  0.433946  0.524851  0.405316  1.000000

In [14]: R_vol=R.std()*np.sqrt(252)        #計算股票收益率的年化波動率 
     ...: print(R_vol)
上海機場    0.302861
寶鋼股份    0.345671
海通證券    0.269000
工商銀行    0.200236
中國石油    0.204791
dtype: float64      

 從以上的相關系數矩陣分析可以看到,這5隻股票的收益率之間相關性比較低,是以對于整個組合的分散化效果會比較好。

第4步:運用前面生成的随機權重數計算投資組合的預期收益率和收益波動率,代碼如下:

In [15]: R_port=np.sum(weights*R_mean)     #計算投資組合的預期收益率
     ...: print('投資組合的預期收益率:',round(R_port,4))
投資組合的預期收益率: 0.0399

In [16]: vol_port=np.sqrt(np.dot(weights,np.dot(R_cov,weights.T)))  #計算投資組合收益波動率
     ...: print('投資組合收益波動率:',round(vol_port,4))
投資組合收益波動率: 0.177      

從以上的分析中可以得到,運用随機生成的權重計算得到該投資組合的預期收益率是3.99%/年,收益波動率達到17.7%/年。

除此之外,Python還可用來繪制可行集、模拟資本市場線及可視化等更多的應用,在金融領域,Python是把鋒利好用的“手術刀”,可以幫助我們高效剖析金融風險。

檢視目錄

第1部分 入 門 篇

第1章 Python概覽

第2章 結合金融示範Python的基本操作

第2部分 基 礎 篇

第3章 結合金融場景示範NumPy子產品的操作

第4章 結合金融時間序列示範 Pandas子產品的操作

第5章 結合金融場景示範Matplotlib子產品的操作

第6章 結合金融場景示範SciPy等子產品的操作

第3 部分 提 高 篇

第7章 運用Python分析利率與債券

第8章 運用Python分析股票投資

第9章 運用Python分析期貨套期保值

第10章 運用Python分析期權的定價與風險

第11章 運用Python分析期權交易政策

第12章 運用Python測度風險價值

後記