Python

Pythonによるローリング統計の表示方法(移動平均)

Python

どうも、月見(@Suzuka14144156)です。

今回の記事では、Pythonによるローリング統計の表示方法を解説したいと思います。

よって、この記事では、このような悩みをお持ちの方におすすめです。

  • ローリング統計とは
  • ローリング統計はどのように使うの?
  • Pythonでどのように表示するの?

ローリング統計とは?

  • ローリング統計とは、ある一定期間における最大値、最小値、平均値中央値、標準偏差のことです。

詳細は、以下の本で解説されています。

ローリング統計のイメージは、例えば、ビットコインの時系列データを用いると、以下のグラフになります。

  • 時系列データの平均値、最大値、最小値をプロット
  • 20日間のデータの平均値、最大値、最小値を用いてプロット

一定期間の各統計量が可視化され、分析がしやすくなります。

ローリング統計の使い方

ローリング統計は、おおきく以下二つを把握することができます

  • トレンド
  • ボラティリティ

トレンド

筆者は、時系列データの大まかなトレンドを把握するのに用います。

例えば以下の図に示すように、緑(mean)の線の傾きが右肩上がりであれば、上昇トレンド、右肩下がりなら下落トレンドだと判断できます。

ボラティリティ

また、maxとminの幅からは、ボラティリティ(変動幅)を把握することができます。

  • ボラティリティ=リスク

Pythonによるローリング統計の環境の構築

今回は、Anacondaを用います。

Anacondaをインストール

以下の記事を参考にしてください。

JupyterLabの起動

コマンドプロンプトから、以下のコードを入力ください。

jupyter lab

以下赤枠のアイコンをクリック。

これで起動します。

ライブラリのインストール

主に使用するライブラリ
  • plotly:グラフの表示
  • pandas:データ処理
  • pandas_data:価格取得
  • yfinance:ヤフーファイナンス

以下以外のライブラリは、デフォルトでインストールされているはずです。

plotlyのインストール

コマンドプロンプトから、以下のコードを入力ください。

 conda install -c plotly plotly

jupyter labでうまく表示されない場合は、以下の記事を参考にしてみてください。

pandas_dataのインストール

コマンドプロンプトから、以下のコードを入力ください。

pip install pandas_datareader

yfinanceのインストール

コマンドプロンプトから、以下のコードを入力ください。

pip install yfinance

Pythonによるローリング統計のコード

ビットコインの価格の取得

import datetime
import pandas_datareader.data as pdr

#日付
start = "2015-1-01" 
end = datetime.date.today()

#ビットコイン
tickers = ['BTC-USD',]

#ビットコインのデータを取得
data = pdr.get_data_yahoo(tickers, start, end)

今回は、2015年の1月~現在までのビットコインの価格を取得します。

ローリング統計量の計算

import warnings
#警告無視
warnings.simplefilter('ignore')

rolling_data = data['Adj Close']

#20日間のデータで統計量を算出
window = 20

#ローリング統計量の算出
rolling_data['min'] = data['Adj Close'].rolling(window = window).min()
rolling_data['mean'] = data['Adj Close'].rolling(window = window).mean()
rolling_data['std'] = data['Adj Close'].rolling(window = window).std()
rolling_data['median'] = data['Adj Close'].rolling(window = window).median()
rolling_data['max'] = data['Adj Close'].rolling(window = window).max()
rolling_data['ewma'] = data['Adj Close'].ewm(halflife=0.5,min_periods=window).mean()

plotlyによる可視化

import plotly.graph_objects as go
fig = go.Figure(data=[
    go.Scatter(x=rolling_data.index, y=rolling_data['BTC-USD'], name="BTC-USD"),
    go.Scatter(x=rolling_data.index, y=rolling_data['min'], name="min"),
    go.Scatter(x=rolling_data.index, y=rolling_data['mean'], name="mean"),
    go.Scatter(x=rolling_data.index, y=rolling_data['max'], name="max"),
])
fig.show()

Pythonでファイナンスのデータ分析の勉強方法

私は、以下の本で勉強しました。

かなり詳しく書かれており、とてもオススメの本です。

Udemy

Udemyはオンライン口座です。

一度購入すれば、ずっと閲覧できるのでオススメです。

【世界で8万人が受講:Python for Finance】Pythonを使って学ぶ現代ファイナンス理論と実践
ポートフォリオ理論、コーポレートファイナンス、資本資産評価モデル(CAPM)、デリバティブの値決め、モンテカルロシミュレーションといった内容を中心に、Pwcなどで活躍した講師が理論と実践に基づき解説します。

私の記事

私のブログでも解説していますので参考にしてみてください。

その他参考記事

まとめ

今回の記事では、Pythonによるローリング統計の表示方法を解説しました。

私のブログではほかにも、仮想通貨の自動トレードの方法などを解説しているのでぜひ参考にしてみてください。

無料で閲覧可能で、コードをコピペして動かすことができます。

コメント

タイトルとURLをコピーしました