鈍足ランナーのIT日記

走るのが好きな5流のITエンジニアのブログ。

趣味の範囲は広いけど、どれも中途半端なクソブロガー楽しめるWebアプリを作ってあっと言わせたい。サーバーサイドPerl(Mojolicious)、クライアントサイドVue.js。Arduinoにも触手を伸ばす予定。

401k買い時botを作る

最近は投資系のプログラムを作るのがマイブームで。
401Kを支援するようなものを作れないかと考えて、
日経平均株価連動型投資信託の買い時(売り時)を知らせるBotを作ってみた。

日経平均が割安か、割高か判断する指標には日経平均PERを利用した。
株価収益率というものは、株価/1株利益で求められるもので
ある一定の範囲を取ると言われている。バブルや大暴落では大きく外れるとは
思うけど。15倍程度が平均みたいです。

CRONで毎日起動して、日経平均株価とPERをMYSQLに格納するようにしました。
MYSQLではPERの平均と標準偏差を求めるようにして
平均+標準偏差超えだと売り時、平均~平均+標準偏差ならどちらかというと売り時と
平均-標準偏差未満は買い時、平均~平均-標準偏差ならどちらかというと買い時と
判定するようにしました。

注意としては、まだデータが蓄積されていないので、いい加減な判定をしばらくはしてしまうと思います。

興味のある方はフォローしてみてください。1日1回、夜につぶやきます。
しばらくは動作確認で変なつぶやきをしてしまうかも?

401k 買い時 (@401k_kaidoki) | Twitter

my $stat = $db->single_by_sql("select STDDEV(per) per from Nikkei");

my $stddev = $stat->per;

$stat = $db->single_by_sql("select AVG(per) per from Nikkei");

my $avg = $stat->per;

my $comment;
if ($per > ($avg + $stddev)){
  $comment = "売り時です";
}
elsif($per >= $avg){
  $comment = "どちらかというと売り時です";
}
elsif($per < ($avg - $stddev)){
  $comment = "買い時です";
}
elsif ($per < $avg){
  $comment = "どちらかというと買い時です";
}