Python

【Pythonで株式投資】株価データの極大値と極小値を計算して可視化する!

2021年12月5日

【Pythonで株式投資】株価データの極大値と極小値を計算して可視化する!

こんにちは。TATです。

今日のテーマは、「株価データの極大値と極小値を計算して可視化する!」です。

 

過去に任意期間における最大値と最小値を計算する解説記事を書きましたが、今回は極大値と極小値なので少しニュアンスが異なります。

参考
【Pythonで株式投資】任意期間における高値・安値を計算して可視化する!
【Pythonで株式投資】任意期間における高値・安値を計算して可視化する!

続きを見る

 

極大値や極小値とは、適当な領域における最大値や最小値を示します。

株価チャートを見ていると、波のように上昇と下落を繰り返しながら、トレンドを描いていく傾向が見られます。

それぞれの波では、最大となる点と最小となる点が存在します。

これらが極大値や極小値に相当します。

 

株探などのサイトを見ても、こういった値がチャートに併記されている場合が多いです。

引用元:株探(トヨタ自動車)

本記事では、Pythonを使って極大値や極小値を自動的に算出し、さらにそれらをチャートに可視化する方法について解説していきます。

極大値や極小値は、今後の株価を予測する上で目安となる場合が多いのでプログラムで自動算出できると便利な使い方がいろいろできます。

 

【Pythonで株式投資】株価データの極大値と極小値を計算して可視化する!

【Pythonで株式投資】株価データの極大値と極小値を計算して可視化する!

 

(おさらい)株価データの取得とローソク足チャートの描画

まずは、今回利用する株価データの取得と、そのデータを使ってローソク足チャートを描く方法についてサクッとみておきます。

 

株価データの準備

まずは株価データを取得します。

こちらについては過去記事でも解説しているので、詳細は割愛します。

関連
【コード解説】Pythonで株価データを取得する!【3つの方法を解説】

続きを見る

関連
【Pythonコード解説】yahoo_finance_api2で日本株の株価データを取得する
【Pythonコード解説】yahoo_finance_api2で日本株の株価データを取得する

続きを見る

 

今回はyahoo_finance_api2を利用して株価データを取得しました。

対象銘柄はトヨタ自動車(証券コード:7203)で過去1年分の株価データを取得しています。

使用したコードはこちらです。

 

取得できたデータがこちらです。

 

ローソク足チャートを描く

取得したデータを使って、ローソク足チャートを描いてみます。

今回はPlotlyを使います。

Plotlyの使い方についてはこちらの記事で解説済みなので、ここでも詳細は割愛していきます。

関連
【コード解説】Pythonで株価チャートを描く【plotly編】

続きを見る

 

ここでは出来高も合わせて表記しています。

使用したコードはこちらです。

 

これで表示されるチャートがこちらです。

 

ポイントは、営業日のみが表示されるように不要な日付はマスキングしていることです。

こうすることで、不自然な空白がなくなりきれいなチャートを描くことができます。

 

Pythonで極大値と極小値を計算する

さて、ここからが本題です。

先ほど取得したデータを使って、極大値極小値を計算していきます。

 

scipy.signalの"argrelmin"と"argrelmax"を利用する

極大値と極小値を求めるには、いろいろな方法があります。

ゼロからプログラムを作るのも良いですが、ここではscipyというライブラリを使っていきます。

scipyは、数値解析に必要な様々な機能を備えたライブラリです。

工学系の方ならほぼ必ず使うと思います。

 

このscipyの中にsignalがあり、この中にargrelminargrelmaxという関数があります。

それぞれ極小値と極大値を計算するための関数です。

 

極大値を算出してみる

早速、まずは極大値を計算してみましょう。

極大値を計算するには、argrelmaxを使います。

ここにはarray形式でデータを渡す必要があるので、カラムを指定したらvaluesで配列に変換して渡します。

 

これで、極大値に該当するindexが返ってきます。

簡単ですね。前後の数値を見てどちらも対象データよりも低ければ極大値と判断しています

 

チャートで可視化する

算出した極大値を早速可視化してみます。

取得できた値は、ただのindexなので、これを使って該当するデータを抽出する必要があります。

locを使えば、任意のindexのデータを取得することができます。

 

このhighカラムをチャートに追加すればOKです。

コードはこんな感じになります。

 

完成したチャートがこちらです。

 

きちんと極大値に印がついていることが確認できます。

極小値も同様に処理すればOKです。

 

(少し応用)ノイズを消す

基本的な可視化がわかったところで少し応用編に進みます。

先ほどのチャートはいい感じに見えますが、一つ大きな問題があります。

それが、極大値が多すぎるということですw

細かくデータを見すぎて、小さな極大値も表示するようになっています。

 

これだとチャートが煩雑になってしまい、みるべきデータがわかりにくくなってしまいます。

ということでノイズを取ります。

 

これには、orderという引数を使います。

これで左右それぞれ何個のデータを考慮するかを指定することができます。

試してみましょう。

 

例としてorderを5にしてみます。

こんな感じに指定すればOKです。

 

これで完成したチャートがこちらです。

 

だいぶスッキリしたことがお分かりいただけるかと思います。

このように、orderをうまく調整してあげれば、不要なノイズを取り除くことができます。

 

(完成形)極大値と極小値をチャートに描画する

ここまできたらやることは自明と思いますが、一応極小値も描画したチャートも紹介しておきます。

やることは極大値と全く同じです。

コードはこちらです。

 

完成したチャートがこちらです。

極大値と極小値がきちんと描画されていることが確認できます。

 

 (おまけ)極大値と極小値をいろいろな方法で可視化する

最後におまけです。

極大値と極小値を使った可視化方法を2つご紹介します。

ここで紹介するのは僕がパッと思いついただけのものなので、もっといい可視化方法があれば教えてくださいm(_ _)m

 

極大値、極小値を線で結ぶとトレンドが見える

1つ目は極大値同士と極小値同士を線で結ぶことです。

これまでのチャートでは、印をつけていただけですが、これらを結ぶとトレンドが見えてきます。

トレンドラインは、極大値同士、あるいは極小値同士を結ぶことが多いので、トレンドラインを描画しているのとほぼ同義になります。

完成したチャートがこんな感じです。

 

極小値と極大値がだんだんと上がっていれば上昇トレンド、下がっていたら下降トレンドと判断することができます。

 

直前の極大値と極小値をプロットする

2つ目の可視化方法は、直前の極大値と極小値をプロットするというものです。

直前の極大値や極小値は、いろいろな使い方ができます。

株価の今後の動きのターゲットの目安になったり、ピボットポイントに活用することもできます。

直前の極大値を超えたら買いみたいな使い方もできます。

 

この方法で可視化するとこんな感じになります。

これらのラインを超えると大きく株価が動く可能性が出てきます。

このチャートを見ると、2021年5月に直前の極大値を超えてから大きく株価が上昇していることがわかりますね。

こんな感じで、直前の極大値や極小値をうまく活用できる場面があります。

 

必ずとは言い切れないので、さらにいろいろと検証する必要があると思いますが、1つの活用方法として紹介しました。

 

データ分析にはPythonが最適です。

本記事で紹介した分析は全てPythonで行なっています。

Pythonを使うと短いコードでわりと簡単にデータの収集や分析をすることができ、Webスクレイピングやデータ分析、AI関連に強くて、世界中で人気を集めている言語です。

すっきりとしたコード体系で、誰でもきれいなコードが書けるような設計になっています。

過去の記事では、データ分析としてPythonをご紹介している記事や、Pythonでできることをまとめたものがありますので、もしPythonにご興味があれば合わせてご覧ください。

僕自身も社会人になってからPythonを独学しました。それくらい学びやすい言語でもあります。

【いますぐ始められます】データ分析をするならPythonが最適です。【学習方法もご紹介します!】
【人気上昇中】今人気のプログラミング言語「Python」は何ができるのか?できることまとめます【転職でも有利です】
【目的別】Pythonが学べるUdemyのおすすめコースを紹介します【随時更新】

 

\30日返金保証/

Udemyを詳しく見る

セール中なら90%オフとかで購入可能です!

 

まとめ

いかがでしたでしょうか。

ここでは「株価データの極大値と極小値を計算して可視化する!」というテーマで解説してきました。

 

極大値や極小値は、今後の株価を予測する上で目安となったり、ピボットピントに活用できたりと、いろいろな利用方法があります。

プログラムで計算することができれば自動売買のロジックに利用することも可能になります。

本記事で紹介しているコードは自由にパクっていただいてもらって構いませんので、どんどん活用いただけたらと思います。

 

そしてさらにいい可視化方法があれば是非とも教えてくださいm(_ _)m

ここまで読んでくださり、ありがとうございました。





Pythonの独学ならUdemyがオススメです。



Udemyは動画教材でわかりやすく、セールで買うとコスパ最強です。



僕はUdemyでPythonを独学して転職にも成功して人生が大きく変わりました。



\30日返金保証/

Udemyを詳しく見る

セール中なら90%オフとかで購入可能です!




独学がきついならプログラミングスクールも検討の余地あり



独学がきつい、挫折した、という方はプログラミングスクールも検討の余地があります。



その際には、必ず無料体験レッスンを受けたうえで判断するようにしましょう。



決して安い料金ではないので、慎重に判断を下す方が無難です。



Pythonが学べるおすすめプログラミングスクール



TECH::CAMP(テックキャンプ)

  • 自習型なので自分のペースで学習を進めたい方におすすめ

  • 受講期間中はマンツーマンで最適な学習プランを提案してもらえる

  • 受講期間中はあらゆるテクノロジースキルが学び放題(他コースも受講できます)

  • 分からないところは何度でも質問ができるため、挫折することがない

  • 大手のスクールで安心


\チャットで質問し放題/

TECH::CAMPを詳しく見る!

自習型で自分のペースで学習を進めたい方にオススメ



 

CodeCamp(コードキャンプ)

  • オンラインによるマンツーマンレッスンが受けられる

  • レッスンごとに好きな講師を選択することができる

  • 講師は現役エンジニアなので、より実践的なスキルが学べる

  • オンラインで365日/7時〜24時迄、時間と場所を選ばずに学習できる

  • 就職/転職やキャリアについての相談が無料でできる

  • 無料体験レッスンを受講すると受講料が1万円引になる

  • 大手のスクールで安心


\マンツーマンレッスンで学べる/

CodeCampを詳しく見る!

無料体験レッスンを受けたら受講料が1万円引きに



 

キカガク

  • Pythonを基礎から学びたいという初心者にもおすすめです

  • 機械学習やAIに関心がある方におすすめ

  • E資格認定コースなので、熟語に試験に受かれば転職で有利です

  • 受講者はキカガクが提供する全ての講座が無期限で見放題

  • 受講者の多くが専門実践教育訓練給付金制度を使用して実質70%オフの料金で受講している


\AIや機械学習を本気で学びたい方へ/

キカガクを詳しく見る!

E資格認定コースでPythonの基礎からしっかりと学べる



 

.Pro

  • .Proの受講生の約90%は未経験からのスタートなので初心者でも安心

  • 完全対面式・少人数クラスの講義スタイル

  • 現役エンジニアやAIの研究者が教える実践形式のカリキュラムで、より実践的なスキルを獲得できる

  • キャリアアップ目的の為の提携企業への転職支援が受けられる

  • フリーランス・起業 の要となるマーケティングや案件受注の仕方等も身に付けることができる

  • WebフレームワークであるDjangoが学べる


\完全対面式の講義スタイル/

.Proを詳しく見る!

受講生の90%は未経験スタートからのスタートで初心者でも安心



データ販売を始めました


オニールとミネルヴィニの投資手法を日本株に適用するために必要なデータの販売を始めました。

あらゆるデータを集約して、誰でも簡単にスクリーニングできるようにCSV形式でデータを提供します。

オニールとミネルヴィニの投資手法を日本株に適用するために必要なデータを販売します!

続きを見る


-Python
-, , , ,

© 2022 気ままなブログ