使い方
ボリンジャーバンドとは
株価の時系列変化を移動平均線とその時点における株価の上下変動の度合い(ボラティリティ)を移動平均線からの幅で示したもの。
ボラティリティの測定には、標準偏差が用いられる。
一般的には、標準偏差の大きさを示す線を、+3σ、+2σ、+1σ、-1σ、-2σ、-3σの6本を移動平均線と同時にプロットして、その時点における株価のボラティリティの程度を可視化する。
①足元の価格水準が平均からどれくらい乖離しているか、②足元の相場の荒れ具合(価格変動の激しさ)がどれくらいになっているか分かる。
いわゆるテクニカル分析で用いられる手法のひとつである。
順張り(ボラティリティー・ブレークアウト)
バンドの幅が狭くなってきたところで、急に株価が大きく上下に±2σをはみ出したら、素直にトレンドに追随する。
+2σ を上に突き抜けたら、ロングポジション(信用買い、現物買い)を仕掛け、-2σを下に突き抜けたら、ショートポジション(空売り、現物売り)をとる。
保合い相場から脱したタイミングで、相場の流れに従って順張り投資を行うサインを拾うのにボリンジャーバンドを用いる。
逆張り
レンジ相場になっていると判断し、上下に大きく株価が変動してもやがては平均に回帰してくるという相場観がある場合には、この株価の急変に反応して売り買いする。
+1σ~+3σを上値抵抗線、-1σ~-3σを下値支持線と考え、株価が+1σ~+3σにきた時にショートポジションをとる売りサイン、株価が-1σ~-3σにきた時にロングポジションをとる買いサインとみなす。
バンドウォーク
トレンド相場になっていると判断し、上下に大きく株価が変動する傾向が同じ向きで一定期間継続するという相場観がある場合には、トレンドに逆らわずに売り買いする。
一般的には順張りの好機と思われるが、騰勢をじっくり観察し、手仕舞いポイントや反対売買のチャンスを見逃さない目的でも用いられる。
相場にトレンドが発生しているかを判断するには、次の2つの事象が同時に発生しているかを見る。
①移動平均線(中心線)の傾きが強い(大きい)かどうか
②中心線と±2σライン、あるいは±1σラインと±2σラインの間で上下動を繰り返している
バンドが狭くなったらレンジ相場、バンドが広がったらトレンド相場といえる。トレンド相場入り前には、バンド幅が狭い状態が続くレンジ相場が観察されることが多い。
倍率と株価の違い
ここでの株価は、個別銘柄の価格をそのまま用いるのではなく、TOPIX(東証株価指数)で割り算した値(倍率)を用いている。
\( \displaystyle \bf 倍率= \frac{個別銘柄の株価}{TOPIX}\)
例えば、為替市場におけるドル円について、1ドル=105円、1ドル=110円 という表記をした場合、円貨をドルで割り算して、1ドルあたりの円貨を計算することで、ドルの価値を日本円ベースで表したものである。
分母の1単位の価値を分子の大きさで表す。
105円 ÷ 1ドル =105円/ドル
アメリカの通貨1ドルの価値は、日本円で測ると105円
240円 ÷ 750g(豚肉)= 0.32円/g
豚肉1gの価値は、日本円で測ると0.32円
TOPIXで割り算した個別銘柄の株価は、TOPIXの値をベースにした「倍率」で表すことができる。
一般的に、株式投資は、最適となる投資ポートフォリオ選択の中で実行される。
個別銘柄の株価が10%上昇しても、同期間においてTOPIXが20%上昇していたなら、その個別銘柄の実質価値は減少していることになる。
例)100×(1+10%)÷(1+20%)≒ 91.67
個別銘柄の株価が名目上、10%上がっても、同じ期間にTOPIXが20%上昇していたら、実質上、その銘柄は、約8.33%の減価を受けていることになる。
それゆえ、ここでのボリンジャーバンドは、分析対象となる個別銘柄のショート・ロングだけではなく、同時に、インデックス金融商品としての TOPIX と個別銘柄のペアトレード(システムトレード)のツールとしても用いることができる。
この倍率が将来上昇すると予想するなら、個別銘柄をロング(買い)、TOPIX をショート(売り)、逆に、この倍率が将来下落すると予想するなら、個別銘柄をショート(売り)、TOPIXをロング(買い)の組み合わせで取引すると、シャープレシオ(リスク1単位当たりのリターン)を大きくできる可能性がある。
計算ロジック
ボリンジャーバンドは、個別銘柄とTOPIXによる倍率の値の移動平均線と標準偏差の相対的関係を見る。
移動平均値は、このExcelテンプレートでは、日足(毎日の終値)で20日を採用している。
この20日には特別な規則はない。
週休2日制が日本でも一般的になったので、約20日で1か月間の市場が開いている日数の移動平均を見たいので20日にしている。
専門家の中には、移動平均を20日と25日のいずれが適切か議論する方がいらっしゃるが、時系列分析において整合的であるならどちらでも好みの問題ではないかと考える(というのが自分の意見)。
また、終値の代わりに、VWAP(Volume Weighted Average Price : 出来高加重平均価格)を用いても構わない。どちらが正しいかではなく、分析目的に応じて使い分けるのが一般的である。
Excel では、AVERAGE関数 を用いている。
個別銘柄の株価も、TOPIXも、その両者から求められる倍率も、日々刻々の値動きは正規分布に従って変動するという仮説に基づいたチャートとなる。
バンドは、標準偏差から、-3σ、-2σ、-1σ、+1σ、+2σ、+3σ それぞれのラインをとって設定する。
σ(シグマ)は、Excel では、STDEVP.P関数 を用いて計算する。2σはσの値を2倍、-3σはσの値を-3倍して求める。
何の標準偏差を得ようと計算するかというと、上記で求めた20日移動平均値の標準偏差である。
これは、過去20日分の移動平均値をまとめて STDEVP.P関数 に放り込むことで計算することができる。
これまでの過去トレンドの統計的分析から、株価(倍率)は、±2σの間に95%は収まっていた。
この ±2σ を上下に突き抜けることは、確率的に残りの5%というレアなケースにあたる。
これが、やがて平均値に回帰すると考えれば逆張り、これが新しいトレンドを生むと考えれば、順張りの投資行動のサインとなる。
こういう統計的思考が、ボリンジャーバンドを用いた投資判断の統計的バックグランドに存在する。
ちなみに、日本でのボリンジャーバンド愛好家には、その平均回帰性から逆張りのサインを発見するのに用いる人が多いと一般的には言われている。
一方で、このチャートを発明したボリンジャー本人は、バンドウォークからトレンド相場の始まりを発見する目的で使用している。つまり、順張りのサインを見逃さないために使っている。
彼の相場観の根底にあるのは、「株価変動は正規分布をとらない」だからだ。
投資対象銘柄を循環株か成長株か、バリュー株か成長株か、主戦場をバブル崩壊から新型コロナ危機まで停滞していた日本市場か、景気循環はあるものの一貫して上昇基調だった米国市場か、選択によって利用者の好みで使い分ければよい。
ボリンジャーバンドそのものがある種固定的・手続き論的な買いサイン・売りサインを自動点灯させるツールなのではなく、利用者の相場観の形成に役立ち、投資意思決定を支援してくれるツールなのだと考える。
TOPIXの値について
個人投資家でも、ペアトレードなどで実際に取り扱いが可能なように、東京証券取引所が公式する指数そのものではなく、TOPIXに連動するETF(Exchange Traded Fund: 上場投資信託)を用いて倍率 を算出している。
そのため、厳密には公表されている指数とは微妙に異なるが、実務上問題ないと考えている。
- TOPIX(東証株価指数)
もっとも、ETFとベンチマークの乖離率がどうしても心配だという方は、ETFの代わりに東証が公表している真正のTOPIXを用いればよい。
Excel テンプレートの構成と使い方
本サイトからダウンロードできるExcelテンプレートは、ひとつのExcelブックからなり、6つのタブ(シート)から構成されている。
時系列データ
元データの入力や貼り付けを行うタブ
A列:日付
B列:分析対象銘柄の株価
C列:TOPIX(その他、実質価値を表したいもの)
D列:倍率(分析対象銘柄÷TOPIX)←自動計算
B1セルの銘柄名称は、後続シートにあるグラフの表題に使用(参照)されている
(左記の場合は『トヨタ』)
グラフ元
「時系列データ」タブに入力された21件目からの連続値で計算されている(20日移動平均値を計算するため)
「時系列データ」タブに設定されている値から、下記の値を計算している
❶倍率(分析対象個別銘柄÷TOPIX)
❷移動平均(20日)
❸標準偏差
❹+3σ
❺+2σ
❻+1σ
❼-1σ
❽-2σ
❾-3σ
❿指数(2020/4/30の値を100)
⓫TOPIX-指数(2020/4/30の値を100)
⓬標準偏差(20日移動平均)
⓭変動係数(標準偏差÷移動平均)
⓮相関係数-年累計(※後述)
⓯相関係数-移動(20日移動平均)
⓰サヤ(倍率 - 20日移動平均値)
⓱サヤ+(サヤがプラスになった値)
⓲サヤ-(サヤがマイナスになった値)
- 相関係数-年累計:2021/4/1以降は244日の移動累計、それ以前は2020/4/1からその日までの累計値
- なお、指数もそうだが、計算開始日は、データ元となる時系列データの初値に依存する
- このタブで行っているグラフ表示期間の制御のための仕掛けは後述
ボリンジャーバンド
指定された表示開始日~終了日のボリンジャーバンドが描画されている
グラフは、グラフシートを用いずにオブジェクトにしてタブ(シート)に張り付けてある
これは、縦幅・横幅を任意で縮尺・拡大するなど、加工の自由度を維持するためである
サヤ推移
指定された表示開始日~終了日のサヤチャートが描画されている
グラフは、グラフシートを用いずにオブジェクトにしてタブ(シート)に張り付けてある
これは、縦幅・横幅を任意で縮尺・拡大するなど、加工の自由度を維持するためである
「サヤ」は、倍率から倍率の20日移動平均を差し引いたものである。「サヤ」の値は、個別銘柄の株価の大小に依存するため、値嵩株のサヤは相対的に大きくなる
そのため、例えば、株価62,420円の任天堂のサヤは、株価527.5円の三菱UFJのサヤより常に10倍程度大きい値を示す
「変動係数」は、そうした原指標の大きさを度外視して、横比較(相対比較)ができるように算出されている
つまり、例えば、任天堂の変動係数:0.02は、三菱UFJの変動係数:0.01の2倍だとする。変動係数が2倍ということは、任天堂の株価の方が、この日は三菱UFJの株価の2倍大きく動いたといえる
相関係数推移
指定された表示開始日~終了日の累積・移動平均の相関係数と変動係数の長期グラフが描画されている
グラフは、グラフシートを用いずにオブジェクトにしてタブ(シート)に張り付けてある
これは、縦幅・横幅を任意で縮尺・拡大するなど、加工の自由度を維持するためである
- 第2縦軸(右軸)の変動係数は対数目盛で表示されている
散布図
指定された表示開始日~終了日の倍率の変動係数と相関係数による散布図が描画されている
グラフは、グラフシートを用いずにオブジェクトにしてタブ(シート)に張り付けてある
これは、縦幅・横幅を任意で縮尺・拡大するなど、加工の自由度を維持するためである
原則として、株価(倍率)とTOPIXとの相関関係が低くなる時は、同時に株価(倍率)の変動係数が大きくなることが多い → グラフの右下に異常値としてプロットされる
平穏無事に、TOPIXとの連動性も高く維持され、自身の株価変動も低く抑えられている場合は、グラフの左上にプロットされることが多い
グラフの右上へのシフトは、TOPIXと同じ向きに大きく株価(倍率)が変動していることを意味している
グラフの左下へのシフトは、TOPIXとの相関が大きく崩れているが、株価(倍率)自身の変動は低く抑えられていることを示している → 低位安定または高止まり
使用上のコツと注意
日々のデータ更新について
あえて自動化せずに、日別データの手入力または「時系列データ」タブの更新・差替えが必要にしてある。
筆者の場合は、株価データファイルを別に保持しており、「時系列データ」タブの列A~Cは、参照関数で自動更新されるようにしている。
データ更新自動化の労をいとわない方は、VBAマクロ、Python、PowerQueryなどの方法を駆使されるのが良い。
グラフの表示日付
手動でグラフの表示日付を修正する
通常のExcelグラフの作成・修正と同じ所作が必要になる。
自分でデータ範囲を変えてグラフ表示させたい場合は、各「グラフ」タブにて、「データの選択(E)」-「グラフデータの範囲(D)」から、該当データ範囲を変更する。
グラフ更新時にグラフ書式設定が初期化して見苦しいものになった場合は、下記方法を試すと解決する可能性が高い。
テンプレートの日付制御機能を利用する
このExcelテンプレートでは、「グラフ元」タブのセルT2に「開始日」、セルT3に「最終日」を設定するようになっている
デフォルトでは、開始日(セルT2)には「2020/4/30」がベタ打ちしてある。
同様に、最終日(セルT3)も手動で任意の日付をベタ打ちすることもできる。ただし、デフォルトでは、データ更新と連動させるために次節のようにExcel関数が仕込まれている。
データ更新とグラフ表示日を連動させる
デフォルトでは、最終日(セルT3)には、下記Excel関数が入力されている。
=INDIRECT(“時系列データ!A”&COUNTA(時系列データ!A:A))
この式の意味は、
① COUNTA関数で、日付データの入力済行の数を数える
② INDIRECT関数で、指定するセルの値を表示する
つまり、このExcelテンプレートでは、「時系列データ」タブの列A~Cに新規データを上から詰めて追加するだけで、グラフの最終表示日を自動設定してくれている。
次に、セルU2には、下記Excel関数が設定されている。
=MATCH(T2,グラフ元!$A:$A,0)-1
この式の意味は、
① セルT2に入力されたグラフ表示開始日が「時系列データ」タブのA列の何行目に当たるか
② 見出し行を除くために ①で求めた行数から 1 を引く
よって、上例では、「2020/4/30」が開始行から数えて見出し行を除いて1行目に当たるため、「1」が得られる
次に、セルU3には、下記Excel関数が設定されている。
=MATCH(T3,グラフ元!$A:$A,0)-U2
この式の意味は、
① セルT3に入力されたグラフ表示最終日が「時系列データ」タブのA列の何行目に当たるか
② 表示最終日と表示開始日の間の日数をカウントする
よって、上例では、「2021/4/23」が見出し行から数えて「241」行目に当たることがわかる
このExcelテンプレートでは、「グラフ元」タブにある各列は、グラフの表示項目になっている
例えば、A列には「日付」、F列には「倍率の20日移動平均値」が設定されている
Excel機能のひとつに「名前」(数式タブ→「名前の定義」→「名前の定義」→「新しい名前」)がある
「日付」には「Date」、「倍率の20日移動平均値」には「MA」という名前を設定する
各グラフ要素の名前は、左記のU列にある通りである
「倍率の20日移動平均値」=「MA」という名前が参照している値の範囲が左記プロパティ画面の最下部に表示されている
この OFFSET関数の意味は、
❶ 範囲を定義するための基準点:F1(最初はどこでもよい)
❷ 基準点から何行目が範囲の開始行か:1(セルU2に「1」が設定されているから。見出し行の1行下から)
❸基準点から何列目が範囲の開始列か:0(列そのもので右には動かない)
❹開始行から数えて最終行は何行目か:241(セルU3に「241」が設定されているから)
❺開始列から数えて最終列は何列目か:1(移動平均データは1列だけで定義されているから)
上例において、「倍率の20日移動平均値」=「MA」の範囲は、OFFSET関数が示す通り、「グラフ元」タブの「F2:F242」となる
これは、開始日2020/4/30の1行目と、終了日-開始日の241から得られる開始日から表示させたい最終日までの日数241日(241行下までとなる242行目)という情報が得られる。
各自でこのExcelテンプレートを容易に改造できるように仕様をここで説明した。
最後にまとめ。
(方法1)
とにかく、グラフの表示開始日と表示最終日を手入力で済ませたい方は、「グラフ元」タブのT2とT3セルに好きな日付を入力すればよい。
(方法2)
とにかく、「時系列データ」に入力した日付まで自動でグラフ表示されていれば問題ない方は、この辺りの設定はいじらない。何もしない。
(方法3)
「時系列データ」タブの最終更新日までのグラフ表示は自動に任せて、グラフの表示開始日を任意の日付にしたい場合は、T2セルの開始日に好きな日付を入力すればよい。
グラフの自動更新機能について
VBAマクロ や Pythonなどを活用するのはもちろんのこと、OFFSET関数 や場合によっては INDIRECT関数などを名前の定義と組み合わせることで、簡単にグラフ自動更新機能を作成することはできる。
ただし、本テンプレートは、Excelや投資の初学者向けの学習用だったり、利用者がカスタマイズしやすいように、自動と手動の切り分けをしやすいように工夫し、あえて複雑なデータ自動更新機能の作り込みはしていない。
VBAを使わずにデータ参照範囲を変えることで動的グラフを作成したい方は、以下のサイトが参考になる。
参考資料
ボリンジャーバンド(標準偏差バンド)の生みの親による解説。
ボリンジャーバンドを活用したペアトレード(サヤ取り)の基本の”キ”がわかる。
TOPIX Core30
TOPIXは、東証市場第一部に上場する内国普通株式による「時価総額加重型」の株価指数である。
TOPIXニューインデックスシリーズは、TOPIX構成銘柄を時価総額と流動性(売買代金)から区分し、TOPIX Core30、TOPIX Large70、TOPIX 100、TOPIX Mid400、TOPIX 500、TOPIX 1000、TOPIX Small、TOPIX Small500の8指数から構成されている。
ここでは、TOPIX Core30を構成する29銘柄のボリンジャーバンドExcelテンプレートを公開する。
構成銘柄は年一回(毎年10月)に見直される。 2020年12月25日にNTTドコモ(9437)が上場廃止になったため、本記事作成時点ではマイナス1の29銘柄となっている。
コメント