MONTHLY REPORT · 2026-04 (2026-04-01 — 04-30 JST / 04月)

3 週間で積んだ +220 pips を、
4/30 の 9 時間で半分失った。

今月は +120.9 pips / 28勝15敗 / 勝率 65.1% / PF 1.39。 JPY ベースは -2,154 円(pip×lot 換算と GMO 約定差額の合算結果)。

本番稼働 24 日目までは累計 +220 pips 近くを着実に積み上げていたが、 4/30 の介入級円高で 3 連続 SL を踏み -140.6 pips を一日で吐き出して着地した。 本レポートは月内の決済済 43 件のトレード実績、週次の積み上げ過程、システム変更の主要トピック、 そして月末時点 311 シグナルのメタラベリング判定分布を、加工なく公開する。

01 · MONTHLY PERFORMANCE

今月のトレード実績

集計期間: 2026-04-01 — 04-30 JST。 決済済み (exit_time 確定) のトレードのみを対象。本番稼働は 4/7 後場から開始しているため、4/1〜4/7 午前は無トレード。

CLOSED TRADES 43 うち勝ち 28 / 負け 15 / BUY 35 / SELL 8
WIN RATE 65.1% 28勝15敗
PIPS +120.9 平均 +2.81 pips/trade
PNL JPY -2,154 PF 1.39
CUMULATIVE SINCE 2026-04-08:
CLOSED41
WIN RATE65.9%
PIPS+120.8
PNL-2,154円
PF1.39
AVG HOLD3.3h
ENTRY (UTC) EXIT (UTC) SIDE PNL pips CLOSE REASON
2026-04-07 12:082026-04-07 12:08BUY-0.8最大保有期間超過
2026-04-07 12:102026-04-07 12:10BUY+0.9最大保有期間超過
2026-04-07 14:532026-04-07 15:13SELL-16.0最大保有期間超過
2026-04-07 15:012026-04-07 16:29SELL+13.1最大保有期間超過
2026-04-07 15:142026-04-07 16:30SELL+14.1最大保有期間超過
2026-04-07 16:332026-04-07 19:00SELL-1.8最大保有期間超過
2026-04-07 21:002026-04-07 22:42SELL+39.2最大保有期間超過
2026-04-07 23:002026-04-07 23:30SELL+18.1最大保有期間超過
2026-04-08 01:002026-04-08 03:30SELL+27.3最大保有期間超過
2026-04-08 04:002026-04-08 07:00SELL+19.4最大保有期間超過
2026-04-08 08:002026-04-08 11:00BUY+24.2最大保有期間超過
2026-04-08 12:002026-04-08 15:00BUY+3.4最大保有期間超過
2026-04-08 16:002026-04-08 19:00BUY+35.9最大保有期間超過
2026-04-08 20:002026-04-08 23:00BUY+0.3最大保有期間超過
2026-04-09 00:002026-04-09 03:00BUY+5.9最大保有期間超過
2026-04-10 05:012026-04-10 08:00BUY+14.3最大保有期間超過
2026-04-10 14:012026-04-10 17:00BUY+8.4最大保有期間超過
2026-04-12 17:312026-04-12 22:00BUY+30.8TP到達
2026-04-13 01:082026-04-13 03:30BUY+0.9最大保有期間超過
2026-04-13 04:162026-04-13 07:21BUY+2.2最大保有期間超過
2026-04-14 20:002026-04-14 23:30BUY-6.2最大保有期間超過
2026-04-15 00:012026-04-15 03:30BUY+20.4最大保有期間超過
2026-04-16 05:002026-04-16 08:00BUY+14.6最大保有期間超過
2026-04-16 14:012026-04-16 17:30BUY+2.7最大保有期間超過
2026-04-16 19:002026-04-16 22:01BUY-11.5最大保有期間超過
2026-04-16 22:012026-04-17 01:30BUY+14.7最大保有期間超過
2026-04-17 05:012026-04-17 08:01BUY-20.3最大保有期間超過
2026-04-17 08:012026-04-17 11:30BUY-11.5最大保有期間超過
2026-04-17 13:012026-04-17 14:30BUY-58.7SL到達
2026-04-17 15:012026-04-17 17:30BUY+34.0TP到達
2026-04-19 22:012026-04-20 04:30BUY-11.5最大保有期間超過
2026-04-20 18:002026-04-21 00:01BUY+11.9最大保有期間超過
2026-04-21 00:012026-04-21 06:30BUY+1.9最大保有期間超過
2026-04-23 05:012026-04-23 11:01BUY+15.0最大保有期間超過
2026-04-23 11:012026-04-23 17:30BUY+3.5最大保有期間超過
2026-04-27 06:012026-04-27 12:30BUY-31.6最大保有期間超過
2026-04-28 16:012026-04-28 22:02BUY-2.0最大保有期間超過
2026-04-28 22:022026-04-29 04:30BUY-0.1最大保有期間超過
2026-04-29 11:022026-04-29 15:30BUY+43.6TP到達
2026-04-29 16:022026-04-29 22:30BUY+12.8最大保有期間超過
2026-04-30 03:022026-04-30 07:57BUY-49.0SL到達
2026-04-30 09:022026-04-30 10:26BUY-45.3SL到達
2026-04-30 11:022026-04-30 12:07BUY-46.3SL到達

決済理由の内訳: 最大保有期間超過 36 件 / TP 到達 3 件 / SL 到達 4 件。 SL 4 件のうち 3 件は 4/30 の介入級円高で連続発火(-49.0 / -45.3 / -46.3 pips、合計 -140.6 pips)。 Side 内訳は BUY 35 件 / SELL 8 件。SELL 8 件は全て 4/7 後場〜4/8 早朝の連続トレードで +113.4 pips を稼いでおり、月内の pips の大半をここで作っている。 ENTRY/EXIT は UTC 保存。pips ベース +120.9 でも JPY ベースは -2,154 円に着地した(GMO 約定価格と pip 換算ロジックの差・スプレッド・スワップが累積した結果)。

02 · WEEKLY BREAKDOWN

週次内訳 — 月内の積み上げ過程

4 月内の各 ISO 週ごとの実績。 W15 → W16 → W17 で +238.8 pips を積み上げた後、W18 (4/27 — 5/3) の月内分で 4/30 の介入により大きく失速。

週ID 期間 (JST) 件数 勝/負 勝率 pips PF 所感
2026-W1504-06 — 04-12 1714/3 82.4% +205.9 12.07 本番稼働開始週、SELL 8 件で +113p を確保
2026-W1604-13 — 04-19 138/5 61.5% +12.1 1.11 新モデル v20260419 投入、4/17 SL を吸収して微益
2026-W1704-20 — 04-26 54/1 80.0% +20.8 2.81 SQLite 移行・公開サイト整備週
2026-W1804-27 — 05-03 (月内分のみ) 82/6 25.0% -117.9 0.32 4/30 介入級円高で SL 3 連発

W15〜W17 の 3 週間で +238.8 pips(PF 平均 5.3)と順調に推移。 W18 単独で -117.9 pips、月初からの 3 週間積み上げのほぼ半分を 1 週間で失った計算になる。 なお W18 の集計は 4/27 — 4/30 の月内分のみ反映(5/1 — 5/3 は来月に帰属)。

03 · SYSTEM CHANGES

今月のシステム変更履歴

2026-04-01 〜 04-30 の主要マイルストーン。 BOT 本体・運用基盤 (OPS)・データ基盤 (DATA) の 3 カテゴリでまとめる。 個別コミットの羅列ではなく、月内のメジャートピック単位で抽出している。

BOT

リスク制御の総点検と halt 系の整備

  • キルスイッチ + NaN/stale data 安全装置: halt.flag による即時停止、データ異常時の自動 halt、NaN シグナル検知での発注停止を実装。
  • 単発トレード予算超過 halt と OCO SL 誤分類の修正: 想定以上の損失幅(許容超過率 1.1×)を踏んだ瞬間に halt を発火、OCO 決済の reason 文字列を MARKET_ONLY と統一。
  • 新モデル v20260419 デプロイ (1bar=1h / 最大保有 6h / 2lot×1pos)。月内のモデル切替はこの 1 回のみ。
  • OCO 発注リトライ強化: 1.5 秒間隔×3 回、30 秒タイムアウト、clientOrderId の禁止文字除去、GMO API レート制限 (status=4) リトライ。
  • 金曜エントリー締切前倒し: 17→14 UTC(23:00 JST)に変更し、週末ギャップリスクを縮減。
  • イベントドリブン基盤 Phase 1–3: A 級指標限定のイベントゲート、強制 EXIT、エンドスイーパーを実装(モデル本体は不変、ゲート層のみ)。
  • 外部要因クローズ検知: GMO の losscut / 手動決済を検知して Slack 通知。
  • MARKET→OCO 2 段階発注フロー (T1-T14): 単発エントリーの 2 段化と既存建玉の引き継ぎ恢復処理を整備。
  • 逆張り SELL パイプライン (Phase 2): フラグ off で凍結のまま実装着手。本番投入はまだ。
  • META_THRESHOLD 環境変数で実行時上書き + RR 警告閾値を 1.0 に緩和。
OPS

ダッシュボード WebAuthn 認証 + Bot 操作 UI 一式

  • WebAuthn / passkey 認証を運用ドメイン(管理画面)に導入。SQLite スキーマ・Challenge ストア・回復コード(bcrypt 検証・使い切り消費)・itsdangerous 署名 cookie セッション・認証必須化ミドルウェアを一括実装。
  • Bot 操作 UI: ダッシュボードから /bot/stop /bot/restart /bot/halt-status を発火可能に。HaltStatusBanner で halt 状態を即時可視化。
  • 公開サイト整備: 運用ドメインを HOME / FEATURES / TECHNOLOGY / REPORTS / PERFORMANCE / OPERATIONS / HISTORY の 7 ページ構成に統一。週次レポート HTML 群と publish ワークフローを追加。
  • 観測性ダッシュボード 3 画面追加 (Phase 2)。Trades / Signals / Outcomes をリポジトリ層経由で統一参照。
  • 資産プロジェクション: pips ベース刷新、税金考慮モード、毎月入金額、マイルストーン月別化、bookmark / 手動実行に対応。
  • イベントカレンダー連携: ForexFactory の来週分も取得、A 級限定で Bot 動作と一致、終了済み非表示、フェーズ遷移先を具体名で表示。
  • iPad コンパクトレイアウト・サイドバー折りたたみ(localStorage 保存)・NY タイムゾーン時計・MACD / ボリンジャーバンド表示切替。
  • Trailing SL Shadow(観測専用): 実発注なしで効果を週次評価する shadow ジョブを VPS crontab に追加。
  • 記事生成フローの早朝化とペア別パスへの統一、週次 Slack/レポートの画像化、cron 整備。
  • マルチ端末同時ログイン許可(旧セッション破棄を解除)、aaguid 正規化保存。
DATA

SQLite dual-write 移行完了 + ペア分離

  • SQLite 移行 Task 13–21 完了: 従来 CSV のみだったトレード・シグナル・シャドウ追跡・資産推移を、SQLite と S3 の両方に並列書き込みする dual-write モードへ移行。既存 CSV/JSON の S3 形式は後方互換維持
  • trimix-fx db CLI と fx:db:* スキル群を追加。SQLite に対して任意の SELECT が即座に走るように。本月次レポートの数値も SQLite/S3 両系統で照合している。
  • ペア分離 Phase 2 + Phase 3 物理移行: P0 違反 13 件を一括修正、ファイルパスとメタデータに symbol を必須化。scheduled_tasks.lock 誤コミットを削除、 Optuna study 名をペア別に分離。
  • Collector サービス本実装: tick / klines を BID + ASK 両方収集、klines の ts を ISO-8601 UTC に正規化、tick WS をペア毎に独立接続にリファクタ、status フィールド追加。
  • S3 観測性ダッシュボード: /s3 ページをバケット全体統計表示に刷新、Collector 警告バナー、ローカルキャッシュ統計表示。
  • SQLite スナップショット S3 バックアップを VPS cron に追加(Task 17)。
  • シグナル outcome 統一トラッカー: signal_outcome_tracker と runner.py フック (A〜E) を追加し、過去シグナルの遡及バックフィルスクリプトも整備。
  • cross_pairs を GMO API ベースに改修 + parquet キャッシュ + 差分更新。
  • JST 統一の徹底: 日時保存・ファイル名のJST変換ルールを追加し、UTC 混入を防ぐ運用ルールを文書化。
  • Optuna 目的関数に frequency_penalty 追加(月 60 件未満を減点)+ 1h native window indicator セット追加。
04 · META-LABELING ANALYSIS (CUMULATIVE)

メタラベリング判定分布 — 月末時点

集計期間: 2026-04-08 〜 04-30(運用開始から月末まで / 全 311 シグナル)。 今月は signal-logs から判定キー (ENTERED / REJECTED_META / REJECTED_OTHER / POSITION_FULL / CUTOFF) の分布のみ集計する。 shadow outcome(仮想追跡 pips)は別経路で再集計中で、今回は数値に含めていない。

TOTAL SIGNALS 311 EMA クロスで検出された全候補
ENTERED 38 実約定 (12.2%)
REJECTED_META 157 メタラベリングが見送り (50.5%)
REJECTED OTHER 116 POSITION_FULL 66 / REJECTED_OTHER 46 / CUTOFF 4
VERDICT — DATA SAYS

311 シグナルの半分が メタで見送り、実約定は 12.2%。

月末時点で 311 シグナル中、メタラベリングが「見送り」と判定したのが 157 件 (50.5%)。 建玉枠埋まり (POSITION_FULL) 66 件・その他理由 (REJECTED_OTHER) 46 件・週末カットオフ (CUTOFF) 4 件を除いた残りで、 実際に約定したのは 38 件 (12.2%)
メタラベリングがフィルタとして強く効いている事実は変わらず、その「フィルタ精度」を評価するための shadow 仮想追跡データは、 今月分から集計経路を S3 ベースに移行した影響で再構築中。 W17 までは「見送られた中に勝ちが多い/高確信度ほど負ける」傾向が観測されていたため、shadow 集計が復旧次第で同じ判定が再現するかを 5 月の月次で確認する。

SIGNAL ALLOCATION (311 SIGNALS)
ENTERED3812.2%
REJECTED_META15750.5%
POSITION_FULL6621.2%
REJECTED_OTHER4614.8%
CUTOFF41.3%
PIPS OUTCOME — ENTRY 38 (実約定 43 closed / 月内集計)
28 勝 / 15 負 net +120.9 pips
+433.5p
-312.6p
PF 1.39 · 勝率 65.1% · 平均 +2.81p/trade
PIPS OUTCOME — REJECTED 273 (shadow 仮想追跡)
— shadow 集計 再構築中 — 未確定
SHADOW DATA PENDING
月内 273 件の REJECTED について shadow 集計を再構築中。次回月次で復旧予定。

注: ENTRY の数値は月内 43 closed トレードの累積(signal_outcomes と live_trades の集計対象境界差で 38 → 43 に膨らむ)。 shadow outcome は今月分から S3 経路に移行中で確定値が未集計。次回月次までに再集計して復旧させる。

CALIBRATION

確信度ビン別の件数分布

モデルが算出する確信度(meta_prob)の分布。今月は shadow 勝率を再集計中のため、件数分布のみ表示する。 閾値 0.60 以上は計 45 件、うち 25 件が 0.60–0.65 の境界帯に集中している。

確信度ビン 件数 件数バー 判定対象帯 判定
0.30 – 0.4033 低確信度帯 REJECTED_META 多数
0.40 – 0.50103 最大ボリューム帯 原則 REJECTED
0.50 – 0.5564 境界下帯 閾値 0.55 を引いた場合の救済候補
0.55 – 0.6020 境界直下帯 W17 では shadow 勝率最高だった帯
0.60 – 0.65 ⚠25 本番閾値直上 実約定対象。W17 では負け帯だった
0.65 – 0.70 ⚠11 高確信度帯 W17 では shadow 全敗だった帯
0.70 – 1.009 最高確信度帯 サンプル極小
VERDICT — DISTRIBUTION ONLY

件数分布は 0.40–0.55 帯に集中、閾値直上は 25 件。

0.40–0.55 帯に 167 件 (53.7%) が集中する形は W17 時点と同じ構造。 閾値 0.60 以上の 45 件のうち、25 件が境界帯 0.60–0.65 に集まっている。 shadow 勝率は今月再集計中だが、W17 までの観測では「0.55–0.60 帯が勝率最高、0.60–0.70 帯が負け」という逆相関が見えていた。 この傾向がサンプル 311 でも再現するかは、shadow データ復旧後に 5 月の月次で再評価する。

05 · NEXT MONTH

翌月 (2026-05) の運用方針

4/30 の介入級円高で「リスクゲート総崩れ」が露呈した。5 月は再発防止策の本実装と、 1 か月分の運用データを使ったモデル再学習を並行して進める。

ACTION 01

介入域での発注ガード強化

4/30 SL 3 連発の事故レポート(別ページ)に基づき、regime 検知(160 円台での円高転換アラート)+ ATR 急騰時の発注停止 + GMO レート制限ゲートを 48 時間以内に本実装。介入域での自動売買は人間の最終確認を挟む運用に切り替える。

ACTION 02

モデル再トレーニング(実運用データ反映)

高確信度ほど勝率が下がる W17 までの calibration 崩壊は、訓練データと本番分布の乖離を示唆。実運用 4/8〜4/30 の 311 シグナル + 43 トレードを訓練データに加えて再学習。月内に v20260501 系統を作り、shadow で旧モデルと並走させる。

ACTION 03

逆張り SELL パイプラインの試走

月内 SELL は 4/7〜4/8 の 8 件のみで、しかもこの 8 件で +113.4 pips を稼いだ。BUY 35 件は合計 +7.5 pips に留まり、月内のリターンは事実上 SELL 連打日に依存している。Phase 2 で凍結中の MeanReversionSell パイプラインを、フラグ on で shadow 限定試走(実発注なし)。1 か月の shadow outcome を見て本番投入の可否を判定する。

ACTION 04

継続観測・月次公開

本ページは月次で更新する。透明性は、改善判断を裏付けるためにある。次回 2026-05 のレポートで calibration 崩壊が改善するか、介入対策が機能するか、shadow 集計が復旧するかを追跡する。週次レポート(W19〜)は引き続き発行。

注意: 今月のトレード集計は SQLite 本番 DB と S3 trade-logs から取得した、 JST 2026-04-01 〜 04-30 範囲・exit_time 確定済みのみのデータに基づく。 まだ未決済 (open) は集計対象外。
メタラベリング検証は累積データ (2026-04-08 〜 04-30 / 全 311 シグナル) の判定キー分布のみ。 shadow outcome(仮想追跡 pips)は今月分から S3 経路に移行中で本レポート時点では未集計。次回月次(2026-05)で復旧させる。
JPY ベースが -2,154 円(pips ベース +120.9 とは符号が逆)になっているのは、GMO 約定価格と pip 換算ロジックの差・スプレッド・スワップが累積したため。 サンプル数が中規模で統計的に有意とは言い切れないため、傾向の指摘に留めている。 本ページは、判断をデータで裏付けるための参考材料であり、結論ではない。

ARCHIVE

過去のレポート

週次・月次レポートのバックナンバー一覧。