アセットマネージャーのためのファイナンス機械学習: ノイズ除去 練習問題

  • 株式リターン系列の行列を用いて、共分散行列と相関行列の条件数を求める

yahoo financeから、ティッカーシンボルを指定して終値をデータセットに読み出し、差分を取り、期待リターン系列を出す。

from datetime import datetime
from pandas_datareader import data as pdr
import yfinance as yfin

yfin.pdr_override()

ticker_symbols=['NVDA','AMZN','INTC','AAPL','GOOG','IBM','JPM','CSCO','MRK','NKE',
               'VZ','CAT','PG','AXP','DOW','XOM','PFE','CVX','WBA','MMM','JNJ','BA',
               'HD','TRV','MCD','GS','UNH','MSFT','V','KO','WMT','DIS']
startdate= datetime(2021,5,1)
enddate = datetime(2023,5,1)

s_data= pdr.get_data_yahoo(ticker_symbols, startdate, enddate,interval='1d')['Adj Close']

return_month = s_data.pct_change()
return_mat=return_month.dropna()
return_mat.describe()
return_mat.describe()

共分散行列を計算し、相関行列の条件数を求める。

covariance = return_mat.cov()
covariance
return_mat.cov()
corr_mat=return_mat.corr()
eval, evec=np.linalg.eig(corr_mat)
print(eval[np.argmax(eval)])
print(eval[np.argmin(eval)])
cond_num=eval[np.argmax(eval)]/eval[np.argmin(eval)]
cond_num
eVal_max, eVal_min, condtion number

この記事が気に入ったらサポートをしてみませんか?