週次レビュー
USD/JPY 中心の売買を週単位で数値化し、再現すべき勝ちパターンと停止すべき負けパターンを特定するためのテンプレートです。 週間トレード集計、勝率、PF、期待値、R倍、最大DD、時間帯別成績、経済指標カレンダー照合、翌週テーマを1枚に固定します。 毎週末のレビューで、感想ではなく記録、集計、分類、改善テーマの順で処理してください。
KPI定義
トレード数を 、損益を 、初期リスク額を とします。
口座残高系列を 、過去最高残高を とします。
比率で見る場合は次を使います。
コピー用テンプレート
# 週次振り返り YYYY-WW
**目的**: USD/JPYの今週の売買を数値とパターンで評価し、翌週に残す行動だけを決める。**要約**: 成績、R倍、最大DD、勝ち/負けパターン、経済指標影響、翌週テーマを記録する。**使いどころ**: 金曜NYクローズ後または土曜午前JSTに実施する。
## 対象期間
- 期間: YYYY-MM-DD HH:mm JST 〜 YYYY-MM-DD HH:mm JST- 対象: USD/JPY中心- 口座開始残高:- 口座終了残高:- 除外した取引:- 今週の主な相場テーマ:- 日足方向:- 4H方向:- 米10年金利:- 日米金利差:- 介入警戒・要人発言:
## 週間KPI
| 指標 | 値 | 判定 ||---|---:|---|| トレード数 | | 多すぎる/適正/少ない || 勝率 | | || PF | | 1.3未満は改善対象 || 期待値/回 | | 手数料・スプレッド込み || 平均R | | 0未満は停止対象 || 最大DD | | 許容内/超過 || 最大連敗 | | || 最大連勝 | | || USD/JPYのみ損益 | | |
## 時間帯別
| 時間帯 JST | トレード数 | 勝率 | 平均R | 損益 | コメント ||---|---:|---:|---:|---:|---|| 東京 08:00-15:00 | | | | | 仲値・実需・レンジを確認 || ロンドン 16:00-20:59 | | | | | ブレイクの真偽を確認 || NY前半 21:00-01:00 | | | | | 米指標・米金利反応を確認 || NY後半 01:00-06:00 | | | | | FOMC等の深夜イベントを確認 |
## トレード一覧
| No | 日時 JST | 通貨 | 売買 | セットアップ | 根拠 | 損切りpips | 初期RISK | 損益 | R倍 | 指標前後 | メモ ||---:|---|---|---|---|---|---:|---:|---:|---:|---|---|| 1 | | USD/JPY | | | | | | | | | |
## 勝ちパターン
- 最も利益が出たセットアップ:- 共通条件:- 時間帯:- 上位足:- エントリー直前の価格構造:- 損切り位置:- 利確判断:- 翌週も継続する条件:
## 負けパターン
- 最も損失が出たセットアップ:- 共通条件:- 時間帯:- 指標・要人発言との重なり:- ルール違反:- 損切り遅れ:- 翌週停止する条件:
## 経済指標カレンダー照合
| 日時 JST | 指標/会合 | 公式ソース | 重要度 | 事前方針 | 実際の行動 | 1時間後のUSD/JPY反応 | 評価 ||---|---|---|---|---|---|---|---|| | 米CPI / 雇用統計 / FOMC / PCE / GDP / 日銀 / 日本CPI / 短観 | | 高/中/低 | 取引停止/縮小/通常 | | | |
米国指標は原則として発表元のET時刻をJSTへ変換する。米夏時間は `ET + 13時間`、米標準時間は `ET + 14時間`。BLSはカレンダー時刻をEastern Timeで掲載するため、JST欄を手入力で確認する。
## 翌週テーマ
- メイン仮説:- 買いで攻める条件:- 売りで攻める条件:- 触らない条件:- 注目価格:- 注目時間帯 JST:- 注目イベント:- 今週から継続する勝ちパターン:- 今週で停止する負けパターン:- 1トレード最大リスク:- 週間最大損失で停止する基準:pandas集計スケッチ
import numpy as npimport pandas as pd
trades = pd.read_csv("trades.csv", parse_dates=["opened_at", "closed_at"])trades["closed_at"] = trades["closed_at"].dt.tz_convert("Asia/Tokyo")trades["win"] = trades["pnl_jpy"] > 0trades["r_multiple"] = trades["pnl_jpy"] / trades["initial_risk_jpy"]
def profit_factor(s: pd.Series) -> float: gross_profit = s[s > 0].sum() gross_loss = -s[s < 0].sum() return np.inf if gross_loss == 0 else gross_profit / gross_loss
def max_drawdown(equity: pd.Series) -> float: high = equity.cummax() return (equity - high).min()
weekly = { "n": len(trades), "win_rate": trades["win"].mean(), "pf": profit_factor(trades["pnl_jpy"]), "expectancy_jpy": trades["pnl_jpy"].mean(), "avg_r": trades["r_multiple"].mean(), "max_dd_jpy": max_drawdown(trades["equity_after"]),}
def session_jst(ts): h = ts.hour if 8 <= h < 15: return "Tokyo" if 16 <= h < 21: return "London" if 21 <= h or h < 1: return "NY early" return "NY late/other"
trades["session"] = trades["closed_at"].map(session_jst)
def block(g): return pd.Series({ "n": len(g), "win_rate": g["win"].mean(), "pf": profit_factor(g["pnl_jpy"]), "expectancy_jpy": g["pnl_jpy"].mean(), "avg_r": g["r_multiple"].mean(), "sum_pnl": g["pnl_jpy"].sum(), })
by_setup = trades.groupby(["setup", "session"]).apply(block).reset_index()
events = pd.read_csv("events.csv", parse_dates=["event_time_jst"])events["event_time_jst"] = events["event_time_jst"].dt.tz_localize("Asia/Tokyo")
trades_sorted = trades.sort_values("closed_at")events_sorted = events.sort_values("event_time_jst")
matched = pd.merge_asof( trades_sorted, events_sorted, left_on="closed_at", right_on="event_time_jst", direction="nearest", tolerance=pd.Timedelta("2h"),)落とし穴
- 勝率だけで判断しない。勝率60%でも平均負けが大きければ期待値は負になる。
- PFは負けが少ない週に過大化する。週次だけでなく直近20〜50トレードでも確認する。
- R倍は初期リスクで割る。途中で損切りをずらした後のリスクで割ると成績を美化する。
- 最大DDは確定損益ベースだと過小評価される。可能なら含み損ベースのMAEも記録する。
- 指標時刻はJSTへ変換する。特に米夏時間と米標準時間の切り替わりで1時間ずれる。
- USD/JPYは米金利、日銀、財務省発言、介入警戒で通常のテクニカルが無効化される局面がある。
- 勝ちパターン抽出は最低でも同型5件以上で判断する。1回の大勝ちはパターンではない。
参考
FOMC、BLS、BEA、日銀、総務省統計局の公式カレンダーを優先します。
経済指標アグリゲーターは便利ですが、最終確認元にはしません。
pandas集計は groupby と agg を基本にし、週次、時間帯、セットアップ、イベント前後の4軸で見ます。