MatlabコードでFREDから経済指標データを入手する方法

FREDから経済指標データを入手する方法

こんにちは、データサイエンティスト・ヒロキです。 投資に慣れてきたので株価データと経済指標データを重ね合わせて自分で将来の動向などを予測したいけどどうすればいいの?とお困りの方いらっしゃったりしませんでしょうか?私は約半年くらい困っていました。

そこでこの記事では、

  • ・株と経済指標を比較したいときに同じグラフに表示できないから困っている。
  • ・GDPやFFレートなどの経済指標の時系列データをダウンロードしたい。

という方のために、

経済指標が閲覧できるサイトFREDからMatlabコードを使って株価データを取得する方法を解説します。
このblogで紹介しているプログラムを実行するにはMatlabに加えてMatlabから提供されているDatafeed Toolboxが必要です。

“Matlab持ってないよ”という方も無料でMatlabを30日利用できるトライアルがありますのでご安心ください。またDatafeed Toolboxも無料のトライアル版が提供されていますのでご安心ください。
プログラム未経験なんだけど(汗という方も、本ブログのコードをコピペでOKです。
下記3ステップで丁寧に解説していきますのでご安心ください😉

  1. Datafeed Toodboxをインストールし、Matlabを起動
  2. コードをコピペ
  3. 実行

初めに、リンクをクリックいただき、一票いただけると幸いです✨

ブログランキング・にほんブログ村へにほんブログ村
にほんブログ村 株ブログへにほんブログ村

優しく解説していきますので、ご安心ください🙂

1. Datafeed Toodboxをインストールし、Matlabを起動

まず初めに、Datafeed Toolboxもインストールをしてください。
とりあえず試したいという方には無料の評価版が用意されています。
インストールが完了したら、Matlabを立ち上げてください。もしPCにインストールされていない場合は、 30日間の無料トライアルもありますので、とりあえず試してみたい方は こちら からMatlabを先にインストールし、続いてDatafeed Toolboxをインストールお願いします。

2. コードをコピペ

Matlabの新規スクリプトを立ち上げて、下記コードをコピーペーストしてください。

%入力パラメータです。取得したい時系列データの名前と始まりと終わりの日付を指定します。
series = 'GDPC1'; %GDP delta=4
start_date = '10/24/1950'; %mm/dd/yyy beginning of date range for historical data
end_date = '10/24/2021'; %mm/dd/yyy ending of date range for historical data


%fredDataへseriesで指定した経済指標のデータを格納します。(コピペするだけでOK)
fredData = get_fred_data(start_date, end_date, series);


%ここから先はfredのwebサイトからデータを入手する関数(コピペするだけでOK)
function fredData = get_fred_data(startdate, enddate, series)
url = 'https://fred.stlouisfed.org/';
c = fred(url);
d = fetch(c,series);
d.Data(1:3,:);
format bank
d = fetch(c,series,startdate,enddate);
forex = d.Data(:,2);
maxforex = max(forex);
value = abs(forex-maxforex);
idx = find(value<0.001,1);
date = d.Data(idx,1);
datestr(date);

close(c)

t=datetime(d.Data(:,1),'ConvertFrom','datenum');
data1=d.Data(:,2);
fredData = timetable(t,data1);
end

ちなみに経済指標のシンボルはFredのWebページの下記を参照します。

3. 実行

実行ボタンを押すと時系列データが得られます。 (シンプルで簡単😀)



具体例

S&P500のデータとGDPを同じグラフに描かせるコードを紹介します。S&P500のデータはyahoofinanceからダウンロードしますので、下記リンクから時系列データにアクセスできるプログラムファイルを こちら からダウンロードし、作業フォルダに保存しておいてください。

下記コードをコピペして実行するとS&P500のデータとGDPを同じグラフに描かせることができます😀



%1950/10/24~2021/10/24までのGDPのデータをfredから取得します。
fredData = get_fred_data('10/24/1950', '10/24/2021', 'GDPC1');

%1950/10/24~2021/10/24までのS&P500のデータをyahoofinanceから取得します。
stockData = hist_stock_data('24101950','24102021','^GSPC');

% % グラフの作成
yyaxis left
plot(stockData.Date,stockData.Close)
ylabel('S&P500 [USD]')
hold on
yyaxis right
plot(fredData.t,fredData.data1)
legend('S&P500','GDP')
title('S&P500とGDPの時系列グラフ')
xlabel('Year')
ylabel('GDP')

% % グラフの範囲を変更したければこちらの%を外してコードを有効にする。
% str = ["2005-10-24","2021-10-24"];
% xlim(datetime(str))


%ここから先はfredのwebサイトからデータを入手する関数(コピペするだけでOK)
function fredData = get_fred_data(startdate, enddate, series)
url = 'https://fred.stlouisfed.org/';
c = fred(url);
d = fetch(c,series);
d.Data(1:3,:);
format bank
d = fetch(c,series,startdate,enddate);
forex = d.Data(:,2);
maxforex = max(forex);
value = abs(forex-maxforex);
idx = find(value<0.001,1);
date = d.Data(idx,1);
datestr(date);
close(c)
t=datetime(d.Data(:,1),'ConvertFrom','datenum');
data1=d.Data(:,2);
fredData = timetable(t,data1);
end

もしグラフのx軸の範囲を変更したければ上記コード中盤にコメントアウトしてある下記コードの%を削除して、コードを有効にしてください。 下記コードはx軸の表示範囲を2005/10/24~2021/10/24までに変更するコードです。

str = ["2005-10-24","2021-10-24"];
xlim(datetime(str))

次のようなグラフが出力されるはずです。

図: Matlab出力グラフ


参考書籍

Matlabの基本的なことを勉強したいという方には、下記書籍がおすすめです。

MATLAB入門(メルカリ) MATLAB入門(Amazon)


今後

次回は下記のような入門書を参考に株価や経済指標データの分析を行なっていきたいと思います。💹


入門はじめての時系列分析/盛岡書房



最後まで読んでくださりありがとうございました😊   

ひろき🐶


PVアクセスランキング にほんブログ村