本文へ移動
ハック!でAI

AIで作る 第4回

AI で自動売買の仕組みは作れる。でも検証の成績は当てにならない 乱数で確かめた

佐々木 航@w_sasakiwith Claude Code読了 約15分
試した設定の数が 10 通りから 174 通りへ増えるにつれて、検証(前半)の成績が +31.2% まで上がり、後半の成績は −5.0% のまま横ばいの折れ線グラフ

この記事でわかること

  • 乱数の値動きでも、検証では良い成績が出る理由
  • 検証の成績を見るときの 5 つの点検
  • 止める条件・API キーの権限と、公式の案内の場所

確認した環境: Node.js 24.12.0 での編集部の計算(乱数の値動き 10,000 通り・設定 174 通り)/ 金融庁・財務局・証券取引等監視委員会・国税庁・各社の公式のページ / 2026年10月12日に確認

AI にコードを書かせれば、株や暗号資産を自動で売買する仕組みは作れます。ただし、過去のデータでの検証(バックテスト)で成績が良くても、それだけでは、先の成績は分かりません。この記事では、そのことを編集部の計算で示し、検証の点検のしかた、止める仕組み、法律と税の公式の案内をまとめます。

この記事は、投資をすすめるものではありません。特定の銘柄や売買の手法をすすめるものでもありません。

検証で 1 位の設定は +31.2%、同じ設定を後半 5 年に当てると −5.0%、1 通りだけ試した場合の後半は −4.8%、検証でプラスに見えた割合は 45% から 88% へ、前半で最下位の設定の後半は −5.6%、コードに誤りを 1 か所入れると後半が +28.0%、の 6 つの数字
実験の結果のまとめ。数字はすべて、乱数で作った値動きでの編集部の計算撮影・作図: 編集部

実験: 乱数の値動きを「検証」する

条件

1 乱数で値動きを作る、2 174 通りを試す、3 1 位の設定を選ぶ、4 後半で確かめる、の 4 つの手順。下に、助走 200 日、前半 1,260 日(検証)、後半 1,260 日(確認)に色分けした値動きの線
実験の流れ。設定を選ぶのは前半だけ。下の線は 10,000 通りのうち 1 通り目の値動き撮影・作図: 編集部

確かめたいのは、「検証で成績の良い設定が見つかった」ことに、どれだけの意味があるかです。そこで、過去の値動きから先を読む手がかりが何もない値動きを、乱数で作りました。

項目 中身
値動き 乱数で作った 10,000 通り。毎日、上がるか下がるかは半々で、前の日までの動きとは関係がない。1 日の動きの大きさは 1.2% ほど(対数の値動きが平均 0・標準偏差 1.2% の正規分布)
期間の分け方 1 通りは 2,720 営業日。助走 200 日、前半 1,260 日(約 5 年)、後半 1,260 日(約 5 年)
売買のルール 2 本の移動平均(直近の何日かの平均)を比べる。短い線が長い線より上のあいだだけ持つ
設定 短い線 5〜50 日(5 日きざみ)と、長い線 20〜200 日(10 日きざみ)の組み合わせのうち、長い線のほうが長い 174 通り
手数料とずれ ずれは、注文した値と、実際に売買が成立した値の差。売りでも買いでも、1 回につき合わせて 0.1% を引く
手順 前半で 174 通りをすべて試し、成績が 1 位の設定を選ぶ。後半は、その設定のまま 1 回だけ動かす
乱数の種 乱数の出方を決める最初の数。同じ種なら、同じ値動きになる。20261012 に固定し、2 回動かして結果が一致することを確かめた
  • 買って持ち続けた場合の後半 5 年は、中央値が −0.5%、プラスだった割合が 49.6% でした。上がるか下がるかが半々の値動きになっています。
  • 移動平均のルールは、よく知られた単純な例として使いました。このルールをすすめるものでも、否定するものでもありません。

結果 1: 試す設定を増やすと、検証の成績だけが上がる

横軸が前半で試した設定の数(1 から 174・対数)、縦軸が成績の中央値の折れ線グラフ。検証の線は 1 通りの −3.7% から 174 通りの +31.2% まで上がる。後半の線は −5% 前後で横ばい
試した設定の数と成績。青い線が検証(前半)の 1 位、だいだいの点線が同じ設定の後半撮影・作図: 編集部
試した設定の数 検証(前半)の 1 位 検証でプラスに見えた割合 後半の成績 後半でプラスだった割合
1 通り −3.7% 45.1% −4.8% 43.6%
5 通り +11.1% 64.7% −4.8% 43.4%
20 通り +20.1% 76.4% −4.4% 43.9%
50 通り +25.1% 82.1% −4.6% 43.7%
174 通り +31.2% 87.7% −5.0% 43.2%
  • 174 通りをすべて試すと、検証の 1 位は +31.2% でした。値動きの 87.7% で、プラスの設定が見つかっています。
  • 同じ設定を後半に当てると −5.0% で、プラスだったのは 43.2% でした。1 通りだけ試した場合(−4.8%・43.6%)と、ほぼ変わりません。
  • 5・20・50 通りの行は、174 通りの中から乱数で選んだ設定だけを試した場合です。
  • 後半の成績は、値動きによって大きくばらつきます。真ん中の半分は、−21.9% から +16.9% のあいだでした。
試した設定の数ごとの棒グラフ。検証で 1 位の設定がプラスだった割合は、1 通りで 45.1%、5 通りで 64.7%、20 通りで 76.4%、50 通りで 82.1%、174 通りで 87.7%。後半でプラスだった割合は、どれも 43% 台
成績がプラスだった値動きの割合。検証では試す数とともに増え、後半は 4 割台のまま撮影・作図: 編集部

後半が 0 より少し低い理由は 2 つあります。1 つは、売買のたびに 0.1% を引いていることです(後半の売買は中央値で 26 回)。もう 1 つは、この計算では、成績が小さいマイナスになる値動きが多く、大きいプラスになる値動きが少ないことです。手数料とずれを 0 にして計算し直しても、後半は −2.0% で、プラスだったのは 47.3% でした。

結果 2: 検証の順位は、次の期間の手がかりにならない

左は前半 5 年の棒グラフで、1 位の設定が +31.2%、最下位の設定が −32.6%。右は後半 5 年の棒グラフで、1 位の設定が −5.0%、最下位の設定が −5.6%
前半で 1 位の設定と最下位の設定。前半は大きく違い、後半はほぼ同じ撮影・作図: 編集部
  • 前半で最下位だった設定は、前半が −32.6%、後半が −5.6% でした。1 位の設定の後半(−5.0%)とほぼ同じです。
  • 前半の 1 位が、後半で 174 通りの上半分に入ったのは 47.5% でした。前半の順位は、後半の手がかりになっていません。

なぜこうなるか

左はコイン投げ。174 人が 10 回ずつ投げると、9 回以上が表になる確率は 1 人あたり約 1.1%、そういう人が 1 人以上出る確率は約 85%、その人が次も当てる確率は約 1.1%。右は設定選び。174 通りを試すと、値動きにたまたま合った設定が 1 位に選ばれ、次の期間に合うかは運で決まる
過剰最適化のしくみ。たくさんの中から 1 位を選ぶと、たまたま当たったものを選びやすい撮影・作図: 編集部

コイン投げに似たしくみです。174 人が 10 回ずつ投げると、9 回以上が表になる人が 1 人以上出る確率は約 85% です。その人が次の 10 回でも当てる確率は、約 1.1% です。

たくさんの設定から 1 位を選ぶと、値動きにたまたま合った設定を選びやすくなります。これを過剰最適化(カーブフィッティング)といいます。設定が良くなくても、試した数が多いだけで、検証の成績は良く見えます。

ただし、174 通りの設定は、174 人のコインほどばらばらではありません。日数の近い設定は、成績も似るからです。ばらばらなら、プラスの設定はほぼ必ず見つかるはずですが、この計算では 87.7% でした。

検証の成績を見るときの点検

5 つの点検。1 期間を分けたか、2 試した数を数えたか、3 手数料とずれを入れたか、4 未来のデータを見ていないか、5 やめる条件を先に決めたか。それぞれのやり方と、編集部の計算の数字
検証の成績を見るときの点検。緑の行は、編集部の計算の数字撮影・作図: 編集部
  • 期間を分ける: 設定は前半だけで選びます。後半の結果を見てから設定を直すと、後半も「検証」になり、確かめる期間がなくなります。
  • 試した数を数える: 試した設定の数と、すべての結果を残します。1 位だけを見ても、たまたまかどうかは分かりません。
  • 手数料とずれを入れる: 編集部の計算では、1 回に引く割合を 0.1% から 0.3% にすると、後半は −5.0% から −9.4% になりました。
  • 未来のデータを見ていないかを確かめる: 乱数の値動きを入れて、後半が 0 のまわりになるかを見ます。次の項で説明します。
  • やめる条件を先に決める: 検証は、本番の成績を約束しません。本番で動かすかどうかは、別の判断です。動かす場合は、損の上限と、やめる条件を先に書いておきます。

やめる条件は、この仕組みを使うこと自体をやめる基準です。あとの節の「止める条件」は、動いているプログラムをその場で止める基準です。

AI が書いた検証のコードは、乱数で確かめる

横軸が前半で試した設定の数、縦軸が後半の成績の中央値の折れ線グラフ。誤りのあるコードは 1 通りの +2.1% から 174 通りの +28.0% まで上がる。正しいコードは −5% 前後で横ばい
「未来のデータを見る」誤りを 1 か所入れたときの、後半の成績。乱数なのに上がっていく撮影・作図: 編集部

検証のコードによくある誤りに、「未来のデータを見る」ものがあります。その日の終わりの値で売買を決めたのに、その日の値動きを受け取ったことにする誤りです。本番では、同じことはできません。

編集部は、この誤りを 1 か所だけ、わざと入れて計算し直しました。乱数の値動きなのに、174 通りの 1 位は後半でも +28.0% になり、77.6% がプラスでした。正しいコードでは −5.0% です。

AI に検証のコードを書かせたら、同じ確認を頼めます。

テキスト
この検証のプログラムに、乱数で作った値動き(毎日の動きが平均 0 で、前の日と関係がないもの)を 1,000 通り入れてください。
期間を前半と後半に分け、設定は前半だけで選び、後半は選んだ設定のまま 1 回だけ動かしてください。
後半の成績の中央値と、プラスだった割合を出してください。
試した設定の数と、すべての結果を CSV に残してください。

乱数の値動きで、後半がはっきりプラスになるなら、コードのどこかに誤りがある疑いがあります。

仕組みを作るときの安全

値動きを受け取る、売買を決める、上限を確かめる(関所)、注文を出す、取引所・証券会社、の順に並んだ流れ。下に、止めるスイッチ、API キーの権限(売買と照会だけ。出金や送付の機能は付けない)、記録と通知
自動売買の仕組みの全体。緑の枠は、人が先に決める所撮影・作図: 編集部

大きな損は、売買のルールの負けだけでなく、プログラムの事故からも来ます。米国の証券取引委員会(SEC)の 2013年10月16日の発表によると、Knight Capital は 2012年8月1日、取引の開始から 45 分のあいだに、212 件の顧客の注文を処理しようとして 400 万件を超える注文を出し、4 億 6,000 万ドルを超える損失を出しました。SEC は、市場への接続のリスクを抑える十分な備えがなかったとしています。

止める条件を先に決める

1 損の上限、2 注文の大きさ、3 注文の回数、4 エラーの連続、5 値の異常、6 手で止める、の 6 つの枠。それぞれに、起きたことと、そのときにすることが書かれている。下に、止まったあとの再開は人が原因を見てから、という帯
止める条件の 6 つ。起きたことと、そのときにすることを、作る前に決めておく撮影・作図: 編集部
  • 上限と止める条件は、売買のルールとは別のプログラムにします。ルールを直しても、上限が変わらないようにするためです。
  • AI が書いたコードは、検証用の環境だけで動かして確かめます。わざと上限を超える注文を出させ、止まることと、通知が届くことを見ます。
  • 本番への切り替えは、人が設定で行います。プログラムが自分で切り替えられる作りにはしません。
  • 画面で注文するときの確認の画面は、API にはありません。立花証券は、入力内容の確認を「お客様側のプログラムで実施する前提」としています。
  • 判断の理由・注文・約定(売買の成立)・エラーは、すべてファイルに残します。検証との差を、後で確かめられます。

API キーは、出金できない権限にする

API キーは、プログラムが口座を操作するための合言葉です。漏れると、他人に口座を操作されます。

  • キーを作るときに、使える機能を選べる取引所があります。bitFlyer のドキュメントは「API キーを作成する際には、キーごとにパーミッションを指定することができます」としています。GMOコインは「APIキー発行時に指定した機能のみをAPIで呼び出すことができます」としています。
  • 売買と照会に使う機能だけを選び、出金や送付の機能は選びません。bitFlyer には、そのキーで呼び出せる API の一覧を取る API があります。作ったあとに確かめられます。
  • GMOコインは、設定で「API呼出ができるIPアドレスを制限することができます」としています。
  • キーは、コードの中に書きません。AI との会話にも貼りません。くわしくはAI コーディングの道具を安全に使うで説明しています。

API の条件は、会社ごとに違う

API 公式の資料にある条件(2026年10月12日に確認)
三菱UFJ eスマート証券「kabuステーション API」 「発注APIは5件/秒」。専用のソフトを「常に」「起動しておく必要があります」。ソフトと「同一PCでご使用ください」。動作確認のための「検証用環境」がある
立花証券「e支店・API」 要求の受付に「流量制限(秒10件)」。「過負荷であると当社が判断した場合、口座利用を停止させて頂く場合がございます」
bitFlyer「bitFlyer Lightning API」 注文を出す・すべて取り消す 3 つの API は「合計で5 分間で 300 回」

例として挙げました。すすめる会社を示すものではありません。

法律と税は、公式の案内を先に読む

人に売る・貸すとき

金融庁の「金融商品取引業者等向けの総合的な監督指針」(令和8年10月)の VII-3-1(2)「登録の要否の判断に当たっての留意点」は、次の文で始まります。

登録の要否については、投資助言・代理業に係る一連の行為における当該行為の位置付けを踏まえた上で総合的に判断する必要があり、一連の行為の一部のみを取り出して、直ちに登録が不要であると判断することは適切でないことに留意するものとする。

そのうえで、投資助言・代理業に該当しない行為として、次の行為を挙げています。

不特定多数の者を対象として、不特定多数の者が随時に購入可能な方法により、有価証券の価値等又は金融商品の価値等の分析に基づく投資判断(以下「投資情報等」という。)を提供する行為

これには、次のただし書きがあります。

ただし、例えば、不特定多数の者を対象にする場合でも、インターネット等の情報通信技術を利用することにより個別・相対性の高い投資情報等を提供する場合や、会員登録等を行わないと投資情報等を購入・利用できない(単発での購入・利用を受け付けない)ような場合には登録が必要となることに十分に留意するものとする。

例の 1 つが「投資分析ツール等のコンピュータソフトウェアの販売」で、次の注が付いています。

販売店による店頭販売や、ネットワークを経由したダウンロード販売等により、誰でも、いつでも自由にコンピュータソフトウェアの投資分析アルゴリズム・その他機能等から判断して、当該ソフトウェアを購入できる状態にある場合。一方で、当該ソフトウェアの利用に当たり、販売業者等から継続的に投資情報等に係るデータ・その他サポート等の提供を受ける必要がある場合には、登録が必要となる場合があることに留意するものとする。

財務省北海道財務局は、注意の呼びかけ「自動売買ソフトの販売・レンタル業者にご注意!」の中で、次のように書いています。

株取引や外国為替証拠金取引(FX)等を自動で行うソフトウェアについて、会員制で販売又はレンタルする行為は、一般的には金融商品取引法上の投資助言・代理業に該当すると考えられます。

自分の注文でも気をつけること

証券取引等監視委員会は、「変動操作取引とみなされるおそれがある」行為の例に、見せ玉を挙げています。説明は、「板情報画面に表示される価格帯に、約定させる意図のない、優先順位が低い買い注文をまとまった数量で発注する行為」です。仮装売買は、次のように説明しています。

同一人が、権利の移転を目的とせず、同一の有価証券について同時期に同価格で売りと買いの注文を発注して売買をすることは、「仮装売買」として、金融商品取引法第159条第1項で禁止されている行為です。

プログラムには、注文の回数の上限と、注文を出す前の確認を入れておきます。

税

国税庁の案内の言葉です。

株式は、タックスアンサー No.1463(令和8年4月1日現在法令等)です。上場株式等の譲渡益の税率と、その注です。

20%(所得税15%、住民税5%)

平成25年から令和29年までの各年分については、復興特別所得税を所得税と併せて申告・納付します。

FX は、タックスアンサー No.1521(令和8年4月1日現在法令等)です。対象の取引と、差益が生じた場合の扱いです。

金融商品取引法上の「市場デリバティブ取引」または「店頭デリバティブ取引(「第一種金融商品取引業者」または「登録金融機関」を相手方とする取引に限ります。以下同じです。)」に該当する外国為替証拠金取引(FX)の差金等決済(決済または行使もしくは放棄もしくは譲渡の総称です。)により生じた損益の課税関係は、次のとおりです。

他の所得と区分し、「先物取引に係る雑所得等」として、所得税15パーセント(他に地方税5パーセント)の税率で課税されます(申告分離課税)。

どちらの取引にも該当しない場合の差益は、次のように書かれています。

一般的には、雑所得として総合課税の対象となりますので、課税総所得金額に応じた税率(超過累進税率)で課税されます。

暗号資産は、「暗号資産等に関する税務上の取扱い及び計算書について」(令和7年12月)です。

暗号資産を売却又は使用することにより生ずる利益については、事業所得等の各種所得の基因となる行為に付随して生じる場合を除き、原則として、雑所得に区分され所得税の確定申告が必要となります。

自動売買は、取引の数が増えます。記録は最初から残し、申告のしかたは税務署や税理士に確かめてください。

注意

  • 点検の表をすべて満たしても、もうかることにはなりません。点検は、検証の成績を当てにしすぎないためのものです。
  • 法律・税・API の条件は変わります。公式のページを自分で開いて、最新の内容を確かめてください。

まとめ

参考にした公式の情報

XFacebookはてブLINE

執筆者

佐々木 航@w_sasaki

with Claude Code

プロフィール

株式会社Game 代表取締役。工学部出身で、21歳で起業してからシステム会社の経営一筋で8期目。アプリの受託開発から始め、いまはAIを使ったシステムソリューションを手がけています。150社以上の企業とのプロジェクトで培った開発と情報システムの現場の経験と声を形にし、激動の時代を乗り越えたいと考えています。

この記事は、Claude Code を使って執筆しました。画面の画像は、検証環境で実際に操作して撮影したものです(引用の画像は出典を記載しています)。内容の誤りはお問い合わせからお知らせください。

連載

AIで作る
全 4 回の目次
  1. 1AI でアプリを作って、ストアに出すまで 日数・費用・審査でつまずく所
  2. 2AI で 4 コマ漫画を作ってみた 任せられることと、人がすること
  3. 3AI に Blender を使わせて商品画像を作る 画面なしで 9 枚描いて測った
  4. 4AI で自動売買の仕組みは作れる。でも検証の成績は当てにならない 乱数で確かめた(この記事)