株式投資におけて、時間帯の値動きにクセがあることはご存知ですか?ちょっとしたことですが、利益の大部分が特定のある時間帯からもたらされることがあります。それを自分で、本当に間違っていないのか、確認しながら検証します。
元記事は 2021/06/06 noteに書いた記事になります。
以前のコードでは動かくなっているようですので、こちらのサイトで修正したものをリライトして、載せていきます。
2021/07/30時点で以下のコードはエラーなく動いていることを確認しています。
以下のようなコメントいただきましたので、続編書いてみようと思います。
けだまさん、コメント大変ありがとうございます。励みになります。
ただし、期待値は低めでお願いします。 <(_ _)>
あまり、複雑でないながら、キャッチーな話題を見つけるのはそれはそれで難しいのですが、程よいものを見つけました。
有名なアノーマリーではありますが、いまだに効きますので、改めて検証してみたいと思います。
日本株での土屋先生の「真夜中は別の顔」という(現在は削除されていますが)コラムをもしご存知の方がいらっしゃったら、以下は読む必要はありません。
まずは、SPYがこの一年でどのようなパフォーマンスか最初に確認します。
https://stockcharts.com/ でSPYの一年間を%でのパフォーマンスチャートを表示します。
1年2カ月で約62%の上昇のようです。上記Tweetでは2020/3/23からなので、ざっくり正しい感じです。詳細は分かりませんが、有名なBESPOKEのヘッダーに見えますので、データ自体は正しいように感じています。
注目点は
日中(Open->Close)
GAP (Close->Open)
の時間帯において、値動きの癖が違うという事です。
それでは実際にGoogle Colaboratoryを使ってのPythonコードで確認します。
目次
- 使用する環境
- 実際のコードとやっていること
- データの取得
- 時間帯での特性抽出
- 可視化
使用する環境
今回もGoogle Colaboratoryのpythonを使うことにします。使い方などにつていはこちらを参考にしてください。
実際のコードとやっていること
Google Colabの共有ファイルは上記になります。Googleのアカウントがあればログインして、そのままShift+Enterで再現できると思います。
コードは以下の通りです。
!pip install yfinance --upgrade --no-cache-dir
import datetime
import yfinance as yf
import pandas as pd
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
%matplotlib inline
import warnings
warnings.filterwarnings('ignore')
start_D = datetime.date(2020,3,23)
end_D = datetime.date.today()
codelist = ["SPY"]
data2 = yf.download(codelist, start=start_D, end=end_D)
display(data2.head(2).append(data2.tail(2)))
analyze=data2.copy()
analyze["cc"]=100*(analyze["Close"]-analyze["Close"].shift())/analyze["Close"].shift()
analyze["oo"]=100*(analyze["Open"]-analyze["Open"].shift())/analyze["Open"].shift()
analyze["intra"]=100*(analyze["Close"]-analyze["Open"])/analyze["Open"]
analyze["gap"]=100*(analyze["Open"]-analyze["Close"].shift())/analyze["Close"].shift()
display(analyze.head(3).append(analyze.tail(3)))
df_all=analyze[["cc","oo","intra","gap"]].copy()
display(df_all.head(2).append(df_all.tail(2)))
df_all.cumsum().plot(figsize=(8,5),fontsize=18)
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5), fontsize=18)
plt.axhline(y=0, linewidth=4, color='r')
plt.grid()
データの取得
いつも通りYahoo USでS&P500連動のETF SPYのデータをダウンロードします。
今回は修正済みの引けだけではなく、Open-High-Low-Closeの四本値を取得します。
時間帯での特性抽出
今回は以下の四つの時間軸で特性を調べます。
1.前日引値ー当日引値 (通常の前日比)
2.前日始値ー当日始値
3.当日始値ー当日引値 (寄り付きで買ってその日の引けで売る)
4.前日引値ー当日始値 (前日の引値で買って、翌朝の寄り付きで売る)
となります。
可視化
実際のパフォーマンスは以下の通りです。
チャートの線の色は違いますが、同じような結果が見て取れると思います。
ただ、上記チャート見るとわかりますが、
毎日売ったり買ったりするよりもベタにHOLDしていればいいのでは、、、
という感想を持つのも事実です。実際売り買いを行うと、手数料もかかりますし、、250営業日毎日往復手手数料払うとなると、結構パフォーマンスにネガティブなインパクトを与えるのは想像に難くないです。
20行とはいきませんでしたが、簡単なコードで確認することができました。
おまけとして、2000年からの期間では以下のようになります。
どのように思うかは皆さんの考え方次第、お任せします。
夜間買い、日中売りなんてどうですかね、、終了フラグ、、
自身で確認してみてください。
2023/12/02追記
現在も公開したプログラムは動いています。また、直近の動向は上記グラフのようになっているようです。
ディスクレーマー・投資に関する免責事項
情報の提供・作業代行を目的としており、投資勧誘を目的とするものではありません。
---
関連記事を紹介します。
Pytho,投資関係に関する記事をご紹介します。
コメント