<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>監査 on FX検証日記</title><link>https://etherpoc.com/ja/tags/%E7%9B%A3%E6%9F%BB/</link><description>Recent content in 監査 on FX検証日記</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Tue, 21 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://etherpoc.com/ja/tags/%E7%9B%A3%E6%9F%BB/index.xml" rel="self" type="application/rss+xml"/><item><title>コード監査で見つけた差異を、直す前に測って仕分けた話</title><link>https://etherpoc.com/ja/posts/audit-verify/</link><pubDate>Tue, 21 Jul 2026 00:00:00 +0000</pubDate><guid>https://etherpoc.com/ja/posts/audit-verify/</guid><description>&lt;p&gt;実口座で動いているEAのソースコード約2,500行を、全数バグ監査にかけたことがあります。出てきた指摘は20件。再起動で停止ラッチが消える穴のような「即修正すべき実害」から、「検証コードと実機で細部の挙動が違う」という気になる差異まで、重さは様々でした。&lt;/p&gt;
&lt;p&gt;実害系は優先度順に潰しました(停止状態の永続化、SL無し建玉の穴、発注価格の正規化など)。この記事で書きたいのは、その後に残った「検証コードとの差異」2件の話です。普通の感覚なら「検証と実機は一致すべき。全部直そう」となるところですが、このプロジェクトでは&lt;strong&gt;直す前に必ず測る&lt;/strong&gt;ことにしています。修正にもリスクとコストがあり、そして測ってみると、直す価値は差異ごとに全く違うからです。&lt;/p&gt;
&lt;h2 id="はじめに-このブログと前提の説明"&gt;はじめに: このブログと、前提の説明&lt;/h2&gt;
&lt;p&gt;初めての方向けに。このブログは、私(個人)がFXの自動売買プログラム(EA=MetaTrader5上で動く売買ロジック)を自作し、統計検証の記録を勝敗問わず公開している検証日記です。文中の「研究N」は検証ノートの通し番号。&lt;/p&gt;
&lt;p&gt;私の開発体制は少し特殊で、&lt;strong&gt;検証用のPythonコード&lt;/strong&gt;(過去11年の実データで手法を測る側)と、&lt;strong&gt;実口座で動くMT5のEA&lt;/strong&gt;(測った結果を移植した側)の2本立てです。用語はPF=総利益÷総損失(1超で黒字)、DD=資産が最高値からどれだけ下がったか、の2つだけで読めます。&lt;/p&gt;
&lt;p&gt;&lt;img src="https://etherpoc.com/charts/equity.png" alt="図: 確定システムの資産曲線(実データ2015-2026)。"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;図: 検証側が示す「あるべき姿」。この曲線と実機の挙動がズレていないかを数え続けるのが、この記事のテーマである監査です。&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="なぜ差異即修正にしないのか"&gt;なぜ「差異=即修正」にしないのか&lt;/h2&gt;
&lt;p&gt;前提の整理から。私の開発フローでは、Pythonの検証基盤が「正」で、MT5のEAはその移植です。移植には必ず細部の判断が入ります。フィルタをどのスリーブに適用するか、オーバーレイをどこまで掛けるか。移植時の解釈が検証側と食い違うと、「検証した姿」と「実際に動いている姿」がズレます。&lt;/p&gt;
&lt;p&gt;このズレには2種類あります。&lt;strong&gt;性能を変えるズレ&lt;/strong&gt;と、&lt;strong&gt;変えないズレ&lt;/strong&gt;。前者は直すべきですが、後者を反射的に「直す」と、実機の挙動を変えるという新しいリスクを、便益ゼロで背負うことになります。どちらか見分ける方法は1つしかありません。両方の挙動でバックテストを回して、差を測ることです。&lt;/p&gt;
&lt;h2 id="件1監査d3-直しても無意味だった差異"&gt;件1(監査D3): 直しても無意味だった差異&lt;/h2&gt;
&lt;p&gt;1件目はequityフィルタの適用範囲です。米国株が200日線を割ったら核のサイズを半分にする防御機構を、検証コードはトレンド核だけに適用しているのに、実機EAは指数スリーブと第2サテライトにも掛けていました。このフィルタが作動している局面は全日数の25%。4分の1の期間で3つのスリーブのサイズが違うのだから、無視できる差には見えません。&lt;/p&gt;
&lt;p&gt;全期間+期間分割で両方を測りました。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;構成&lt;/th&gt;
					&lt;th&gt;PF&lt;/th&gt;
					&lt;th&gt;月利&lt;/th&gt;
					&lt;th&gt;最大DD&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;是正版(検証と一致)&lt;/td&gt;
					&lt;td&gt;1.69&lt;/td&gt;
					&lt;td&gt;+1.060%&lt;/td&gt;
					&lt;td&gt;-8.33%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;現状のEA&lt;/td&gt;
					&lt;td&gt;1.68&lt;/td&gt;
					&lt;td&gt;+1.039%&lt;/td&gt;
					&lt;td&gt;-7.98%&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;月利差は+0.021%。DDに至っては現状のEAの方が0.35pt浅い。未使用期間(2023年以降)だけで見ると月利+1.392% vs +1.405%で、ほぼコインフリップです。取引数は8,478件で完全に同一(このフィルタはサイズだけを変えるため)。&lt;/p&gt;
&lt;p&gt;判定は「無差」。性能を理由に挙動を変える動機はありません。そしてこの検証の本当の収穫は副産物のほうでした。&lt;strong&gt;実機EAの成績(月利+1.039%/DD-7.98%)が、公表している検証値(+1.060%/-8.33%)からほぼズレていない&lt;/strong&gt;ことを、初めて数字で確認できたんです。監査の不合格項目を測りにいったら、システム全体の健全性証明が手に入った形です。&lt;/p&gt;
&lt;h2 id="件2監査b3-小さいが本物だった差異"&gt;件2(監査B3): 小さいが本物だった差異&lt;/h2&gt;
&lt;p&gt;2件目はカレンダー・スリーブのオーバーレイです。検証コードには存在しない「ボラ調整+equityフィルタ」が、実機のカレンダー・スリーブにだけ掛かっていました。移植時に「他のスリーブと同じ扱いにしておこう」とされた、悪意のない実装差です。&lt;/p&gt;
&lt;p&gt;これを検証準拠(オーバーレイなし)に修正したところ、事件が起きます。MT5のストラテジーテスター(USDJPY・2022年Q1の窓)でPFが1.27→1.34へ跳ね上がったんです。0.07の改善は大きい。……大きすぎます。この手の「出来すぎた改善」を見たときこそ、全期間で測り直す規律の出番です。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;構成&lt;/th&gt;
					&lt;th&gt;PF&lt;/th&gt;
					&lt;th&gt;月利&lt;/th&gt;
					&lt;th&gt;最大DD&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;修正後(検証と一致)&lt;/td&gt;
					&lt;td&gt;1.69&lt;/td&gt;
					&lt;td&gt;+1.060%&lt;/td&gt;
					&lt;td&gt;-8.33%&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;修正前&lt;/td&gt;
					&lt;td&gt;1.67&lt;/td&gt;
					&lt;td&gt;+1.049%&lt;/td&gt;
					&lt;td&gt;-8.72%&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;真の差はPF+0.02、月利+0.010%、DDが0.39pt浅くなる程度でした。テスター窓の派手な+0.07は、たまたまその3ヶ月がUSDJPYのカレンダー取引にとって差の出やすい窓だっただけです。&lt;/p&gt;</description></item></channel></rss>