こんにちは、エンジェル投資家のびずぷらです。
「日経平均とは何か?」と聞かれたら答えられますか?
当たり前のように毎日のニュースで話題になる日経平均。その実態を正しくつかんでいる人は少ないと思います。
「QuantX(クオンテックス)で始めるシステムトレード講座」第三回目の今回は、日経平均での投資を学んでみたいと思います。
今回の講座で学べること
- 日経平均を理解する
- ETF投資(ブル・ベア型)を理解する
- QuantXで対数差分を計算する
2018.7.9時点の情報です
現在QuantXでは会員登録すると「アルゴリズム無料クーポン」がプレゼントされます。今回の記事で紹介するETFブルベア対応のアルゴリズムは50,000円ですが、これを無料でゲットできます!
この機会にぜひQuantXの世界へ!
QuantXの基本的な考え方は、前回の記事を参照ください。

目次
日経平均について本当にわかってますか?

社会人なら誰もが知っている日経平均。日本経済のバロメーター的な指標ですが、その本質を理解している人は少ないです。
さっそく日経平均の定義を見ましょう。
日経平均とは日本の株式市場を代表する225銘柄から算出される株価指標のこと
この225銘柄は毎年見直しがあり入れ替えが行われます。過去からずっと同じ銘柄ではありません。その時の日本を代表する有名な成長企業が選出されています。
例えばトヨタ自動車、三菱商事、旭化成、武田薬品工業、ソフトバンクなど有名企業が選ばれています。そのため日本の景気を示す指標として、一般に使われるものとなりました。
日本経済新聞社が東証1部に上場した企業から選びます
日経平均はなぜ見直しするの?
日経平均は次のような理由で見直しが行われます。
- より流動性と成長力が高い企業の選定(定期)
- 上場廃止、東証2部へ降格(臨時)
2つ目の事例としては、2017年7月の東芝からセイコーエプソンへの臨時組み替えがあります。東芝が東証2部に指定替えがあったためです。
このように対象銘柄の経営環境の変化により、臨時に入れ替えが発生することもあります。
日経平均はなぜ連続性を保てるの?
日経平均の銘柄は入れ替えがある時、入れ替え前後の銘柄の株価は当然違います。先の例では東芝とセイコーエプソンで株価は違います。しかし日経平均は銘柄変更があっても指標としての連続性を保つ必要があります。
そのため単純な平均ではなく、日経平均の連続性を保つような調整が入ります。これにより銘柄が変わっても指標値は連続性を保てます。
具体的には「除数」と呼ばれる値を使って割ることで算出されます。調整されているんだってことさえ知っていれば、細かい計算は知らなくても良いと思います
日経平均に時価総額の違いは影響するの?
日経平均を構成する銘柄は、それぞれ時価総額が違います。時価総額の大きい銘柄が動くと日経平均に大きく影響しないのでしょうか?
結論からいうと、時価総額は日経平均には影響しません。
日経平均へ影響するのは、みなし株価になります。
日経平均を算出するときは単純に現在の株価を使わず、額面50円相当になるように換算した「みなし株価」が使われます。そのため、みなし株価の大きさが日経平均へ影響するようになります。
もう少し詳しく説明します。
全ての銘柄は「みなし額面」が設定されています。通常は50円なのですが、銘柄によって違いがあります。この値でみなし株価が決まります。
いくつかの銘柄を例にして見なし株価を計算しましょう。2018.7.6の終値で計算しました。
銘柄 | 終値 | みなし額面 | みなし株価 |
トヨタ | 7,162 | 50 | 7,162 |
ファーストリテイリング | 47,760 | 50 | 47,760 |
ソフトバンク | 8,293 | 50/3 | 24,879 |
ファーストリテイリングはトヨタの時価総額の1/4ですが、みなし株価は6倍以上になっています。
実はこのみなし株価による日経平均への影響力がくせものなのです。
日経平均への影響力をはかる寄与度とは?
みなし株価を計算してわかるのは、ファーストリテイリングのみなし株価はトヨタよりも大幅に高いということです。
2018.7.6時点の日経225の中では、一番みなし株価が高いファーストリテイリングが日経平均の約8%を占めています。二位のソフトバンクが4.2%。トヨタは1.2%程度です。
これはファーストリテイリングの株価の変動は、日経平均に大きく影響すると言えます。
日経平均の構成比の高いファーストリテイリングとソフトバンクの2社だけで10%を超えています。そのため、日経平均には偏りがあると言われています。
ニュースで日経平均寄与度という言葉を聞いたことがあるかもしれません。日経平均の変動にどれだけ影響を及ぼしたかということです。当然構成比が高い企業が寄与度も高くなる傾向にあります。
日経平均をブル・ベア型ETFで買う

偏った指標かもしれませんが、みんなが気にしているのが日経平均です。もし上がると思ったら日経平均への投資を考えてみましょう。
といっても日経平均そのものに投資することはできません。そこで、日経平均へ連動するETFへ投資することになります。
日経平均やTOPIXなど、特定の指標に連動する運用を目指して証券取引所に上場している投資信託です。少額からの投資もできるため人気の金融商品です
ブル(レバレッジ)型のETF
1570: 日経平均レバレッジ上場投信
これは日経平均が1%上がるとき、2%と2倍上がるように運用されます。当然下がる時も2倍の割合で下がるので気をつけてください。
ベア(インバース)型のETF
1357: 日経ダブルインバース上場投信
これは、日経平均が1%下がるとき、2%上がるようにマイナス2倍の動きをするように運用されます。日経平均が上がるときは、逆に2倍の割合で下がるので気をつけてください。
QuantXでETFの動きを確認

それでは実際にETFの動きをQuantXで確認してみましょう。今回は以下の3つの株価を比較します。
- 1321: 日経225連動型上場投資信託
- 1570: 日経平均レバレッジ上場投信
- 1357: 日経ダブルインバース上場投信
ETFを表示するソースコードの解説
ETFの値をセットするために、s1321,s1357,s1570の3つのデータフレームを用意し、それぞれ値をセットします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | import pandas as pd import talib as ta import numpy as np def initialize(ctx): # 設定 ctx.logger.debug("initialize() called") ctx.configure( channels={ # 利用チャンネル "jp.stock": { "symbols": [ "jp.stock.1321", #日経225連動型上場投資信託 "jp.stock.1357", #(NEXT FUNDS)日経ダブルインバース上場投信 "jp.stock.1570", #(NEXT FUNDS)日経平均レバレッジ上場投信 ], "columns": [ "close_price", # 終値 "close_price_adj", # 終値(株式分割調整後) ] } } ) def _my_signal(data): close = data["close_price_adj"].fillna(method='ffill') s1321 = pd.DataFrame(data=0, columns=close.columns, index=close.index) s1357 = pd.DataFrame(data=0, columns=close.columns, index=close.index) s1570 = pd.DataFrame(data=0, columns=close.columns, index=close.index) for (sym, val) in close.items(): s1321[sym] = close["jp.stock.1321"] s1357[sym] = close["jp.stock.1357"] s1570[sym] = close["jp.stock.1570"] return { "1321":s1321, "1357":s1357, "1570":s1570, } # シグナル登録 ctx.regist_signal("my_signal", _my_signal) def handle_signals(ctx, date, current): '' |
これを実行すると下記の図のようになります。

2017.7.6の価格は、1357が1,292円で、1570が19,000円です。これでは、本当に日経平均に連動しているのかわかりません。少しソースを改修しましょう。
ETFの変動率を表示するソースコードの解説
前のソースコードの問題は、株価がそれぞれ違うのに1つのグラフに表示しようとしたことです。
そこで、それぞれの株価の日々の変動率(昨日に比べて何%上下したか)を計算して、それがどう推移するかをみたいと思います。
ここで出てくるのが対数差分です。対数差分は時系列分析でよく使う手法です。前日との対数をとって差分を計算します。
対数差分は変動率と近似し、プログラム的には計算しやすいため、よく使われます。
1 | s1321 = np.log(s1321) - np.log(s1321.shift()) |
shift関数で日付をずらして対数をとるだけです。チョー簡単です。
中学生レベルの数学では、変動率というと前日との差をとって、前日の値で割り算すると思います。もちろん、これでも計算できます。
ただプログラムでは対数差分の方が計算しやすいので覚えておきましょう!
今回修正したソースコードは下記になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | import pandas as pd import talib as ta import numpy as np def initialize(ctx): # 設定 ctx.logger.debug("initialize() called") ctx.configure( channels={ # 利用チャンネル "jp.stock": { "symbols": [ "jp.stock.1321", #日経225連動型上場投資信託 "jp.stock.1357", #(NEXT FUNDS)日経ダブルインバース上場投信 "jp.stock.1570", #(NEXT FUNDS)日経平均レバレッジ上場投信 ], "columns": [ "close_price", # 終値 "close_price_adj", # 終値(株式分割調整後) ] } } ) def _my_signal(data): close = data["close_price_adj"].fillna(method='ffill') s1321 = pd.DataFrame(data=0, columns=close.columns, index=close.index) s1357 = pd.DataFrame(data=0, columns=close.columns, index=close.index) s1570 = pd.DataFrame(data=0, columns=close.columns, index=close.index) for (sym, val) in close.items(): s1321[sym] = close["jp.stock.1321"] s1357[sym] = close["jp.stock.1357"] s1570[sym] = close["jp.stock.1570"] s1321 = np.log(s1321) - np.log(s1321.shift()) s1357 = np.log(s1357) - np.log(s1357.shift()) s1570 = np.log(s1570) - np.log(s1570.shift()) #ctx.logger.debug(s1321.head()) return { "1321":s1321, "1357":s1357, "1570":s1570, } # シグナル登録 ctx.regist_signal("my_signal", _my_signal) def handle_signals(ctx, date, current): '' |
これを実行すると、ETFの動きが確認できそうです。

- 1570(ブル型)は1321(日経平均)と同じ方向だが倍の動きをしている
- 1357(ベア型)は1570(ブル型)と逆の動きをしている
まとめ

今回は日経平均とETFさらにはQauntXを使ってPythonで対数差分を計算する方法について説明しました。
- 日経平均は単純な平均ではなく調整されている
- 指標としては意外と偏っている
- でも日経平均連動のETFに投資も検討してみよう
- 対数差分で変動率がわかる
QuantXの「公式 ETF ブルベア両対応」がまさに今回紹介したETFの投資になります。ETFは少額からの投資も可能です。
この機会にぜひETF投資を初めてみてはどうでしょうか。
それでは。
