USDJPY『仲値×ロンドン・フィキシング×オプションカット』統合フロートレード完全実装ガイド(実務コード・検証手順つき)

FX

本稿は、USDJPY(ドル円)における東京9:55仲値ロンドン17:00フィキシングNY 15:00 GMTのオプションカットの3イベントを統合したフローベースのシステム戦略を、実務レベルで実装・運用するための完全ガイドです。裁量ではなく、毎日同じ手順で再現できること、そして実需フロー由来の需給偏りを狙うことにフォーカスします。記事は「です・ます調」で、初学者でも読み進められる難易度にまとめています。

要点(先に結論)

  • 狙うのは短時間の需給歪みです。東京仲値(9:55前後)、ロンドン・フィキシング(日本時間01:00または02:00/夏冬で変動)、NYオプションカット(日本時間24:00前後)には、機関投資家・事業会社・オプションディーラーなどの定型フローが断続的に発生します。
  • 単独イベントよりも、日内での複合シグナル(例:仲値買い優勢+オプションカットで上側ストライク吸着)が発生した日のほうがリスクリワードが良くなる傾向があります。
  • 裁量前提の「雰囲気トレード」を避け、時間・価格・スプレッド・ニュース回避をコード化し、期待値の低い日をフィルタします。
  • 最初は小さなサイズ(例:想定年率ボラに対する1%VAR基準)で始め、ドローダウン時の縮小ルール(例:最大DDの50%回復までは半サイズ)を組み込みます。

戦略の理論背景

為替市場は24時間オープンですが、実需フローが集中する時刻がいくつか存在します。具体的には、

  1. 東京仲値(9:55JST):銀行が顧客の実需を取りまとめ、9:55の仲値を基準に約定する慣行があります。直前に向けて一方向のフローが出やすく、9:45–9:55の短時間でトレンドが生じることがあります。
  2. ロンドン・フィキシング(17:00 London):多くのインデックス連動ファンドや実需がこの時間を基準に執行します。コモディティや株式サイドの通貨ヘッジ調整も絡み、16:50–17:10 Londonにボラが高まります。
  3. オプションカット(15:00 GMT):デリバティブの期限・清算時刻に合わせ、特定ストライクにスポットが吸着する/外れる動きが現れます。ガンマ・スキャルの影響により、カット直前〜直後に特徴的な値動きが観察されます。

これらは偶然ではなく、制度・慣行・契約仕様に根拠があります。したがって、日々のイベントカレンダーを用いて、「時間で切る」だけの単純なルールでも一定の再現性が期待できます。ただし、重要指標(雇用統計、CPIなど)要人発言が重なる日はノイズが支配的になるため、全面回避すべきです。

シグナル設計(ベースライン)

1) 仲値シグナル(BUYバイアス)

  • 観測時間:9:30–9:55(JST)
  • エントリー:9:40に、9:30からのリターンが+0.05%を超えていれば成行でBUY。+0.03–0.05%はハーフサイズ。
  • クローズ:9:56:30で成行全決済。10:05まで引っ張らない(逆流回避)。
  • フィルタ:ゴトー日(5、10のつく日)は閾値を0.03%に緩和。日本の祝日・大型連休前後は取引回避。
  • ストップ:-0.15%固定または、過去20営業日の9:30–9:55のσ×1.2。

2) ロンドン・フィキシング(方向両対応)

  • 観測時間:16:45–17:10(London)。JSTでは概ね01:45–02:10(夏)/ 02:45–03:10(冬)です。
  • 前判定:16:45からの一方向の加速(±0.07%以上・移動平均傾き一致)を検出。
  • エントリー:17:00の2分前に加速方向へ成行。
  • クローズ:17:03で半分、17:07で残りを時間決済。
  • ストップ:-0.12%または当日ATR(5)×0.6。

3) オプションカット(ストライク吸着/乖離)

  • 観測時間:14:40–15:10(GMT)
  • 入力:前日までに公開された主要ストライクのOI(オープン・インタレスト)近傍±0.2円幅を監視。
  • ルールA(吸着狙い):カット30分前にスポットが最大OIストライク±0.05円に収束しており、直近1時間の値幅が0.2円未満なら「ストライク方向へ逆張りではなく、収束維持を前提に薄利でスキャル(±0.04円TP/ -0.06円SL)」。
  • ルールB(乖離狙い):スポットが最大OIストライクから0.25円以上離れており、デルタ加速が同方向に継続なら、動きに追随(TPは0.12円、SLは0.08円)。

4) 統合シグナル(スコアリング)

日内の3イベントそれぞれに+1/0/-1のスコアを付与し、合計スコアが+2以上ならBUYバイアス、-2以下ならSELLバイアス、それ以外は見送りにします。スコアの要素には、直近リターン、ボラ、ストライク距離、ゴトー日フラグ、重要指標フラグを含めます。

データ取得と前処理

最低限必要なのは、1分足のUSDJPY(ベストはティック)、スプレッド履歴主要経済指標時刻祝日カレンダー主要オプションストライクとOIです。ブローカーやデータベンダから正規に取得し、商用利用許諾に留意します。前処理では以下を行います。

  • 不正値・約定休止の補完(欠損は前値ホールドか削除)。
  • サマータイム変換(ロンドン/NY)。
  • スプレッドが通常より2倍以上に拡大したバーの執行停止
  • リターン・ATR・ローリングσの算出。

Pythonによるベースライン検証(サンプル)

以下はPandasのみで再現できる簡略版のバックテスト雛形です。実データをCSVとして読み込み、仲値ルールだけを例示します。他の2イベントは同様に実装します。

import pandas as pd
import numpy as np

# df: 'ts'(UTCナイーブでOK),'bid','ask' 列を想定。mid=(bid+ask)/2
df = pd.read_csv("USDJPY_1min.csv", parse_dates=['ts'])
df['mid'] = (df['bid'] + df['ask'])/2
df = df.set_index('ts').sort_index()

# JSTに変換
df = df.tz_localize("UTC").tz_convert("Asia/Tokyo")

# 9:30〜9:55のリターン
j = df.between_time("09:30","09:55")
ret = j['mid'].pct_change().fillna(0)
cum = (1 + ret).cumprod() - 1

# 9:40時点の条件判定
cond = (j.index.time == pd.Timestamp("09:40").time()) & (cum > 0.0005)

# エントリー価格(成行でask想定)
entries = j.loc[cond].copy()
entries['entry_px'] = df['ask'].reindex(entries.index)

# 9:56:30の決済(midで評価)
exit_idx = j.between_time("09:56","09:56").index
# 30秒指定は近似で直後バーを使用
exits = df.reindex(exit_idx + pd.Timedelta(minutes=0)).copy()
exits['exit_px'] = exits['mid']

# シンプルな結合(実務は執行可能性の照合が必要)
trade = pd.concat([entries[['entry_px']], exits[['exit_px']]], axis=1).dropna()
trade['ret'] = (trade['exit_px'] - trade['entry_px'])/trade['entry_px']

# 手数料・スリッページ控除(例:片道0.004%)
cost = 0.00004*2
trade['net'] = trade['ret'] - cost

print("N:", len(trade), "Mean:", trade['net'].mean(), "Sharpe(naive):", trade['net'].mean()/trade['net'].std())

TradingView Pine v5(シグナル提示用)

以下は仲値シグナルのサインをチャートに表示する最小例です。実運用ではブローカーAPIで執行します。

//@version=5
indicator("USDJPY 仲値シグナル", overlay=true)
inSession = time(timeframe.period, "0900-1005", "Asia/Tokyo")
ret_930 = ta.rateofchange(close, 10) // 簡略化
condBuy = inSession and (timenow > timestamp("Asia/Tokyo", year, month, dayofmonth, 9, 40)) and (ret_930 > 0.0005)
plotshape(condBuy, title="Buy@9:40", style=shape.labelup, size=size.tiny, text="BUY")

リスク管理とポジションサイズ

  • リスク上限:1トレードの期待値が+X、標準偏差がσなら、Kellyの半分以下を推奨。リテールでは、1トレードの想定損失が口座資産の0.25–0.5%を目安にします。
  • タイムストップ:イベントのに引っ張らない。時間約束で機械的に決済。
  • ドローダウン制御:最大DDが-6%を超えたら稼働停止し、過去30営業日ローリングでアルファ回復を確認するまでサイズを半分。
  • 相関管理:3イベントの同方向バイアスが重なる日はサイズを上げず、逆にボラが高すぎる日は総量を落とします。

執行(Execution)

  • スプレッド監視:平均より2σ広がったら成行を避け、指値/成行混合(滑りやすい秒足を避ける)。
  • 分割エントリー:9:38/9:40で二段、ロンドンは16:58/17:00、カットは15分前/5分前。
  • OCO:TP/SLは時間決済より前に発火したら即終了。
  • 回避日:重要指標の前後5分、日銀サプライズ観測日、財務省・要人ヘッドライン連発時は停止。

検証設計の落とし穴

  1. ルックアヘッド:仲値9:55の確定後価格をエントリー側に参照しないこと。
  2. スプレッド一定仮定:イベント前後は拡大します。必ず時間帯別のコストを適用します。
  3. 約定可能性:気配飛び・ギャップで実際には約定できない価格が出力されがちです。成行・指値の到達可否を実データで検証。
  4. データの欠損:休止・リクオートの穴は手で埋めず、そのバーを除外します。

KPIと期待値管理

勝率だけでなく、平均利益/平均損失比(Payoff)Profit Factor安定性(SQN、t統計)を見ます。イベント由来の戦略はトレード回数が多くないため、有意性の確認には年単位のサンプルが必要です。また、環境変化(ボラ・政策・仲値の取り決めや運用慣行の微細な変化)でエッジが薄くなる期間があります。

運用チェックリスト(抜粋)

  • 本日の重要指標と要人発言の時刻を反映済みか。
  • ブローカーのメンテ・祝日スケジュールを確認したか。
  • オプション最大OIストライクは取得できているか(前日データのタイムスタンプ確認)。
  • 最大連敗想定を超えた場合の自動停止が有効か。
  • ログと約定照合(バックアップ先含む)。

改良アイデア

  • 状態推定:直近のニュースフローと値動きから「トレンド/レンジ」スコアを算出し、仲値の閾値を動的に最適化。
  • ガンマ曝露近似:公開情報から大雑把なデルタ・ガンマを推定し、カット時の吸着/乖離事前確率を出す。
  • 手数料最適化:ECN口座+リベートでコストを0.5bps単位で詰めると、累積で大きく変わります。
  • ヘッジ:イベント間の空白時間はボラ・ターゲティングで平準化(例:USDJPYのボラが閾値超えならサイズ半分)。

よくある質問(抜粋)

Q. ゴトー日だけやれば勝てますか?
A. ゴトー日はエッジが強まる日もありますが、必勝日ではありません。むしろ参加者が多くなり、逆流も起きやすくなります。フィルタとサイズ管理が決定的に重要です。

Q. ニュースで全て崩れませんか?
A. 重要指標や要人ヘッドラインが重なる日は取引しないのが前提です。回避ルールの精度が成績を左右します。

まとめ

USDJPYのイベント駆動フロートレードは、時間を軸にした再現可能なエッジを狙う堅実なアプローチです。仲値・フィキシング・オプションカットを同じフォーマットで実装し、統合スコアで取捨選択することで、裁量のブレを極小化できます。まずは小サイズで稼働し、ドローダウン期の停止と縮小を厳守しながら、データとログで粘り強く改善していきましょう。

コメント

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