top of page
  • 執筆者の写真bookloveru2

pythonで株価分析➉【Apple株とビットコインを自動売買プログラムで運用した結果】

更新日:2021年11月1日


皆様、こんにちは。

今回は、大人気シリーズ「pythonで株価分析」の第10弾です❕



本記事では、Apple株とビットコインを自動売買プログラム(シストレ)を使って、運用したらどうなるのか❓を検証していきます。('ω')ノ


尚、今回は実際のマイ・マネー💲(実弾)は使用せず、pythonで自動売買プログラム(シストレ)を構築。仮想ストラテジーの基、バックテストにて運用結果を見ていきます。

※ストラテジー:システムトレードにおける戦略のこと。



今回も、コピペで行ける様、しっかりとpythonコードの解説をしていきますので、グーグルコラボのご準備をお願い致します。


では、早速行ってみましょう!(^^)!

 

目次

 


ストラテジーとは、システムトレードを行うにあたっての戦略を意味します。


例えば、至極一般的な手法に、『5日移動平均線が25日移動平均線を上回ったら、買いシグナル点灯【所謂、ゴールデンクロス】』というものがあります。逆に、『5日移動平均線が25日移動平均線を下回ったら、売りシグナル点灯【所謂、デットクロス】』というものがあります。


イメージ図👇

※私もマネックス証券を愛用しています(^_-)-☆




この他にも、統計学の標準偏差の考え方を使用した、ボリンジャーバンドで売買のタイミングを決定する手法など、テクニカル分析を使用した売買ストラテジーは星の数ほどあります。


ボリンジャーバンドのイメージ図👇


ストラテジーとは、これらの基本的なテクニカル分析に、ご自身の判断基準を付け加えて構築される売買戦略だと言えます。

例えば、

「イールドカーブが予想以上にフラット化したら、株式は買い。」とか、

「原油が値下がりしたら、株式は売り。」とか、

「明日の天気が雨だったら、株式は全力買い。」

といった、ご自身の独自の戦略を構築し、売買の判断基準となるものがストラテジーです(`・ω・´)ゞ



数学や物理が得意な方や、統計学、計量経済学を学んだ人たちは、その知識を活かして独自の数理モデルを構築し、ストラテジーを設計。

そのストラテジーを自動売買プログラムに落とし込んで、シストレを行うといったことを実行します。



※余談ですが、数理モデルとは、数学的な手段を用いて記述された、対象のデータ生成ルールを模擬した数式のことを言ったります。

つまり、世の中で起きている現象などを、一般化された数式で記述する。その数式を見つけることが、数理モデルを構築する、という意味です。

『株の自動売買で言えば、この数式に沿って、株価は日々変動しているんじゃないか!?』

といった、利益の根源になりそうな数式を探す作業が、数理モデルの構築と言えます。






 

❷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株の未来を予測して見ましょう(・ω・)ノ

学習期間:2007年3月15日から2021年3月15日現在まで

予測した株価:2021年3月~2022年3月までの1年間(未来)

以下グラフです👇


黒い点が実際の株価です。

青い線が株価の予測値です。

赤い線がトレンドです。

薄い水色のバンドが株価の信頼区間です。

垂直に引かれた赤い破線はトレンド転換点です。


現在は1株121ドル。1年後は1株141ドル程度


この予測からは、『既に株価が弾けてるから、良く分かんねーぜ(^_-)-☆でも、まだまだ行けんじゃね❕❓❓』

と言っている様に感じます。


つまり、天井ですね('ω')ノ

値崩れに気をつけましょう!(^^)!




【まとめ】

今回は、単純なストラテジーを構築し、その戦略の基での結果を見ていきましたが、数理モデルやストラテジーというものは、あくまで、『仮定』をモデル化しただけであって、現実の値動きを完全に模擬できるものではありません。


データ解析に深くハマると、良くできた数理モデルが現実を説明出来ているような、【ピグマリオン症】という錯覚に陥ります(`・ω・´)ゞ


しかし、これには気をつけましょう!(^^)!



データ解析や数理最適化【AI】を探求する行為は、私たちを、未知のものを解決する「天才名探偵シャーロック・ホームズ」に近付いている様な感覚で、自分自身を高揚させますが、ハマり過ぎない様に、他者との会話や外部記憶装置も重要です❕



何かまとめが意味分かりませんが、数理モデルよりも利益よりも、ビールとビキニが好きだぜっ❕という最低な言葉で締めくくりたいと思います。(`・ω・´)ゞ(面倒くさくなってきた(笑))




皆様と私に爆益荒れ❕






❹機械学習でApple株の今後の株価を予測して見たのPythonのコードが見たい方はこちらの過去記事をご覧下さい。👇

コード全部載せてるので、コピペでOK(^_-)-☆です。


 

➎ 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年)など。  
無料で、お試しもできますので安心です。
お時間ある方は下記リンクを覗いてみてはいかがでしょうか(*'ω'*)









閲覧数:1,228回0件のコメント
bottom of page