Pythonで偏自己相関係数を計算する
[Python] 偏自己相関係数
株価(日次または週次の終値)の時系列データを取得し、偏自己相関係数を求める。
参考にしたのはこちら:
# 株価(日次または週次の終値)の時系列データを取得し、偏自己相関係数を求める # usage: python pacf.py code duration d_or_w (1: Per day/Else: Per week) # ライブラリのインポート import sys import urllib.request import bs4 import matplotlib.pyplot as plt # 統計モデル import statsmodels.api as sm # Constants # Arguments # 証券コード code = sys.argv[1] # 20 x duration (日または週)分のデータを取得 duration = int(sys.argv[2]) # 日次または週次の選択 d_or_w = int(sys.argv[3]) if d_or_w == 1: d_flag = "d" else: d_flag = "w" # Variables # 株価時系列データ price = [] for i in range(1,duration+1): # Web上のリソースからsoupを作成 url = "http://info.finance.yahoo.co.jp/history/?code="+code+"&sy=2000&sm=1&sd=1&tm="+d_flag+"&p="+str(i) soup = bs4.BeautifulSoup(urllib.request.urlopen(url).read() , "lxml" ) # 株価時系列のテーブルの各行を参照 for j in range(1,len(soup.findAll('table')[1].findAll('tr'))): # 株式分割・併合等の表示を除外 if len(soup.findAll('table')[1].findAll('tr')[j].findAll('td')) == 7: # print(soup.findAll('table')[1].findAll('tr')[j].findAll('td')) # タグ、カンマ等を取り除く src = str(soup.findAll('table')[1].findAll('tr')[j].findAll('td')[6]) dst = src.replace("<td>","") dst = dst.replace("</td>","") dst = dst.replace(",","") # 株価時系列データ、過去→現在の順になるように追加(挿入)していく price.insert( 0 , float(dst) ) # 自己相関 # price_acf = sm.tsa.stattools.acf(price, nlags=40) # 偏自己相関 price_pacf = sm.tsa.stattools.pacf(price, nlags=40, method='ols') # 偏自己相関の出力 #print( price_pacf ) plt.plot( price_pacf ) plt.show()