チョコと株価の甘美な関係 part2 | 投資アラカルト [実践] | 逆ポーランド電卓の実践ウェブ rpn hacks!

逆ポーランド電卓の実践ウェブ rpn hacks!

逆ポーランド電卓rpnの実践ウェブ   
rpn hacks! アールピーエヌ・ハックスサイトマップ

rpn | 実践 | 投資アラカルト | 投資に関する話題をrpnで探求!リスクテイクの世界を知ろう。

HOME > 実践 > 投資アラカルト > チョコと株価の甘美な関係 part2

hatena twitter facebook rss ソーシャルブックマーク

チョコと株価の甘美な関係 part2

前のページに戻るLinkIcon

 天候にも晴れの特異日があるのだから、バレンタイン効果の是非はともかく、株価が上がる確率の高い日が存在するかもしれません。前ページで調べるための準備はほとんど終わっているので、もう一歩踏み込んでみましょう。

立会日の全てをピックアップ

 過去20年間で株式市場が開いていた日を全て抽出して並び替えた後に、同じ日をまとめていけば、全ての立会日が得られます。

手順が難しそうですが、rpnとsortコマンドを使えば、たったの1行で簡単に処理できます。なお、sortコマンドの-nはデータを数字として解釈するためのオプションです。

  >rpn _ 10000 % -fd <nikkei.dat | sort -n | rpn -c uniq >uniq.day


これでuniq.dayファイルに20年間の全立会日が格納されているはずです。ファイルの中身を確認してみましょう。

  >type uniq.day
  104
  105
  106
  107
  108
    :
  (中略)
    :
  1226
  1227
  1228
  1229
  1230


日付の下4桁を数値として解釈しているので、データの最初は1月4日、最後のデータが12月30日になります。全部で353行のデータです。

さっそく、試しに1月4日の上昇率を計算してみましょう。少し手順がややこしくなっていますが、全体のデータ数とプラスだったデータ数を求めて、勝率を求めています。

  >rpn x 10000 % x <nikkei.dat | rpn 104 104 -c lookup >tmp
  >rpn -c count <tmp >total
  >rpn x _ z <tmp | rpn 1 1 -c lookup | rpn -c count >win
  >paste total win | rpn #w #t @t @w @w @t /
  15 10 0.666667


最後の15は全日数で、10が上昇した日数、最後が勝率です。勝率だけ高くても立会日の日数が少ない可能性もありますから、日数も併記してあります。

結果は15日中で10日の上昇です。約67%上がっていますね。

1月4日が休みの年もあるので、大発会の時の上昇率ではありません。

このようにして1月4日から12月30日まで計算すれば、もしかすると100%上昇する日を見つけられるかもしれません。

株価が上昇する確率の高い日を求める

 上の手順を毎回タイプするのは大変なのでバッチファイルを作って対応します。ファイル名を"dayup.bat"として保存すれば毎回タイプしなくても連続処理できます。

  ==== バッチファイル(dayup.bat) ===
  rpn x 10000 %% x <nikkei.dat | rpn %1 %1 -c lookup >tmp
  rpn -c count <tmp >total
  rpn x _ z <tmp | rpn 1 1 -c lookup | rpn -c count >win
  paste total win | rpn #w #t @t @w @w @t / >>dayup.txt
  ==================================


警告%%に注意してください。バッチファイルは%に続く数字でパラメータの置換を行ないます。rpnの%は剰余を示す記号なのでエスケープするために%%とします。

バッチファイルができれば、以下のコマンドを投入すればすぐ計算できます。

  >dayup 104


DOSプロンプトに返答は帰ってきませんが、dayup.txtファイルに過去20年間における1月4日の全日数、上昇した日数、勝率が記録されます。

この処理を全日数分、つまり353日分繰り返せばいいのですが、とても手間がかかるので、バッチファイルの"dayup.bat"を呼び出すバッチファイルの"checkday.bat"を作ります。

           呼び出し
  checkday   -->    dayup 104
             -->    dayup 105
              :
             -->    dayup 1230


作り方は簡単で以下のように全部のコマンドをcheckday.batファイルに予め書いておけばOKです。

  === バッチファイル(checkday.bat) ===
  del dayup.txt
  call dayup 104
  call dayup 105
  call dayup 106
        :
      (中略)
        :
  call dayup 1228
  call dayup 1229
  call dayup 1230
  ==================================


ここまでできれば、あとはcheckdayコマンドを投入すれば、連続で1月4日から12月30日までの日付を一つ一つチェックしてくれます。

  >checkday


結果はdayup.txtファイルにあるはずです。さっそく、内容を確認してみます。

  >type dayup.txt
  15 10 0.666667
  16 7 0.4375
  15 8 0.533333
  14 7 0.5
  11 3 0.272727
       :
     (中略)
       :
  14 11 0.785714
  15 7 0.466667
  15 7 0.466667
  15 8 0.533333
  14 7 0.5


日付がありませんが、冒頭で作成した日付を格納したuniq.dayファイルと結合すれば分かりやすくなります。

  >paste uniq.day dayup.txt
  104     15 10 0.666667
  105     16 7 0.4375
  106     15 8 0.533333
  107     14 7 0.5
  108     11 3 0.272727
       :
     (中略)
       :
  1226    14 11 0.785714
  1227    15 7 0.466667
  1228    15 7 0.466667
  1229    15 8 0.533333
  1230    14 7 0.5


株価が上昇しやすい日のトップ10

 さあ、株価が上昇する日を探しましょう。まずはトップ10です。これまで同様にrpnとsortコマンドで簡単に処理できます。なお、sortコマンドの-rは降順で出力するオプションです。

  >paste uniq.day dayup.txt | rpn } | sort -n -r | rpn 10 -c head
  0.916667 1104 12 11
  0.866667 913 15 13
  0.833333 919 12 10
  0.833333 321 6 5
  0.785714 326 14 11
  0.785714 225 14 11
  0.785714 214 14 11
  0.785714 131 14 11
  0.785714 1226 14 11
  0.769231 814 13 10


順に確率、日付、全日数、上昇した日数が計算されています。

どうも11月4日が最も株価が上昇した確率の高い日のようです。100%ではありませんでしたが、その確率はなんと約92%です。全12回中で11回上昇しています。その他8割台が3つ、残りは全て7割台です。2月14日のバレンタインデーも7位にランクインしています。

ちなみに、上昇確率トップの11月4日はユネスコ憲章記念日です。2位の9月13日は司法保護記念日、3位の9月19日は苗字の日です。何かのアノマリーがあるのかもしれませんが、理由付けは困難な感じがします。

株価が下落しやすい日のトップ10

 次にワースト10を求めてみましょう。最も株価が下がる確率の高かった順になります。

  >paste uniq.day dayup.txt | rpn } | sort -n | rpn 10 -c head
  0.142857 1107 14 2
  0.153846 1113 13 2
  0.181818 1009 11 2
  0.214286 1021 14 3
  0.214286 1024 14 3
  0.214286 509 14 3
  0.214286 606 14 3
  0.214286 805 14 3
  0.214286 922 14 3
  0.230769 904 13 3


ワーストの上昇率は僅か14%です。ちなみに、そのワースト1位の11月7日は鍋の日です。そして、11月13日はあいさつの日、10月9日は世界郵便デーです。これも理由付けはちょっと困難でしょう。

株価上昇確率から見えてくる傾向

 ところで、トップ10とワースト10のリストを見ていて、それぞれの発生月に偏りがあることに気付きます。

上位/下位
発生月
トップ10
11月、9月、9月、3月、3月、2月、2月、1月、1月、8月
ワースト10
11月、11月、10月、10月、10月、5月、6月、8月、9月、9月

度数分布にして眺めてみましょう。

  ^y 3                            +
  |
  |
  |
  2
  |  *  *  *                   *+    +
  |
  |
  |
  1
  |               +  +      *+       *
  |
  |
  |                                      x
  |o                                    12
  +--1--2--3---4--5--6---7--8--9---10-11->


グラフの横軸が月で縦軸が度数です。"*"がトップ10で"+"がワースト10なのですが、年末にワースト10が多いような…何か傾向があるような気がしませんか。

ただ、サンプル数が少なくてよく分かりません。そこでサンプル数を100に増やして傾向を探ってみます。まずはトップ100の度数分布です。グラフ化まで一気に処理します。

  >paste uniq.day dayup.txt | rpn } | sort -n -r | rpn 100 -c head >tmp
  >rpn _ _ 100 / i x _ <tmp | rpn -c freq >tmp2
  >xyp -x,12 -y,15 -s1,5 -n -m <tmp2
  ^y 15
  |
  |
  |
  10       *            *   *  *
  |                  *
  |            *
  |               *
  |                                  *   *
  5  *
  |     *
  |                               *
  |
  |                                      x
  |o                                    12
  +--1--2--3---4--5--6---7--8--9---10-11->


続いて、ワースト100の度数分布です。

  >paste uniq.day dayup.txt | rpn } | sort -n | rpn 100 -c head >tmp
  >rpn _ _ 100 / i x _ <tmp | rpn -c freq >tmp2
  >xyp -x,12 -y,15 -d+ -s1,5 -n -m <tmp2
  ^y 15
  |
  |                               +
  |
  10 +  +
  |                            +
  |            +                     +
  |        +                +
  |
  5                     +
  |               +  +                   +
  |
  |
  |                                      x
  |o                                    12
  +--1--2--3---4--5--6---7--8--9---10-11->


やはり、傾向に違いが感じられませんか。二つのグラフを重ねてみましょう。

  ^y 15
  |
  |                               +
  |
  10 +  +  *            *   *  *
  |                  *         +
  |            *                     +
  |        +      *         +
  |                                  *   *
  5  *                  +
  |     *         +  +                   +
  |                               *
  |
  |                                      x
  |o                                    12
  +--1--2--3---4--5--6---7--8--9---10-11->


上記同様、横軸が月で縦軸が度数、"*"が株価上昇率トップ100の度数分布です。"+"はワースト100ですね。年末に向かって勝率の悪い日が増える感じがよく分かります。

まとめると次のようになります。

  • 年央(春・夏)は値上がりトップ100に入る確率が高い。
  • 年初(冬)と年末(秋)は値下がりトップ100に入る確率が高い。

情報株価が上昇する傾向のある月や曜日に関する記事が曜日と月が教える株の投資にあります。興味のある人は閲覧ください。

バレンタイン効果の有無

 一年を通して、上昇確率を調べるとバレンタイン効果よりも高い確率の日がたくさんあることが分かります。取り立ててバレンタインデーだけが特別というわけではなさそうですね。

とは言っても、証明が困難なのが株式アノマリーの特徴です。バレンタイン効果については、ひとつの話題として楽しむのが大人の対応になるようです。

実践投資アラカルトに戻るLinkIcon

警告rpnプログラムを実行するには、rpn試用版かrpn標準版が必要です(バージョンの違いはこちら)。

情報pasteは講座サポートで公開されています。lookup, uniqはユーティリティーパッケージに同梱されています。head, freqはrpnマイスターパッケージに同梱されています。xypとnpdはrpnの姉妹ソフトウェアです。詳しくはプロダクトを参照ください。

投資アラカルト

リスクテイクの世界を知ろう

※実践コーナーのTOP

紹介 rpnの利用シーンはこちら…

講座初めての人のrpn基礎もどうぞ
講座しっかり学べるrpn入門もどうぞ
講座すぐに使えるdos入門もどうぞ

実践他の分野への挑戦は実践TOP

応用rpnアプリケーションは応用TOP

part2

リスクテイクの世界を知ろう

※実践コーナーのTOP

講座初めての人のrpn基礎もどうぞ
講座しっかり学べるrpn入門もどうぞ
講座すぐに使えるdos入門もどうぞ

実践他の分野への挑戦は実践TOP

応用rpnアプリケーションは応用TOP

書籍紹介

記事に関連した書籍

本ウェブサイトで扱った話題に関連した書物で、スタッフが実際に読了したものを紹介。

書籍数学の書籍
数の世界は思ったよりもエキサイティング

書籍投資の書籍
失敗しない投資には広範囲で実践的な知識が必要

警告バックスラッシュはエンマークに読み替えて下さい(IE)。
バックスラッシュとエンマーク

警告文字で作られた図表や式が崩れることがあります。ブラウザによっては固定幅フォントをMSゴシックにするときれいに表示されます。それでも崩れる場合は図表や式をメモ帳にコピー後、閲覧下さい。

警告rpn試用版と標準版(2kリビジョン)はダブルクォートで囲って下さい。

rpn 1 2 + ⇒ rpn "1 2 +"
rpn 1 -c foo ⇒ rpn "1" -c "foo"

ダブルクォートは省略できることが多いのですが、慣れない間は囲んだほうが無難です。なお、本ウェブサイトの記事ではrpn標準版(98リビジョン)を使用しているため囲っていません。詳しくは技術サポートの「rpn TIPS参照ください。

注意rpnの障害情報はこちら

警告rpn試用版の場合、複雑なプログラムや処理時間のかかるプログラムの一部には動作しないものがあるかもしれません。あくまで無料提供であることを勘案・了承ください。rpn標準版は、すべてのプログラムが動作します。