bookloveru2
pythonで株価分析➉【Apple株とビットコインを自動売買プログラムで運用した結果】
更新日:2021年11月1日
皆様、こんにちは。
今回は、大人気シリーズ「pythonで株価分析」の第10弾です❕
本記事では、Apple株とビットコインを自動売買プログラム(シストレ)を使って、運用したらどうなるのか❓を検証していきます。('ω')ノ
尚、今回は実際のマイ・マネー💲(実弾)は使用せず、pythonで自動売買プログラム(シストレ)を構築。仮想ストラテジーの基、バックテストにて運用結果を見ていきます。
※ストラテジー:システムトレードにおける戦略のこと。
今回も、コピペで行ける様、しっかりとpythonコードの解説をしていきますので、グーグルコラボのご準備をお願い致します。
では、早速行ってみましょう!(^^)!
目次
❶ 自動売買プログラムの根幹【ストラテジー】とは❓
❷ Apple株とビットコインを移動平均線を使って、ゴールデンクロスで売買してみた(*‘ω‘ *)
❸ pythonコード解説
❹ 機械学習でAppleの今後の株価を予測して見た
➎ python一括コード
❶自動売買プログラムの根幹【ストラテジー】とは❓
ストラテジーとは、システムトレードを行うにあたっての戦略を意味します。
例えば、至極一般的な手法に、『5日移動平均線が25日移動平均線を上回ったら、買いシグナル点灯【所謂、ゴールデンクロス】』というものがあります。逆に、『5日移動平均線が25日移動平均線を下回ったら、売りシグナル点灯【所謂、デットクロス】』というものがあります。
イメージ図👇
マネックス証券より https://info.monex.co.jp/technical-analysis/indicators/001.html
※私もマネックス証券を愛用しています(^_-)-☆
この他にも、統計学の標準偏差の考え方を使用した、ボリンジャーバンドで売買のタイミングを決定する手法など、テクニカル分析を使用した売買ストラテジーは星の数ほどあります。
ボリンジャーバンドのイメージ図👇

マネックス証券より https://info.monex.co.jp/technical-analysis/indicators/003.html
ストラテジーとは、これらの基本的なテクニカル分析に、ご自身の判断基準を付け加えて構築される売買戦略だと言えます。
例えば、
「イールドカーブが予想以上にフラット化したら、株式は買い。」とか、
「原油が値下がりしたら、株式は売り。」とか、
「明日の天気が雨だったら、株式は全力買い。」
といった、ご自身の独自の戦略を構築し、売買の判断基準となるものがストラテジーです(`・ω・´)ゞ
数学や物理が得意な方や、統計学、計量経済学を学んだ人たちは、その知識を活かして独自の数理モデルを構築し、ストラテジーを設計。
そのストラテジーを自動売買プログラムに落とし込んで、シストレを行うといったことを実行します。
※余談ですが、数理モデルとは、数学的な手段を用いて記述された、対象のデータ生成ルールを模擬した数式のことを言ったります。
つまり、世の中で起きている現象などを、一般化された数式で記述する。その数式を見つけることが、数理モデルを構築する、という意味です。
『株の自動売買で言えば、この数式に沿って、株価は日々変動しているんじゃないか!?』
といった、利益の根源になりそうな数式を探す作業が、数理モデルの構築と言えます。
数理モデルをザックリと学びたい方には、下記書籍がオススメです(*^-^*)。
江崎貴裕 (著):データ分析のための数理モデル入門 本質をとらえた分析のために
❷Apple株とビットコインを移動平均線を使って、ゴールデンクロスで売買してみた(*‘ω‘ *)
では、ここからは、先程例に挙げた、至極一般的な手法である、
『5日移動平均線が25日移動平均線を上回ったら、買い』。
『5日移動平均線が25日移動平均線を下回ったら、売り』。
という単純なストラテジーを使って、Apple株を自動売買してみたら、どうなるのか❓を見ていきます。
Apple株を選んだ理由は2点。
①現在の株式時価総額が世界一。
②2007年に、大統領就任前のバラク・オバマに、“法に触れなければ、Appleの株を山のように買いたいね。すごい大物になるぞ、あれは”と言わせたからです。
では、そんなジョブズ率いるスーパースター銘柄Apple株を、とても単純な移動平均線だけを使って、自動売買していたら、どうなっていたのか❕❓を見ていきます(・ω・)ノ
期間:2007年3月15日~2021年3月15日 現在まで
※ちょうどオバマ大統領がApple株が欲しいと言っていた時期をスタート地点とします(´∀`*)ウフフ
比較条件
【Apple株を100ドル(≒約1万円)分買って、放置していた場合。】と、
【Apple株を100ドル(≒約1万円)分買って、ストラテジー通り売買していた場合】と、でどちらが利益を上げたかを比較していきます。
とりあえず、結果です👇

HODL:100ドル分買って、放置した場合。
EMA return:100ドル分買って、ストラテジー通り自動売買した場合。
HODLの圧勝という結果に終わりました(・ω・)ノ
HODL:100ドル分買って、放置した場合では、14年間で、約4,400ドル(43倍)に大化けしました(・ω・)ノ
一方、
EMA return:100ドル分買って、ストラテジー通り自動売買した場合では、14年間で、583ドル(5倍)にしかなりませんでした(´;ω;`)ウゥゥ
テクニカル分析で最も初歩的かつ有名な手法を持ってしても、『購入して寝てる。』という動作に勝つことは出来ませんでした(´;ω;`)ウゥゥ。これが、自動売買・ストラテジー構築の難しいところです。
マイ・マネー(実弾)を使用しなくて良かった ε-(´∀`*)ホッ。
因みに、これをビットコインで試した場合、こんな感じです👇

HODL:100ドル分買って、放置した場合では、約12,200ドル(122倍)に大化けしました(・ω・)ノ
一方、
EMA return:100ドル分買って、ストラテジー通り自動売買した場合では、4,000ドル(40倍)でした(´;ω;`)ウゥゥ
Apple株よりは健闘している様に見えます。
恐らくこれは、ビットコインが群雄割拠の株式相場ではなく、知名度および出来高ともに、脆弱で、テクニカル的にイージーであった時代が背景にあると考えられます。
❸ pythonコード解説
では、コードです👇
はい!ドン❕
まずは必要なモジュールをインストール。
対象期間の株価推移をプロットします。
import numpy as np
import pandas as pd
import datetime
import pandas_datareader.data as web
import fix_yahoo_finance as yf
import matplotlib.pyplot as plt
start = datetime.date(2007,3,15)
end = datetime.date.today()
codelist = ["AAPL"]
AAPL = yf.download(codelist, start=start, end=end)["Adj Close"].dropna()
AAPL
# データを可視化する
AAPL.plot()

変化率をグラフ表示👇

スタート日に100ドル分Apple株を購入した場合の増減額を表示👇

移動平均線を作成👇

ストラテジーを構築👇
『5日移動平均線が25日移動平均線を上回ったら、買い』。
『5日移動平均線が25日移動平均線を下回ったら、売り』。

結果です👇
HODL時と自動売買プログラム稼働時の結果比較。

こうして、単純な移動平均線を使用したストラテジーで自動売買プログラムを実行した結果が視覚化されました❕
お疲れ様でした。(`・ω・´)ゞ
❹ 機械学習でAppleの今後の株価を予測して見た
最後に、Apple株の未来を予測して見ましょう(・ω・)ノ
学習期間:2007年3月15日から2021年3月15日現在まで
予測した株価:2021年3月~2022年3月までの1年間(未来)
以下グラフです👇

黒い点が実際の株価です。
青い線が株価の予測値です。
赤い線がトレンドです。
薄い水色のバンドが株価の信頼区間です。
垂直に引かれた赤い破線はトレンド転換点です。
現在は1株121ドル。1年後は1株141ドル程度。
この予測からは、『既に株価が弾けてるから、良く分かんねーぜ(^_-)-☆でも、まだまだ行けんじゃね❕❓❓』
と言っている様に感じます。
つまり、天井ですね('ω')ノ
値崩れに気をつけましょう!(^^)!
【まとめ】
今回は、単純なストラテジーを構築し、その戦略の基での結果を見ていきましたが、数理モデルやストラテジーというものは、あくまで、『仮定』をモデル化しただけであって、現実の値動きを完全に模擬できるものではありません。
データ解析に深くハマると、良くできた数理モデルが現実を説明出来ているような、【ピグマリオン症】という錯覚に陥ります(`・ω・´)ゞ
しかし、これには気をつけましょう!(^^)!
データ解析や数理最適化【AI】を探求する行為は、私たちを、未知のものを解決する「天才名探偵シャーロック・ホームズ」に近付いている様な感覚で、自分自身を高揚させますが、ハマり過ぎない様に、他者との会話や外部記憶装置も重要です❕
何かまとめが意味分かりませんが、数理モデルよりも利益よりも、ビールとビキニが好きだぜっ❕という最低な言葉で締めくくりたいと思います。(`・ω・´)ゞ(面倒くさくなってきた(笑))
皆様と私に爆益荒れ❕
❹機械学習でApple株の今後の株価を予測して見たのPythonのコードが見たい方はこちらの過去記事をご覧下さい。👇
コード全部載せてるので、コピペでOK(^_-)-☆です。
https://www.bookloveru2.com/post/python-analysis7
➎ python一括コード
あっ、一括コード載せときますね(^_-)-☆
以下です。👇今後ともよろしくお願いいたします。
import numpy as np
import pandas as pd
import datetime
import pandas_datareader.data as web
import fix_yahoo_finance as yf
import matplotlib.pyplot as plt
start = datetime.date(2007,3,15)
end = datetime.date.today()
codelist = ["AAPL"]
AAPL = yf.download(codelist, start=start, end=end)["Adj Close"].dropna()
# データを可視化する
AAPL.plot()
# 変化率を計算する
change = AAPL.pct_change()
print(change)
change.plot()
# 変化率からトータルリターン(累積変化率)を計算する
#この累積変化率のスタートを1として、100倍すると、HODLしていたという計算。
trade_return = (change + 1).cumprod()
trade_return
#100ドル分Apple株を買って、ホールドしていた場合のリターン
trade_return[0] = 1
trade_return = trade_return*100
trade_return
#ここでApple株の移動平均を計算する
#EMA5には5日移動平均を代入。
#EMA25には25日移動平均を代入。
EMA5 = AAPL.rolling(5).mean()
EMA25 = AAPL.rolling(25).mean()
EMA5
EMA25
#トレード戦略から売買シグナルを計算する
signal = []
for i in range(len(AAPL)):
#5日平均が25日平均より上なら買い=1とする
if EMA5[i] > EMA25[i]:
signal.append(1)
# 5日平均が25日平均より下なら売り=-1とする
elif EMA5[i] < EMA25[i]:
signal.append(-1)
else: signal.append(0)
print(signal)
# プロット用ライブラリの読み込み
from pylab import rcParams
import matplotlib as mpl
#キャンバスのサイズを大きくする
rcParams['figure.figsize'] = 10,5
# 日次変化率×トレードシグナルの累積変化率で
# トレード戦略に従ってトレードした累積リターンを算出する
backtest_return = ((change[1:-1] * signal[0:-2]) + 1).cumprod()*100
x = AAPL.index[0:-2]
backtest_return
# matplotlibでリターンの推移を可視化
plt.title('trade return')
plt.plot(x, trade_return[0:-2], 'b', label='HODL', alpha=0.8, linewidth=0.5)
plt.plot(x, backtest_return, 'orange', label='EMA return', alpha=1, linewidth=1.5)
plt.grid(which='both')
plt.legend()
plt.show()
pythonでプログラミングがしたい!!
pythonを学びたい!という方には、
オンラインプログラミング教室『Aidemy アイデミー』がお勧めです。
ご自身でプログラム環境を用意する必要は無く、サイトへアクセスするだけです。 創業者は東京大学工学部卒の石川聡彦さん。
著書に『人工知能プログラミングのための数学がわかる本』(KADOKAWA/2018年)など。
無料で、お試しもできますので安心です。
お時間ある方は下記リンクを覗いてみてはいかがでしょうか(*'ω'*)。