ボラティリティスマイル

楽天証券マーケットスピードII RSSで遊んでみよう第一弾です。
RSSは発注ができるようですが、誤発注とかが怖いので、しばらくはRSSの情報を使って遊ぶことに専念です。

現物株式関係はやり始めると楽しいのですが、個別企業の情報などを取り始めると時間もかかるので、第一弾はオプションから見てみます。

さて、オプションの世界ではボラティリティスマイルというものがあるとかないとか。ボラティリティスマイルについての少し細かい説明は次の記事に回すこととして、まあここではあまり深く考えずにざっくりと「ある行使価格付近でSQを迎えるのではないか期待が大きいほうがインプライドボラティリティが高い=オプション価格(オプションプレミアム)が高めになる」ということでいかがでしょう。
プレミアムの安いOTM(Out of The Money, アウトオブザマネー)のオプションは、プットにせよコールにせよ買って持っておけば、万が一市場が大きく動けば大きな利益となりうるのでATM(At the Money, アットザマネー)のインプライドボラティリティよりも高く出やすくなり、x軸に行使価格、y軸にインプライドボラティリティを取ったグラフを書くと、真ん中(ATM)を底として、右と左が緩やかに上がる、ニコちゃんマークの口のようなスマイルができることから名づけられたものです。

とりあえず説明は後にしてまずはRSSを使って作った2021年9月限オプションのボラティリティスマイルを見てみましょう。

今の相場環境から言って、やはり上値期待よりは極端に下値期待が大きいようですね。口の片側だけを上げたゆがんだスマイルです。

さてでは何をやったのか軽く書いてみます。対したことはしてないです。
すでにRSSのためのアドインが終わった状態で、マーケットスピード2が立ち上がったところから、Excel上での作業です。

まずはATMを決めるために現在の日経平均の値をとってきましょうか。
色々Excelのセルに何を入れたかわかりやすいように、セルA1に「日経平均」と書いて、セルB1に次の式を入れるだけです。
=RssIndexMarket(“N225”, “現在値”)

これは簡単ですね、これなら使いやすそうかも。ただ”N225″が日経平均とか”現在値”というのが現在の時価とは分かりますが、日経平均はどうやって表すの?とか現在の価格はどうやって表現するの?とかは関数一覧から調べる必要があって、かなり面倒・・・慣れればよいのでしょうかね。

x軸は行使価格、y軸はインプライドボラティリティということでA列に行使価格、y軸にインプライドボラティリティとします。

まずはx軸ですが、行使価格の存在する範囲をすべてとすると面倒&そこまでの範囲を見る必要もないので、ここでは現在の日経平均に近い行使価格をATMとして、前後3000円幅にしておきます。
まずはATMを求めましょう。日経平均オプション(weeklyは面倒なのでやめます)の行使価格は残存三か月を切ると、ATM近辺では125円刻みです。それ以外は250円刻みとなるのですが、残存三か月を判定させるのが意外と面倒なので、ここは125円刻みで一度考えることにします。
A2にとりあえず「ATM」と入力して、B2に下記の式を入れます。
=ROUND(B1/125,0)*125
やっていることは現在の日経平均価格を125(刻み幅)で割ったものを整数部分で四捨五入(Excel関数ROUNDが本当に四捨五入かという議論はここではしません)し、その数字を125倍です。単純に日経平均の現在値を125円刻みで考えたときに一番近い値が何かを求めているだけです。

ちゃんと出ているようですね。
後で都合があるので、5行目からやりましょう。
A5にx軸タイトルの「行使価格」と入れます。
A6から下は125円刻みで行使価格の値を入れていきます。
前後3000円としたので、A6には下記の式を入れます。
=$B$2-3000
A7には下記を入力
=A6+125
A7のセルをCTRL+Cでコピーし、A8~A54の範囲を選んでCTRL+V
これでA6~A54までに24125円から27125円まで125円刻みの値が入ります。

今度はB6~B54にインプライドボラティリティの値を入れればよいのですが、さて少し準備が必要そうです。
まずご存知のようにオプションにはプットとコールがあります。例えば27000円行使価格のプットとコール、どちらのインプライドボラティリティを使うのがよいかという話です。ここから先は個人的な感覚で処理していきますが、例えばATMよりも安いところはプットの、高いところはコールのインプライドボラティリティだけ使うというのもありでしょう。私の個人的な感覚ではプットとコールの両方を取って、各々の出来高枚数(またはプレミアム*出来高でもよいかと思います)で加重平均したものでよいかなと思います。おそらく大きな差はないかと思いますので、ご自分の感覚にあった方法でよいと思います。とにかくここでは同じ行使価格のプットとコールの出来高加重平均をB列に入れることを考えます。

準備1 – 銘柄コード
前述の日経平均の現在値のところで”N225″と入れましたが、これがRSSの銘柄コードです。さてオプションの銘柄コードはどうなっているのでしょう。幸いRSSのサンプルシートにオプションの銘柄コードを取得する関数があったので、これを利用しましょう。関数は RssFOPCode、引数は4つですね。最初が商品区分でしょう、ここは固定値「N225OP」が月次日経平均オプションということのようです。次が限月ですね、2021年9月限であれば202109という数値を入れるようです。後の便利のために、A3に「限月」と入れ、B3に「202109」を入力しておきましょう。3つ目がプットかコールの別ですね。1がコール、2がプットだそうです。最後の引数が権利行使価格です。これは先ほどA6~A54で作成しているのでよさそうですね。
ではB3に「202109」が入力されている前提でやっていきましょう。
G列にプット、H列にコールの各行使価格ごとの銘柄コードを入れます。
G5に「プット銘柄コード」、H5に「コール銘柄コード」といれ
G6、H6に下記の式を入れてみます
=RssFOPCode(“N225OP”,$B$3,2(G列の場合),$A6)
これを7行目から54行目まで貼り付けてあげれば銘柄コードが完成です。

エラー出ましたね。G6とH6でそれぞれ「銘柄コードは取得できませんでした。」これはATM近辺では125円刻みで行使価格があるのに対して、離れたところでは250円刻みの行使価格がないところから発生する問題です。実際にスマイルを描くのに必要なものはインプライドボラティリティなので、このようなケースでは「#N/A」となるようにあとで処理しましょう。行使価格24250円ではどうやら銘柄コードがちゃんと出ているようです。しかしわかりにくいコード体系です。これは楽天証券の問題ではなく、大証のコードなので仕方ないのでしょうが、2文字目の8がプット9がコールはよいとして(日経平均が10000万円とか動くと、3とか4も現れるので、あまりよくないんですが)、次の609の6は昭和があのまま続いたら今年は昭和96年だから出てきた6。昭和が」終わって30年以上も経つのにいかがなものかとは思います。

準備2 – それぞれの銘柄のインプライドボラティリティの取得
それでは今度はC列にプットのインプライドボラティリティ、E列にコールのインプライドボラティリティを取ってみましょう。これ以降は6行目の処理だけ書きます。その内容をコピーして7~54行目にでも入れてください。
C6にはプットのインプライドボラティリティ、さてRSSではどんな式でしょうか。
RssFOPMarket、どうやらこれが先物・オプションの時価取得の関数のようです。RssIndexMarketと同じように、銘柄コードと取得したいデータの二つを引数で入れるようです。同じ引数体系ならば、まとめて同じ関数にするほうが使いやすいですよね。たまにこのRSS関数は作成者の感性を疑うようなところが出てきます。とりあえず
=RssFOPMarket(G6,”IV”) をC6に、=RssFOPMarket)H6,”IV”) をE6に入力。
G6はプットの銘柄コードです。そのあとの”IV”がインプライドボラティリティーを取得するためのキーワードとなりますね。

どうやら出たようです。ときおり値も変わっているので、何らかの時価に連動しているようです。表示は32.18となっており、おそらくは32.18%ということでしょう。ただコールのインプライドボラティリティが「1%」となっており、何を計算されたのかはちょっと不明です。後ほど出来高加重をかけるので、そのときに消える項目だと思いながら次へいきます。

準備3 – それぞれの銘柄の出来高
今度はそれぞれ銘柄ごとの出来高です。先ほどC列、E列に入れた式がほぼそのまま使えそうですね。
D列、F列にそれぞれ
=RssFOPMarket(G6,”出来高”)
=RssFOPMarket(H6,”出来高”)
を入れれば終わりです。

どうやら取得できたようです。マーケットが動いている時間に作業しているので、行使価格や価格など変化しているところご容赦ください。
このあとは、銘柄コードがないところや出来高ゼロのところは「#N/A」となるようなエラー処理は(これはExcel作り方の好みも大きいので)書きません。基本的にはB6に
=(C6*D6+E6*F6)/(D6+F6)を入れて、B7~B54にコピペしてあげれば、A6:B54の範囲で線グラフを書いたものがリアルタイムで動くスマイルの完成形です。かなりマーケットコンセンサスは悲観的のようですね。
=SERIES(Sheet1!$B$5,Sheet1!$A$6:$A$54,Sheet1!$B$6:$B$54,1)


長くなりました。次回はなんでスマイルが出てくるのという若干細かい話、その次に、RSSのインプライドボラティリティってなんだろうという問題から、自分でインプライドボラティリティを計算されるところを書いてみます。

コメント

タイトルとURLをコピーしました