今回はOpEx週の米3指数のパフォーマンスを確認しました。OpExとは日本で言うメジャーSQみたいなものと考えてください。
📝 概要
米OpExは毎月第3金曜日です。OpExには株が上がりやすいと言われており、今回はその確認です。
「毎月の米OpEx前後にだけ機械的にポジションを取ったら、どんな傾向が出るのか」を検証するための Pine Script Strategy を作りました。
やっていることはかなりシンプルです。
第3月曜の始値でロングエントリー、そして第3金曜の終値で決済します。
「OpEx週って本当に強いのか?」を、感覚ではなく数字で見にいくための土台として使えます。
この手の検証は、派手なインジケーターよりも、まずは条件を極力シンプルに固定して、素の季節性や需給の癖を見るのが大事です。今回のコードは、そのための“骨組み”って感じ。
🎯 作成の意図
米国市場では、毎月のオプション満期、いわゆる OpEx の近辺で、価格の動きや需給の偏りが話題になることがあります。
特に、
- OpEx週は買われやすいのか
- 週前半に上がりやすいのか
- 金曜まで持つ意味があるのか
- そもそも本当に再現性があるのか
このあたりは、SNSや相場解説ではよく見かける一方で、いざ自分で数字を取ってみると印象と違うことも珍しくない。てことで今回は、余計な条件を盛らずに、
- 毎月
- 同じタイミングで
- 同じルールで
- ロングだけ
という形にして、まずはOpEx絡みの時期に単純な優位性があるのかを見やすくしました。
日付条件は固定ではなく外部変数にしてあるので、
「第2金曜じゃなくて第1金曜発注だとどうか」
「第3金曜ではなく木曜引けまでのほうがいいのでは」
といった検証にもそのまま広げられます。
📘 コード(戦略部分)の解説
TradingView では通常の strategy.entry() は次のバー始値で約定します。
よって、第3月曜日の始値でエントリーしたい場合、金曜日にエントリーを出せば、翌営業日始値で約定します。
やりようはいくらでもありますが、これが一番簡単。
enterLong = inWindow and isSecondFriday and strategy.position_size == 0 and not alreadyOrderedThisMonthif enterLong
strategy.entry("Long", strategy.long)
ここでは、
- バックテスト期間内であること
- 第2金曜の条件を満たすこと
- すでにポジションを持っていないこと
- 同じ月に二重発注していないこと
を確認して、ロング注文を出しています。
次は決済。Close処理にはそのバー終値で決済させるimmediately=trueオプションがあるのでそれを利用しています。
exitLong = inWindow and isThirdFriday and strategy.position_size > 0if exitLong
strategy.close("Long", immediately=true)
結果
S&P500

NASDAQ

DOW

いずれも2020年まではなんとかプラスですが、2023年までぼろ負け、今はまた勝ち始めたかも?というところです。
🚀 ワン モア ステップ
これだけで終わっては面白くないので、第1,2、4月曜エントリー→金曜決済も見てみましょう。
第1月曜
S&P500

NASDAQ

DOW

第2月曜
S&P500

NASDAQ

DOW

第4月曜
S&P500

NASDAQ

DOW

結果として、OpExより第4週(月替り効果)の方がでかそうという、身も蓋もない結果に・・・まあ、それが分かるのもデータ分析の面白いところですね。
その他
- S&P500が200日線より上のときだけ
- VIXが一定以下のときだけ
- 大統領選年だけ
- QE局面とQT局面で分ける
なども面白そう。
OpExの効果があるとしても、たぶん常に均一ではありません。
むしろ、特定の地合いでだけ顔を出す癖である可能性のほうが高いです。
このへんまで見ると、ただの季節性ネタが、少しずつ“使える仮説”に育っていきます。
さらに一歩進めるなら、出口の最適化もあります。
- 金曜引けまで保有
- 木曜引けで利確
- 週前半で一定%上がったら手仕舞い
- ATRベースでストップ
- Gap upしたら寄りで利益確定
などなど。エントリーより出口のほうが、成績に効くことはよくあります。相場はなかなか意地悪ですね。
コアメンバー向けソース
こちらからどうぞ。


コメント