アメリカS&P500のデータを使ってリッジ回帰で株価予測【金融データでpython分析】

2018年12月21日金曜日

python データ分析 金融マティックス

t f B! P L
アメリカS&P500のデータを使ってリッジ回帰で株価予測をしてみました【金融データでpython分析】

アメリカS&P500のデータを使ってリッジ回帰で予測【金融データでpython分析】

リッジ回帰<統計学>【金融データでpython分析】


リッジ回帰では正則化という機能があって、これにより予測できない変化の影響を低減させるのだそうです。
リッジ回帰はL2正則化を行い、線形回帰の適切なパラメタを求める回帰モデルです。L2正則化は、予測に用いるデータの範囲を算出し、データの範囲を揃えることで、係数を小さくすることにより、回帰モデルの汎化を目指す方法。範囲とは、データが取りうる数値の範囲で、揃える場合は0から1の範囲になるように調整されます。範囲を揃えることで、全てのデータの予測に対する寄与が比較可能になり、汎化しやすいモデルになるという特徴があります。
機械学習アルゴリズム〜線形回帰〜/Rで学ぶベイズ統計学 より
ということは、複雑で予測が難しいとされる株価の予測もしやすいのかもしれません。
そこで、アメリカS&P500のデータを使ってリッジ回帰で予測してみたいと思います。

アメリカS&P500のデータの取得【金融データでpython分析】


インデックス投資としても有名なS&P500。
NASDAQやNYダウよりもバランスが良く、指標としても最適といわれています。

データの取得先は、FREDやNasdaqがありますが、今回はFREDから取得しました。

アメリカS&P500のデータの取得【金融データでpython分析】

株価データの取得先

FRED S&P500
Nasdaq

アメリカS&P500のデータを使ってリッジ回帰で予測【金融データでpython分析】

S&P500のグラフを描画

ダウンロードしたS&P500のデータを使って、グラフを描画させます。
エラーが出た場合は、pandas_datareaderの未インストール、もしくは「%matplotlib inline」がないことが考えられます。

S&P500のグラフを描画【金融データでpython分析】

FREDのサイトで見たのと同じグラフが表示されています。
ココ最近の落ち込み具合が気になります。

リッジ回帰モデルを作成し予測【金融データでpython分析】

ここでは、とりあえず過去10日間のデータを使い1日後の株価を予測しています。

リッジ回帰モデルを作成し予測【金融データでpython分析】

上の方が切れてしまっていますが、ご容赦ください(T_T)
グラフだけを見れば、ほとんど似通っていて上手く予測できているようにみえます。
しかしながら、ベンチマークが6.7、予測誤差が0.0003のため上手く予測できていないことが分かります。

数字を変えてチューニング<リッジ回帰>【金融データでpython分析】

次に、過去50日間で50日先を、過去100日間で100日先をそれぞれ予測してみます。
さらに、alphaを10にして正則化を強めることもしてみました。

数字を変えてチューニング<リッジ回帰>【金融データでpython分析】
残念ながら、どれも上手く予測できたとは言い難い内容でした。
中でも50日間で50日先を予測が、近いかなと思います。
「75日線」で株価を見る人もいるので、75日で予測してみても良かったかもしれません。
特に最近の急激な株価の下落も、予測を難しくさせる要因の一つと言えるでしょう。
まぁ、株投資もそんなに甘くないですよ、ということで!

参照サイト


【機械学習】ラッソ回帰・リッジ回帰について メモ/Qiita
リッジ回帰/Shogo Computing Laboratory
線形回帰とリッジ回帰をPythonで比べてみた/ギークなエンジニアを目指す男

このブログを検索

Translate

QooQ