Engineering Note

プログラミングなどの技術的なメモ

ローソク足チャート (Pythonによるファイナンス)

candle stick chart

本記事は、PythonのPandasを用いてファイナンスの基本的な理論などについて学んでいきます。

今回は、江戸時代に日本で発明されたローソク足チャート(Candle Stick Chart)について学んでいきます。

 

 

Pandasとは

Pandasとは、データ分析や操作をまとめたPythonのライブラリです。

特にPanel、DataFrameおよびSeriesと呼ばれるデータ構造は使いやすく、また統計量を求めるための様々なメソッドが組み込まれています。

なお、Pandasの由来はPanel Dataから来ているそうです。

以下が公式のドキュメントになります。

 

 

ローソク足チャートとは

ローソク足チャート(Candle Stick Chart)とは、ある期間の株価(始値、高値、安値、終値)の推移を、ローソクと呼ばれる棒状の図形とそれに付随するヒゲで表現したチャートを言います。

江戸時代に本間宗久により発明され、主に米の取引価格の分析に用いられていたとされ、現在では日本のみならず世界中で利用されているチャートの一つです。

 

ローソク足の概要については以下になります。

 

fig1. ローソク足

fig1. ローソク足

 

Pythonローソク足チャートを描いてみる

それでは、Pythonローソク足チャートを描いてみます。

ローソク足チャートを描画するにあたって、mpl_financeをインストールします。

元々はmatplotlib.financeとしてMatplotlibライブラリに含まれていましたが、バージョン2.0以降からmpl_financeモジュールとして切り離されました。

 

 > pip install mpl_finance

 

以下がスクリプトになります。

 

import pickle
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import mpl_finance as mpf
from matplotlib.dates import date2num

def show_candle_stick(df, start=False, end=False):
    xdate = [x for x in df.index]

    ohlc = np.vstack((date2num(xdate), df.values.T)).T
    fig = plt.figure(figsize=(15,5))
    ax = plt.subplot()
    mpf.candlestick_ohlc(ax, ohlc, width=0.7, colorup='b', colordown='r')
    ax.grid()
    if start:
        xmin = start
    else:
        xmin = df.index[0]
    if end:
        xmax = end
    else:
        xmax = df.index[-1]
    ymin = df.loc[xmin:xmax, "low"].min() - 50
    ymax = df.loc[xmin:xmax, "high"].max() + 50
    ax.set_xlim(xmin, xmax)
    ax.set_ylim(ymin, ymax)
    fig.autofmt_xdate()
    plt.show()

with open('n225.pkl', 'rb') as f:
    n225 = pickle.load(f)

show_candle_stick(n225)

 

動作確認

それでは、上記で作成したスクリプトを実行してみます。

事前に2017年1月~2019年2月までの日経平均株価のDataFrameをpickleとして保存しておき、それをロードして使用しています。

fig2. ローソク足チャート

fig2. ローソク足チャート

 

期間が長いとどうしても見えにくくなりますが、ちゃんと描画されていることが確認できました。

 

参考書籍

Python3ではじめるシステムトレード ──環境構築と売買戦略 (Modern alchemists series)

完全独習 統計学入門

マーケットのテクニカル分析 ――トレード手法と売買指標の完全総合ガイド

PythonユーザのためのJupyter[実践]入門