自家製クオンツ

ソフトウェア技術を使って金融や投資の考察をしています。

MagicalNuts.AveragePriceMove

f:id:yooce:20211126213511p:plain

ひとりアドベントカレンダー4日目です。今日は、MagicalNuts.AveragePriceMoveを解説します。

このパッケージは平均値動きの推移を計算します。私は、夕凪さんの著書「スタバ株は1月に買え!」で平均値動きの推移を知りました。

この本では「前年最終売買日の終値を100%として指数化した過去10年間の値動きの平均値の推移」と説明されており、私はそれを略して平均値動きの推移と呼んでいます。明日、計算例を紹介することにして、今日はまず、平均値動きの推移とはどんなものかを見ていきましょう。

下図は、夕凪さんの著書の冒頭に掲載されている「過去10年間の日経平均株価の推移」です。(この本は2014年出版です。)平均ですから毎年同じ動きになるわけではないものの、年間の値動きの傾向がわかりますよね。

f:id:yooce:20201013053306p:plain

私はこのグラフに興味を持ちまして、日経平均株価だけでなく、どんな銘柄でも計算できるようにしたのがMagicalNuts.AveragePriceMoveです。

私はこれを株主優待イベント投資で使っています。株主優待イベント投資は、株主優待権利獲得を目的とした買いによる株価上昇を狙う投資手法ですが、私は投資対象選択の条件の1つに次を挙げています。

年間を通じて権利付き最終日に向けた動きだけがある

例えば、下図は3月末優待のシダックス(4837)の平均値動きの推移ですが、株主優待権利付き最終日に向けた値動き以外は、年間で目立った動きが無いことがわかります。この場合、3月末に向けた株価上昇は株主優待の権利獲得を目的としている可能性が高いと判断できるため、このような条件を入れています。

f:id:yooce:20210328093654p:plain

MagicalNuts.AveragePriceMoveはこの平均値動きの推移を計算するパッケージで、MagicalNuts.UI.AveragePriceMoveはその計算結果をグラフ化するパッケージです。AveragePriceMoveSampleというサンプルを用意していますので、そちらをご覧いただければと思いますが、使い方は簡単です。

まず、日足の株価データをCandleの配列として用意します。

Candle[] candles = ...

これをAveragePriceMove.ControllerGetAveragePriceMove()に渡すと、平均値動きの推移の計算結果を得ることができます。

var result = Controller.GetAveragePriceMove(candles, PriceType.Close, new DateTime(2021, 1, 1), 10);

3つめの引数で渡した日時の前年末(この場合は2020年末)までの平均値動きの推移を計算します。計算期間は4つめの引数で指定(この場合は10年)します。あとはこれを、MagicalNuts.UI.AveragePriceMoveAveragePriceMoveChartでグラフ化します。

AveragePriceMoveChart chart = new AveragePriceMoveChart();

...

chart.SetAveragePriceMove(result);

ここでは省いていますが、System.Windows.Forms.Formなどへのchartの登録は必要です。また、複数銘柄の平均値動きの推移を同時にグラフ化することも可能です。SetAveragePriceMove()は可変長引数を受け取るようになっていますので、表示したい銘柄分の平均値動きの推移を渡してください。

chart.SetAveragePriceMove(result1, result2);

次の図は2銘柄分のグラフですが、3銘柄以上の同時表示も可能です。

f:id:yooce:20211126212838p:plain