こんにちは。TATです。
今日のテーマは「52週高値更新後の株価の動き」についてです。
52週高値更新は株式投資でよく利用されるシグナルの1つです。
52週間といえばほぼ1年ですから、過去1年間で最高値をつけたことを意味します。
特に僕のようなグロース株投資をしていると、この52週高値がきっかけとなって上昇トレンドに突入するケースがよく目にします。
強い上昇トレンドでは頻繁に52週高値を更新します。
一方で、この52週高値が上値抵抗線になってブレイクしたと思ったらそこから下落に転じるパターンもあります。
本記事では、52週高値を更新した後の株価の動きを集計して、どれくらいの銘柄が上昇あるいは下落しているのか、統計的にどういった特徴があるのかを見ていきます。
上昇トレンドに入る銘柄の方が多いのか、あるいは下落に転じる銘柄の方が多いのか、はたまた同じくらいなのか、実際のデータを見て確認していきます。
ちなみに分析には全てPythonというプログラミング言語を使っています。一応、分析に使ったコードも見えるように結果を紹介していきます。
データの準備
まずはデータの準備です。
投資でニート生活で収集しているデータを活用
この作業が結構大変です。
ここでは僕が運営している「投資でニート生活」のデータを使います。
こちらのサイトでは株式投資に必要となるあらゆるデータをプログラムで自動収集・管理しています。
株価データはもちろん、52週高値のデータも日々集計しているので、こちらを使っていきます。(記事としても発信しています。)
2021年と2022年とデータを使います
データの期間としては、2021年1月1日〜2022年12月31日のデータを使います。
2022年12月31日現在で上場している日本株の全銘柄を対象にします。
各銘柄で52週高値を更新した日のデータを抽出し、そこから1週間後、2週間後、1ヶ月後、3ヶ月後、6ヶ月後のそれぞれの株価と52週高値更新日の終値との変化率を計算しました。
1週間を5営業日、1ヶ月を21営業日として計算しています。
例えば、2週間後なら10営業日後(5営業日×2)、6ヶ月後なら126営業日後(21営業日×6)の株価をそれぞれ終値(Close)と比較して変化率を計算しています。
用意したデータはこんな感じです。
データは全部で33,150行、銘柄数は2,727個ありました。
データを取得したのは、2023年2月3日です。
よって、2022年12月に52週高値を更新した銘柄でも1ヶ月後までの株価なら存在します。
3ヶ月後や6ヶ月後のデータは未来すぎてまだ存在していないのでありません。
グローバルウェイだけ排除しましたw
そして上記のデータでは、1つだけ銘柄を異常データと判断して排除しています。
それが、グローバルウェイ(証券コード: 3936)です。
日本株をしている方なら記憶にある方が多いのではないでしょうか。
2021年後半から2022年前半あたりまでにかけて、ものすごい勢いで株価が急騰してその後に急落するという、滅多に見ないレベルのジェットコースターを描いてくれました。
この銘柄のせいで、いろいろな意味で人生が変わった人も結構いそうな感じがしますw
ちょっとあまりにも他の銘柄の動きとはかけ離れているため、今回は異常データということであらかじめ排除する判断をしました。
【日本株対応】Pythonで株価のローソク足データを取得する方法まとめ【CSV、ライブラリ、スクレイピング】
続きを見る
Pythonのmplfinanceで株価のローソク足チャートを描く方法【コード解説】
続きを見る
52週高値更新後の株価の動きを見てみる
それではここからが本題です。
52週高値を更新した銘柄はその後どのような株価の動きをしているのでしょうか。
更新後から1週間後、2週間後、1ヶ月後、3ヶ月後、6ヶ月後の動きを見てみましょう。
全体の統計値を見る
まずは全体の統計値を確認してみます。
Pandasのdescribe関数で平均値や標準偏差、中央値などを確認する
PythonのPandasのdescribe関数を使って確認しました。
これで主要な統計情報を一目で確認することができます。
新しいデータだと1ヶ月後とか6ヶ月後のデータが未来すぎて存在しない場合もあるので、期間が長くなるほどデータ数(count)が少なくなります。
平均値(mean)は割とゼロ付近にいる感じがしますが、期間が増えるとだんだんマイナスに動いています。
中央値(50%)も同様で、期間が長くなるほど低くなっていく傾向にあります。
一方で、ばらつき(std, 標準偏差)は期間が長くなるほど大きくなることがわかります。
これは当たり前ですよね。期間が長くなるほど、変動の幅も大きくなっていきます。
また、全てのデータにおいて、第三四分位数(75%)はプラスとなっています。
こういったプラスになる銘柄にうまく投資することができれば利益をゲットできるわけです。
ボックスプロットでデータの分布を見てみる
次に少し見方を変えてみます。
ボックスプロットを使ってそれぞれのデータの分布を比較してみましょう。
期間が大きくなるにつれてばらつきが大きくなっていることが改めて確認できます。
ボックスの大きさも、期間が大きくなるにつれて大きくなっていることがわかりますね。
それでも全体のばらつきに比べたらボックスはめっちゃちっちゃいですね(=データのばらつきが大きい)
期間別のヒストグラムを見てみる
次にもう少し詳しくデータの分布を見てみます。
各期間ごとの株価変化率をヒストグラムにしてみます。
1週間後の株価変化率:ついでに外れ値も確認してみる
結果を確認する前に、まずは外れ値をチェックします。
大概、こういったデータには外れ値があるのでこのデータを排除しないとグラフが分かりにくくなってしまいます。
1週間後の株価をそのままヒストグラムにしてみましょう。
コードがちょっと長くなったので別で書き出しました。
import plotly.express as px x = "株価_1週間後" fig = px.histogram( data_frame=df, x=x ) fig.update_xaxes(dtick=10, ticksuffix="%") average = round(df[x].mean(), 2) fig.add_vline(x=average, annotation=dict(text="平均:{}%".format(average))) fig.update_layout(width=900, height=500) fig.show()
ついでに平均値も加えました。
綺麗な正規分布であることが確認できますが、同時に(特に右側に)外れ値がちょくちょく存在していることがわかります。
平均(m)と標準偏差(std)からm±2stdを閾値として外れ値を排除してみましょう。
import plotly.express as px x = "株価_1週間後" upper_limit = df[x].mean() + 2 * df[x].std() lower_limit = df[x].mean() - 2 * df[x].std() fig = px.histogram( data_frame=df[(df[x]>lower_limit) & (df[x]<upper_limit)], x=x, ) fig.update_xaxes(dtick=10, ticksuffix="%") average = round(df[(df[x]>lower_limit) & (df[x]<upper_limit)][x].mean(), 2) #std = round(df[(df[x]>lower_limit) & (df[x]<upper_limit)][x].std(), 2) fig.add_vline(x=average, annotation=dict(text="平均:{}%".format(average))) fig.update_layout(width=900, height=500) fig.show()
とっても綺麗な正規分布になりました。
このほかのデータについても同様のやり方で外れ値を排除した結果でヒストグラムをご紹介します。
基本的には、全て綺麗な正規分布となり、期間が長くなるとばらつき(左右の幅)が大きくなっていきます。
2週間後の株価変化率
1ヶ月後の株価変化率
3ヶ月後の株価変化率
6ヶ月後の株価変化率
この結果からわかること
さて、ここが一番大事な部分になってきますが、この結果から何がわかるのかについてまとめてみます。
ちょっと人によって考え方は少し変わるかもしれませんが、僕の意見をまとめます。
ポイント
- 52週高値更新後の株価変化率をヒストグラムにすると正規分布になる
- 期間が長くなるほどデータのばらつきが大きくなる
- 期間が長くなっても、平均値(中央値も)は少しずつ下がっていく
- 52週高値更新後に株価が上昇する確率は50%未満
- 外れ値を除外する平均値が大きく下がる(外れ値が平均値を引き上げている)
こんなところでしょうか。
52週高値更新は株式投資ではよく利用されるシグナルの1つです。
僕自身も使っています(なんなら、最も重視しているシグナルです)
それでもこのシグナル発生後の株価の動きを見ていると、上昇しているケースももちろんありますが、下落しているケースの方が多いということがわかりました。
つまり、勝率で言うと50%未満です。
これは株価変化率がゼロ以上になるかどうかで計算しているものなので、10%とか20%の利益を取ろうと思ったらさらに確率は下がります。
勝率を計算してみる
実際にもう少し踏み込んで勝率を計算してみます。
一定の利益が取れる確率を計算してみました。
こちらの表は、10%、20%、30%の利益が取れる確率を計算してまとめたものです。
棒グラフにもしてみました。
期間が長くなると確率は上がっていきます。
10%の利益率で見ると、1週間後だと4.97%ととても小さいですが、1ヶ月後だと12.1%まで上がります。さらに最大となる3ヶ月後では16.56%です。
他の利益率で見ても傾向は同じですね。
個人的には思ったよりも低い印象です。
銘柄選定とエントリーのタイミングが重要になってくるというのがこの結果からよくわかりますね。
簡単に勝てるわけではなさそうですw
各銘柄で最も良い結果だけに絞ってみてみる
最後にさらにもう少し踏み込んでみます。
ここまでやった分析では52週高値を更新した全てのデータを含んでいます(グローバルウェイは除く)。
この場合、同じ銘柄でも何度も52週高値を更新していたらその回数分のデータが含まれることになります。
ここからは、各銘柄で最も良い結果になったデータだけに絞ってみていきたいと思います。
1週間後の株価変化率
まずは1週間後の株価変化率です。
統計値から見てみましょう。
平均値、中央値ともに先ほどの結果よりもだいぶ改善していますね。
次に外れ値を除外して計算してみました。
数字は少し下がりましたが、それでもいい数値をキープしています。
外れ値を除外した上でヒストグラムにしてみました。
こちらも綺麗な正規分布ですが、全体的に大きく右にシフトしていますね。
同じ銘柄でもタイミングさえあれば勝率は上がりそうですね。
このほかの期間についても外れ値を除外した結果をご紹介していきます。
2週間後の株価変化率
次に2週間後の株価変化率です。
統計値はこちらです。
ヒストグラムがこちらです。
1ヶ月後の株価変化率
次に1ヶ月後の株価変化率です。
統計値はこちらです。
ヒストグラムがこちらです。
3ヶ月後の株価変化率
次に3ヶ月後の株価変化率です。
統計値はこちらです。
ヒストグラムがこちらです。
6ヶ月後の株価変化率
最後に6ヶ月後の株価変化率です。
統計値はこちらです。
ヒストグラムがこちらです。
勝率を計算してみる
最後に、先ほどと同様に勝率を計算してみます。
10%、20%、30%の利益が取れる確率を計算してみました。
最初の結果と比べるとかなり改善しました。
いいところだけを抽出しているので当たり前なのですが、要は同じ銘柄でもタイミングがかなり大事という事になります。
悪いタイミングで買えば損失を被る可能性も十分にありますし、いいタイミングで買うことができれば利益をゲットすることができます。
このいいタイミングの見極め方が大事になってきますね。
10%の利益なら結構高確率で狙えますね。
1ヶ月で10%の利益を取れたらかなりいいのではないでしょうか。
30%でも3ヶ月後の株価で見ると勝率は10%を超えています。
あとはこの上昇する銘柄としない銘柄の違いが何か見つけられたら万々歳なのですが、とりあえず今回はここまでにします。
まとめ
本記事では「52週高値更新後の株価の動き」について、2021年と2022年の株価データを使って検証しました。
データを見ると、綺麗な正規分布になることがわかりました。
つまり、平均値を境にして、それよりも上がる確率と下がる確率はほぼほぼ互角ということを意味します。
52週高値は株式投資でよく利用されるシグナルの1つですが、これが必ずしもいいシグナルであるとは限りません。
勝率を上げるためには、適切なタイミングでエントリーすることが大事になってきます。
そしてこの適切なタイミングについてはもっといろいろな角度から分析していく必要があります。
もっとテクニカルな側面でこの分析を深掘りしていきたいところですが、それは今後の記事で書こうと思います。
とりあえず今回はここまで。
最後まで読んでくださり、ありがとうございました。