この記事は、自分のFX取引履歴2,150件をPython(pandas)で分析した記録です。
具体的な損益額は伏せ、すべて 比率・指数・倍率 で表現しています。金額そのものより、
「どうやって犯人を絞り込んだか」という分析プロセスに価値があると考えているためです。
TL;DR
- 勝率95%のシステムが、時々資産曲線を大きく崩していた
- 「売りが悪い」→「EUR/JPY売りが悪い」→「EUR/JPY売りの持ち越しが悪い」と犯人を絞っていったら、
- 最後に残ったのは 通貨ペアにも方向にも依存しない、たった一つの行動 だった:
- 「含み損を抱えたポジションを、損切りせず翌日に持ち越す」
- さらに深掘りすると、その弱みは勝率95%を生む「粘り強さ」と同じ性質の裏面だった(強みと弱みは表裏一体)
- これはチャート予測でも経済指標でもなく、自分の行動履歴だけ から導かれた
- 手法の改善ではなく「自分がどんな時に壊れるか/なぜ勝てているのか」の特定である
0. データと前提
| 項目 | 内容 |
|---|---|
| データ | 証券会社の月次取引報告書(12ヶ月分)から抽出した決済履歴 |
| 件数 | 2,150件 |
| 分析環境 | Python / pandas / matplotlib |
| 指標 | 損益は すべて比率・指数・PF・倍率 で表現(金額は非公開) |
PF(プロフィットファクター)= 総利益 ÷ 総損失。1.0で損益トントン、大きいほど良い。
分析は、データサイエンスの典型的な流れをたどりました ――
最初は「属性」を疑い、統制変数を増やすうちに、最後に残った説明変数が「行動」だった、という展開です。
| 段階 | 疑った犯人 | 検証結果 |
|---|---|---|
| 1 | ロットサイズ | ✗ ミニでも通常でも同じ負け方 |
| 2 | 売り全般 | △ 半分正しいが粗すぎる |
| 3 | EUR/JPY売り | △ さらに近いが、まだ粗い |
| 4 | EUR/JPY売りの持ち越し | ○ ほぼ正解 |
| 5 | 含み損の翌日持ち越し(全ペア・全方向) | ◎ 真犯人 |
1. まず「主指標」を実態に合わせる
全体の勝率は95%だが、これは過大評価だった。件数の約半分を占める「ミニロット(最小単位)」が、
利益にほとんど寄与せず勝率だけを押し上げていたためである。
| 区分 | 件数シェア | 利益シェア | 勝率 | PF |
|---|---|---|---|---|
| ミニ(最小ロット) | 46% | 4% | 97.4% | 1.41 |
| 通常ロット | 54% | 96% | 92.8% | 2.49 |
利益の96%は通常ロットが生んでいる。 ミニは実質ノーリスクの練習・様子見で、勝率を水増ししているだけ。
以降、「本業の成績」は通常ロットで見る。
2. 通常ロットを「方向 × 保有時間」で4分解
同じ通常ロットでも、切り方を変えると成績が全く異なる4区分が現れる。
損益は 総損益を100とした寄与度指数 で示す(金額非公開)。
| 区分 | 件数 | 利益寄与度 (総損益=100) |
PF | 性質 |
|---|---|---|---|---|
| 通常買いデイトレ(1日以内) | 728 | 83 | 23.11 | 🏭 利益工場 |
| 通常スイング(買いの1日超保有) | 125 | 19 | 2.95 | 補助利益源 |
| 通常売り | 297 | -6 | 0.88 | ⚠️ 不安定要素 |
| ミニ全般 | 1,000 | 4 | 1.41 | ⚪ ノイズ |
ここで最初の重要な修正が入る。当初は「スイング(長期保有)=壊滅」と思っていたが、それは
売りと買いを混ぜていた ためだった。買いの1日超保有だけなら PF 2.95 の黒字。
破壊しているのは「長く持つこと」自体ではない。買いなら数日持っても勝てている。 危険はこの先で特定される。
3. 「利益工場」の稼働率トレンド
利益工場(通常買いデイトレ)の月次損益を、その 12ヶ月平均で割った比率=稼働率 と定義する。
金額そのものを見るより、「工場がフル稼働しているか/失速しているか」が一目でわかる。

上段:各区分の月次損益を「利益工場の月平均=1.0」に正規化。下段:利益工場の稼働率(%)。
| フェーズ | 期間 | 稼働率 | 解釈 |
|---|---|---|---|
| 好調期 | 序盤4ヶ月 | 154% → 127% → 293% → 186% | 相場との相性が良くフル稼働 |
| 失速期 | 中盤4ヶ月 | 26% → 18% → 56% → 42% | エンジン停止ではなく 出力低下(黒字は維持) |
| 回復? | 直近-1 | 99% | 平均まで復帰。だが全体損益は赤字 → 後述 |
| 現況 | 直近 | 30% | 工場は低出力。黒字は「大事故がなかったから」 |
発見:失速は直近月に始まったのではなく、中盤からずっと続いている(直近6ヶ月で5ヶ月が平均割れ)。
全体成績が伸び続けたのは、好調期の貯金と「事故が起きなかった月」に支えられていた。
稼働率という 比率 に変換したことで、生の損益額グラフでは見えなかった「静かな失速」が可視化された。
4. 犯人探し(1)― 売りを除外したら?
売りは方向別で構造的な赤字(PF 0.84)。「もし最初から売りをやらなかったら」を反実仮想で再計算した
(トレードを時系列に並べ、累積損益・ドローダウン・月次安定性を再構成)。
損益・DDは実績を100とした指数で表示する。
| シナリオ | 損益指数 (実績=100) |
PF | 最大DD指数 (実績=100・小さいほど良) |
プラス月 |
|---|---|---|---|---|
| ①実績(全体) | 100 | 2.34 | 100 | 10/12 |
| ②通常売り除外 | 106 | 5.41 | 30 | 11/12 |
| ③全売り除外 | 110 | 9.05 | 11 | 12/12 |
利益はほとんど減らない ― どころか増える。 売りは純損失なので、除外すると損益指数はむしろ上がる。
同時に最大DDは約1/10、赤字月は消滅(12ヶ月すべて黒字)。
「売りを制限すべきか」は、もはや議論の余地がない。問題は「どのレベルで制限するか」だった。
5. 犯人探し(2)― 「売り」は粗すぎた
だが「売り全部が悪い」わけではなかった。通常売りをペア別に割ると、犯人は1本に絞られる。
損益は方向・符号だけ示す(金額非公開)。
| 通常売り ペア別 | 収支 |
|---|---|
| EUR/JPY 売 | ❌ 大幅マイナス(元凶) |
| USD/JPY 売 | ✅ プラス(むしろ優秀) |
| GBP/JPY 売 | ✅ プラス |
| NZD/JPY・AUD/JPY 売 | ✅ 小幅プラス |
EUR/JPY売り1本だけがマイナスで、他の売りはむしろ黒字。
「EUR/JPY売りだけ禁止」した場合、損益指数は全シナリオ中トップ級まで跳ね上がる。
6. 犯人探し(3)― 「EUR/JPY売り」すら粗い
EUR/JPY売りを 保有時間 で割ると、正体が露わになった。
| EUR/JPY売りの内訳 | 件数 | 勝率 | PF |
|---|---|---|---|
| 当日中(≤1日) | 133 | 96.2% | 9.00 |
| 持ち越し(1日超) | 27 | 63.0% | 0.03 |
EUR/JPY売りの当日中は、むしろ最優秀クラス(PF 9.00)。 破壊していたのは持ち越し27件だけ。
しかもその中でも 上位3件(いずれも半年近い塩漬け)で、持ち越し損失の約87% を占めていた。
実質、EUR/JPY売りの赤字は たった3件の塩漬け が生んでいた。
除外すべき条件が「EURだから」「売りだから」ではなく、
「1日超持ち越した負けだから」 に近づいてきた。
7. 真犯人 ― 「含み損持ち越し」は全ペア・全方向で再現する
最後の問い:危険なのは「持ち越し」なのか、それとも「含み損を抱えたままの持ち越し」なのか。
全ペア・全方向の1日超保有を、勝ち(含み益方向に持ち越せた) と 負け(含み損を抱えて塩漬け) に分けた。
| ペア×方向 | 勝ち持越 件数 | 負け持越 件数 | 純収支 |
|---|---|---|---|
| GBP/JPY 買 | 58 | 6 | ✅ 黒字 |
| AUD/JPY 買 | 30 | 1 | ✅ 黒字 |
| EUR/JPY 買 | 42 | 8 | ✅ 黒字 |
| USD/JPY 買 | 41 | 6 | ✅ 黒字 |
| USD/JPY 売 | 23 | 6 | ✅ 黒字 |
| GBP/JPY 売 | 19 | 8 | ❌ 赤字 |
| AUD/JPY 売 | 25 | 11 | ❌ 赤字 |
| EUR/JPY 売 | 17 | 10 | ❌ 大赤字 |
そして決定的な非対称性:
| 指標 | 値 |
|---|---|
| 勝ち持越(263件)の平均利益を 1 とすると | 1.0 |
| 負け持越(58件)の平均損失は | 8.5 |
| (参考)当日中の負け/勝ち倍率 | わずか 1.8 |
持ち越した瞬間、負けだけが8.5倍に膨らむ。勝ちは膨らまない。
これは期待値の問題ではなく 構造的な非対称性。「持ち越し」という行為にエッジがあるのではなく、
負けを巨大化させる副作用だけ がある。EUR/JPY売りが突出していたのは"程度"の問題で、
"種類"は全ペア・全方向で共通だった。
8. 最終シナリオ ― 天井と、実装可能な現実解
| シナリオ | 損益指数 (実績=100) |
PF | 最大DD指数 (実績=100) |
プラス月 |
|---|---|---|---|---|
| ①実績 | 100 | 2.34 | 100 | 10/12 |
| ③全売り禁止 | 110 | 9.05 | 11 | 12/12 |
| A:翌日持ち越しを全面禁止 | 131 | 19.14 | 7 | 12/12 |
| B:含み損持越だけ回避 ※ | 167 | 24.11 | 7 | 12/12 |
- B(理想ルール)が全指標で最強。損益指数167、最大DDは実績の 約1/15、赤字月ゼロ、PF 24。
- BはAより損益が高いのに、最大DD指数は同じ7。→ 勝ち持越を残してもDDは悪化しない。持ち越しで危険なのは負けだけ、という証明。
⚠️ 正直な但し書き(最重要)
Bは結果論(ハインドサイト)であり、実運用では到達不可能な"天井"です。
「どの持ち越しが最終的に負けるか」を事前に知っている前提だからです。含み損のまま持ち越したポジションの
一部は現実には反発して勝ちに転じており、それを機械的に切ると利益を削ります。
実装可能な現実解は A「持ち越しを一切しない(全部当日決済/損切り徹底)」。
ハインドサイト不要の純粋なルールで、それでも 損益指数131・最大DD指数7・赤字月ゼロ。
売り禁止・EUR売り禁止のどれよりも、損益とDDの両面で優れています。
9. なぜ勝率95%なのか ― 強みと弱みは同じ根から生えている
ここまでで真犯人(含み損の持ち越し)を特定した。だが最も面白い発見はこの先にある ――
勝率95%(強み)と塩漬け(弱み)が、同じ一つの性質から生えている という事実だ。
勝率を保有時間で割ると「二層」に分かれる
「勝ちトレードは最初から順行していた(=エントリーが上手い)のか、一度含み損に沈んでから戻した
(=損切りせず耐えた)のか」を切り分けたい。だが各トレードの保有中の値動きは生データにないので、
全建玉の建値・決済値を時系列に並べて価格系列を近似再構成 し、勝ちトレードが決済前に建値より
不利な価格に沈んだか(MAE:最大逆行幅の近似)を推定した。
⚠️ 再構成は1トレードあたり中央値3点の疎なサンプリングのため、「沈んだ割合」は過小評価(実際はもっと高い)。
| 保有時間 | 一度でも含み損に沈んでから勝った割合 |
|---|---|
| 1時間以内 | 30% |
| 1〜4時間 | 20% |
| 4時間〜1日 | 38% |
| 1日超 | 84% |
勝率95%には二つの別々のエンジンがある:
- 短期(件数の大半)= 本物のエッジ:1時間以内の勝ちは7〜8割が最初から順行。速い利確+順張り買い。
- 長期保有(少数)= 耐えて勝ちに変換:1日超の勝ちは 84%が一度含み損に沈んでから生還。本来なら負けだった取引を、損切りせず耐えて勝ちに変えている。
エッジは3つのエンジンでできている
| エンジン | 内容 | 評価 |
|---|---|---|
| 第一 | 順張り買い(トレンドに順行) | 強み |
| 第二 | 早めの利確(利小:勝ちの71%が小幅で利確) | 強み |
| 第三 | 耐える癖(含み損を損切りせず保有) | 諸刃の剣 |
肝は第三エンジン。普通は欠点扱いだが、買いスイングは黒字(PF 2.95)だった 通り、完全な欠点ではない。
表裏一体 ― 同じ行動が強みにも弱みにもなる
| 同じ「耐える」行動が… | 順張り買い | 逆張り売り |
|---|---|---|
| 結果 | 戻って勝ち(買いスイング黒字) | 戻らず塩漬け → 爆発 |
| 世間の呼び名 | 「粘り強さ」 | 「塩漬け」 |
もし「買いも売りも即損切り」だったら、勝率95%は絶対に出ていない。 高勝率を作っている要素の一部が、
まさにこの「耐える癖」そのものだからだ。だから処方箋は「耐える癖をなくす」ではなく
「耐えていい場面(順張り)とダメな場面(逆張り)を分ける」 になる。
2,150件から見えた自画像
一言でいうと、私は 「相場を読む人」というより「確率的に有利だと思った仮説を、粘り強く検証し続ける人」 だった。
| その性質が現れる場面 | 現れ方 |
|---|---|
| データ分析 | 強み(結論を急がず「本当にそうか」を何度も確認する) |
| 順張り買い | 強み(正しい方向を粘り強く保有 → 利益) |
| 逆張り売り | 弱み(間違った方向を粘り強く保有 → 塩漬け) |
強み(粘り強さ)と弱み(損切りの遅れ)は、別々の長所短所ではなく、同じ一つの性質の表裏だった。
10. 結論 ― 強みと弱みは、同じ性質の表裏一体だった
トレード本の「損切りが大事」という抽象論とは次元が違う。今回は2,150件の履歴から
損切りできなかった数十件が抽出され、さらにその中の数件が長期の利益を大きく削っていたことまで確認された。
普段のトレードは十分に優秀だった:
- 通常買いデイトレ(PF 23.11)
- 当日中のEUR売り(PF 9.00)
- 短期決済全般
ところが 数ヶ月に一度だけ「今回は戻るだろう」が発動し、その数件が資産曲線を破壊する。
| あなたが壊れるのは | 検証 |
|---|---|
| 「売った時」ではない | USD/GBP売り・当日EUR売りは黒字 |
| 「EURを触った時」でもない | EUR/JPY買い・当日EUR売りは黒字 |
| 「負けを認められず翌日に持ち越した時」 | 全ペア・全方向で再現。真犯人 |
勝率95%の裏で資産を削っていたのは相場ではなく、この一つの行動だった。
そしてその行動は、勝率95%を作っている「粘り強さ」と同じ性質の裏面だった。
得られたのは「損切りが大事」という一般論ではなく、「私の強み(粘り強い仮説検証)と
弱み(損切りの遅れ)は、実は同じ一つの性質の表裏一体だった」 という自分専用の自画像である。
それが チャート予測でも経済指標でもなく、自分自身の行動履歴から導かれた ことに価値がある。
11. 得られた運用ルール
第9章の発見から、ルールは「耐える癖を消す」ではなく 「耐えていい場面とダメな場面を分ける」 に変わる。
癖を100%消すと塩漬け(弱み)も消えるが、勝率と買いスイングの黒字(強み)も一部削れてしまうからだ。
| 優先度 | ルール |
|---|---|
| 🔴 最重要 | 逆張り(トレンド逆行)の含み損は即切り/順張りの含み損のみ許容 ― 癖を消さず場面を分ける |
| 🔴 迷ったら | 判断に迷う場面は 翌日持ち越し禁止(全部当日決済) に倒す(実装容易・過剰適合なし) |
| 🟡 移行期 | まず「最も確実に有罪な行動」(特定ペアの売り塩漬け)から断つ |
| 🟢 継続 | 利益工場の稼働率を毎月モニタリング(2ヶ月連続で平均割れなら要点検) |
| ⚪ 意識 | 主指標はノイズを除いた本業区分で見る |
段階的アプローチ(過剰適合を避ける順序):
- まず最も確実に有罪な行動(特定の塩漬けパターン)だけを止める
- 数ヶ月運用して結果を再検証
- 効果が確認できたら「逆張りの含み損は即切り/順張りは許容」へ拡張(=強みは残し弱みだけ断つ)
おわりに
「勝てる手法を探す」記事は世に溢れているが、今回やったのは逆で、すでに勝っている自分が、
どこで自滅しているか をデータで突き止める作業だった。
面白いのは、答えが相場分析ではなく 自分の行動ログ の中にあったこと。
そして最終的にたどり着いたのは「損切りが大事」という格言ではなく、
自分の強みと弱みが同じ性質の表裏一体だった という、少し意外な自画像だった。
だから改善の指針も「弱みを消す」ではなく「強みは残し、弱みが出る場面だけ封じる」になる。
同じように取引履歴を持っている人は、ぜひ一度 pandas で
「保有時間 × 勝ち負け」のクロス集計をやってみてほしい。あなたを壊している行動も、
そしてあなたを勝たせている行動も、案外同じ一つの癖かもしれない。
本記事は個人の取引履歴の分析記録であり、投資助言ではありません。数値はすべて比率・指数で示しており、
反実仮想シナリオBはハインドサイトを含む理論上限で、実運用の期待値ではありません。