見出し画像

ぽんずは日経先物・OPでなかなか勝てない③データ加工編

プログラムとにらめっこばかりしているぽんずです。
ちらほら見てくれる人がいて、承認欲求が満たされています。嬉しいです。
今後もなるべく継続して書いていこうと思います。
ハートを押されると元気出ます。
では、本題に入っていきましょう。

前回までのあらすじ

今までのトレードは雰囲気でスプレッドを組んだりしていた。
in/outのタイミングもバラバラ。
そのため、稼ぐ時も損する時もあったけど、それが正解か分からなかった。

そんな時に出会った師匠から
"ポジションの検証を行う方がいいんじゃないか"
ということを学んだ。

では、どんな風に検証を行うべきか?
全く分からない。
その前準備を書いたのが前回前々回まででした。

そして、前回より少し進んだので
備忘録として残していきたいと思います。


スクレイピングで取得したデータはどんな感じ?


項目としてはこんな感じです。
行使価格・IV(始値、高値、安値、終値、前日比)・原資産価格(原資産価格+補正値)・残存日数・日付

なぜ行使価格ごとの値段の取得ではないのか

オプションのように価格差が出やすいものだと
終値でも本来の適正価格と大きくずれることがある(成り注文だったなど)

じゃあどうすればいいのか。
IVからプレミアム価格を計算すれば良い。
ブラック–ショールズ方程式(BS式)を使うんですが、式を見ただけで嫌になる人いませんか?
私は蕁麻疹が出ます。(出ません)

今回はエクセルでやってみたので式の紹介をしときます。
まぁ、ネットで探せばすぐ見つかるんですけどね。

BS式を使ってIVからプレミアム価格を求める

まずは下準備。

まずはd1から。
=(LN("原資産価格"/"権利行使価格")+("金利"+0.5*"IV"^2)*残存日数)/("IV"*SQRT("残存日数"))

そしてd2。
="d1"-SQRT("残存日数")*"IV"

この時の注意点として
金利は1年金利となるので0でもいいんじゃないかなとか思ってます。なので適当です。(ハナホジ)
残存日数は1年で割ります。365日で割る人もいれば、営業日数で割る人もいると思います。祝日含むなら260日、含まないなら245日ぐらいかなと。

どこまで正確に出す必要があるのかですよね。
一律の条件で検証するのであれば、アバウトでもいいと私は思ってます。(師匠に怒られそうですが)

では次に進みます。
N(d1)、N(d2)です。
=NORMSDIST(d1)
=NORMSDIST(d2)
これだけなので楽ですね。

最後にプレミアム価格を求めます。
まずはCallから。
="原資産価格"*"N(d1)"-"権利行使価格"*EXP(-"金利"*"残存日数")*"N(d2)"

そしてPut。
="原資産価格"*("N(d1)"-1)-"権利行使価格"*EXP(-"金利"*"残存日数")*("N(d2)"-1)

ほとんど一緒です。
Putの場合、N(d1)、N(d2)から1を引くことを忘れないように。

エクセルで簡単にプレミアム価格の算出ができたので
pythonでも出来そうですね。

では今回はここまで。

あ、なんか間違ってることとかあったら教えてください。
数式のところとか間違ってたらごめんなさい。

今回のオチ

また1000文字越えになってる。。。
これぐらいの文量は普通なんですかね?
まぁ、たまにしか書かないので諦めて書きましょう。
python実装については元気さえあれば問題なさそうです。

今後の方向性としては
ここからGreeksの計算をしようと思っていたんですけど
やらなくてもいいかなあと思い始めました。
まずは、検証に入りたいですね。

魔の水曜日って言われるぐらい激しい水曜日にロンスト入れたらどうなるかぐらいにしとこうかな?
(火曜日終値でinして、水曜日終値でoutかな?)
え、むずくね?手作業?
なんか上手い方法思いついたら始めます。

いいなと思ったら応援しよう!