曜日と月が教える株の投資 part2 | 投資アラカルト [実践] | 逆ポーランド電卓の実践ウェブ rpn hacks!

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

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

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

HOME > 実践 > 投資アラカルト > 曜日と月が教える株の投資 part2 hatena yahoo buzzurl livedoor del.icio.us nifty newsing twitter facebook rss ソーシャルブックマーク

曜日と月が教える株の投資 part2

前のページに戻るLinkIcon

株式のアノマリー:株価が上昇しやすい月を求めて

 まず、月毎に騰落率を合計してみましょう。まずはnikkei.txtから毎日の騰落率を計算して、一時ファイルのtmpに格納します。同時にnikkei.txtから2001年から2010年までの10年分のデータだけを抽出してnikkei2.txtに保存しておきます。

  >rpn { 100 / 100 % x <nikkei.txt | rpn -c rowdiv | rpn 1 - >tmp
  >rpn 20010101 20101231 -c lookup -fd <nikkei.txt >nikkei2.txt


次にnikkei2.txtとtmpを横結合して、年月日から月の部分だけを残します。

  >paste nikkei2.txt tmp | rpn #r _ _ 100 / i 100 % @r >month.txt


month.txtに月と騰落率がペアで保存されているので、1月から12月までの月毎に合計してみます。

警告単純に騰落率を合計して、月毎の値上がり・値下がり率としていますが、正確ではありません。例えば基準値から-10%下降後、+10%の上昇になっても元の基準値には戻りません。あくまで、騰落傾向の検証であると捉えてください。


  >rpn 1 1 -c lookup <month.txt | rpn x _ -c sum >month.sum
  >rpn 2 2 -c lookup <month.txt | rpn x _ -c sum >>month.sum
                                :
                              (中略)
                                :
  >rpn 11 11 -c lookup <month.txt | rpn x _ -c sum >>month.sum
  >rpn 12 12 -c lookup <month.txt | rpn x _ -c sum >>month.sum


これで、month.sumに月毎の騰落率合計が格納されました。ファイル内容を見てみましょう。

  >type month.sum
  -0.263945
  -0.012387
  0.197648
  0.239759
  -0.031536
  0.011674
  -0.116347
  -0.091528
  -0.150524
  -0.212077
  0.110123
  0.344915


月によって浮き沈みがあるようです。グラフ化してみるとよく分かります。

  >rpn 1 -c rownum <month.sum | xyp -x,12 -y-.3,.35 -s1,.1 -n -m
  ^y 0.35                                *
  |
  |            *
  0.2      *
  |
  0.1                                *
  |
  |                  *                  12
  +--1--*--3---4--*--6---7--8--9---10-11->
  |o                                     x
  -0.1                  *   *
  |                            *
  -0.2                            *
  |
  |  *
  |-0.3


横軸が月で1月から12月、縦軸が騰落率の合計値です。合計値がプラスならその月は上昇して終わったことを意味します。マイナスならその逆です。一見して、春先(3月と4月)と年末(11月と12月)にプラスになっていることが分かりますね。次に、変化率の合計ではなく平均でも試してみましょう。

  >rpn 1 1 -c lookup <month.txt | rpn x _ -c mean >month.ave
  >rpn 2 2 -c lookup <month.txt | rpn x _ -c mean >>month.ave
                                :
                              (中略)
                                :
  >rpn 11 11 -c lookup <month.txt | rpn x _ -c mean >>month.ave
  >rpn 12 12 -c lookup <month.txt | rpn x _ -c mean >>month.ave


先ほどと同様にグラフ化します。

  >rpn 1 -c rownum <month.ave | xyp -x,12 -y-.0015,.0018 -s1,.001 -n -m
  ^y 0.0018                              *
  |
  |            *
  |        *
  |
  0.0005                             *
  |
  |                  *                  12
  +--1--*--3---4--*--6---7--8--9---10-11->
  |o                        *            x
  -0.0005               *
  |                            *
  |                               *
  |
  |  *
  |-0.0015


合計とほとんど同じ傾向ですね。どちらか理解しやすいほうを見るといいですね。

株を買うと上がりやすい月

 ようやく結論に近づいてきました。株価の騰落率を昇順に並べてみます。

  >rpn 1 -c rownum <month.sum | rpn x | sort -n
  -0.263945 1
  -0.212077 10
  -0.150524 9
  -0.116347 7
  -0.091528 8
  -0.031536 5
  -0.012387 2
  0.011674 6
  0.110123 11
  0.197648 3
  0.239759 4
  0.344915 12


先に騰落率の合計、次が月数になっています。この結果によれば、値上がりするのは12月、4月、3月、11月、6月の順で、値下がりするのは1月、10月、9月、7月、8月、5月、2月の順です。

数値だけでは分かりづらいので、簡単な図に変換してみます(騰落率の順位は一致させてありますが、値はデフォルメされています)。

  1月  2月  3月  4月  5月  6月  7月  8月  9月 10月 11月 12月
                                                         ↑  ^上
                 ↑                                          |昇
            ↑                                               |
                                                    ↑       |
                           ↑                                |
  ---------------------------------------------------------- +
       ↓                                                    |
                      ↓                                     |
                                      ↓                     |
                                ↓                           |
                                          ↓                 |
                                              ↓             |下
  ↓                                                         v降


一年を通して、何か波が見えてきますね。一月からグッと上がっていって5月から10月まで下げ調子です。そして年末に向かって上昇しているようです。

確かに冒頭で記したアノマリーの株価の夏枯れはありそうです。ただ、12月が低く1月が高いというアノマリーは逆の感じがしますね。あと、決算月である3月、4月は高いことが分かります。これらの結果から、日本の株式市場は大雑把に次のように言えるようです。

注釈『春に向かって気温が高くなるにつれて株価は上昇するが、5月から下落に転じる。梅雨時は一瞬プラスになるが夏枯れで秋が深まるまで下落が続く。しかし、年末に向けて株価は一気に上昇する』

10年間のデータ期間では、このようになりましたが、未来も同じとは限りませんし、より長期間の30年間のデータだと結論は変わるかもしれません。

そして、株式売買で儲けるなら次の基本戦略が成り立ちそうです。

注釈『10月に買って12月に売却』⇒『12月に空売りして1月に買い戻し』⇒『1月に買って5月までに売却』⇒『9月一杯まで休む』⇒最初に戻る

あくまで日経平均からの推測です。信じて実行しても結果は自己責任なので、ご注意ください。

株式のアノマリー:株価が上昇しやすい曜日を求めて

 曜日によって株価の騰落率に違いがあるのかも検証してみましょう。上の検証と同じように、nikkei.txtファイルから日毎の騰落率を計算してtmpファイルに格納します。

  >rpn { 100 / 100 % x <nikkei.txt | rpn -c rowdiv | rpn 1 - >tmp


次に日付から曜日を計算して、結果をtmp2に格納します。

  >rpn _ -c weekday <nikkei2.txt >tmp2


曜日の入ったtmp2ファイルと騰落率のtmpファイルを横結合して、余分な数値を省いたものをweek.txtファイルに格納します。

  >paste tmp2 tmp | rpn x _ >week.txt


これで曜日と騰落率のペアが格納されたファイルの出来上がりです。それぞれ月曜日から金曜日までを曜日別に抽出して、合計を出してみましょう。weekday.sumに計算結果が入るはずなので、ファイルの内容も確認します。

  >rpn 1 1 -c lookup <week.txt | rpn x _ -c sum >weekday.sum
  >rpn 2 2 -c lookup <week.txt | rpn x _ -c sum >>weekday.sum
  >rpn 3 3 -c lookup <week.txt | rpn x _ -c sum >>weekday.sum
  >rpn 4 4 -c lookup <week.txt | rpn x _ -c sum >>weekday.sum
  >rpn 5 5 -c lookup <week.txt | rpn x _ -c sum >>weekday.sum


  >rpn 1 -c rownum <weekday.sum
  1 -0.139789
  2 -0.111181
  3 -0.123393
  4 0.527857
  5 -0.127719


先の数字が曜日で、次の数字が合計の騰落率を示しています。曜日の数字は1が月曜日で、5が金曜日です。結果を見ると、木曜日だけがプラスで後はマイナスになっていることが分かります。グラフ化してみます。

  >rpn 1 -c rownum <weekday.sum | xyp -x,5 -y-.15,.6 -s1,.2 -n -m
  ^y 0.6
  |                              *
  0.45
  |
  |
  |
  0.25
  |
  |
  |
  0.05
  |                                      5
  +------1-------2-------3-------4------->
  |o                                     x
  |      *       *       *               *
  |-0.15


木曜日が際立っていますね。合計値なので余計にそう感じるのかもしれません。上の検証と同様に平均でも試してみましょう。

  >rpn 1 1 -c lookup <week.txt | rpn x _ -c mean >weekday.ave
  >rpn 2 2 -c lookup <week.txt | rpn x _ -c mean >>weekday.ave
  >rpn 3 3 -c lookup <week.txt | rpn x _ -c mean >>weekday.ave
  >rpn 4 4 -c lookup <week.txt | rpn x _ -c mean >>weekday.ave
  >rpn 5 5 -c lookup <week.txt | rpn x _ -c mean >>weekday.ave


weekday.aveファイルに騰落率の平均が格納されました。内容を確認してみましょう。

  >rpn 1 -c rownum <weekday.ave
  1 -0.000309268
  2 -0.000223255
  3 -0.000246293
  4 0.00105361
  5 -0.00025442


やはり、4の木曜日だけがプラスで、他の曜日は全てマイナスです。

株を買うと上がりやすい曜日

 このように平均値でも木曜日の上昇率が他の曜日に比べて、際立っている傾向は変わりませんでした。どうやら全般的に木曜日は株価が上がるようです(平均で僅か0.1%/日ですけど)。あと、僅かに月曜日の下落率が相対的に大きいことが見てとれますね。

どうやら株価上昇を期待するなら木曜日、下落を避けるなら月曜日ということになるようです。すると、毎日株を売買するなら以下の戦略が有効かもしれません。

注釈『水曜日の大引け(市場の終了間際)でランダムに銘柄を買って、木曜日の大引けで売ることを繰り返す』または『TOPIXに連動するインデックスファンド(ETF)を水曜日の大引けに買って、木曜日の大引けで売ることを繰り返す』

ただし、個別の銘柄でもインデックスでも同じですが、平均騰落率と売買手数料を考えると余程の大金を投入しないとトータルではマイナスになる可能性が大きいでしょう。

実行して、大儲けしても大損しても投資の結果は自己責任なのでご注意を。

12月と木曜日の株価が上がる…。ならば12月の木曜日が狙い目と考えるのは少々拙速です。ある病気に効果のあるA薬と同じく効果のあるB薬があるとき、一緒に服用すればもっと効果があると思いますが、大抵は悪い結果になります。このような現象を合成の誤謬といいます。

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

情報同様なアノマリーに関する記事にチョコと株価の甘美な関係があります。興味のある人は閲覧ください。

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

情報pasteは講座サポートで公開されています。lookupはユーティリティパッケージに同梱されています。weekdayはカレンダー・システムパッケージに同梱されています。rownum, rowdivはカンタン分析パッケージに同梱されています。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標準版は、すべてのプログラムが動作します。