ChatGPTやClaudeで売買アルゴリズムを作る方法:収益性を検証し、過剰適合を避ける
再現可能なPython・Pine Scriptのトレード研究プロジェクト。明確なルール、実際のバックテスト結果、費用、ウォークフォワード検証、モンテカルロ分析を通じて過剰適合を調べます。
はい。ChatGPTやClaudeは売買アルゴリズムの開発を支援でき、その戦略が利益を出すこともあります。今回実行したPythonの研究では、固定したビットコインのブレイクアウトルールが、2024年1月1日から2026年7月31日までに、モデル上の取引費用を差し引いて11.55%のリターンを上げました。一方、日次終値で測るドローダウンは29.72%に達し、当初の配分で買って保有する比較基準よりリターンは低くなりました。これは実際に行った過去データの計算であり、予測でも、AIの提供元に売買上の優位性がある証拠でもありません。その違いを調べるために用いたルール、計算、取引会計、テストを解説します。
この記事で得られるもの
- 55日ブレイクアウトで入り、20日チャネルで退出する、仕様を明確にした戦略。そのPython会計モデルと、Pine Scriptとの違い。
- 負けトレード、手数料、未決済ポジションの会計例、買い持ちとの比較を含む、実際の結果。
- 開発段階の全9設定、4つのウォークフォワード区間、15,000本の条件付きブートストラップ経路。都合の良い資産曲線だけを選んだものではありません。
- ChatGPT、Claude、Codex、Claude Code向けの再利用できるプロンプトと、成果を確認する具体的な合格条件。
- この研究で分かること、未解決のこと、将来に向けた検証で記録すべきことについての明確な答え。
答えを自分で確かめられる、完全な売買研究プロジェクト
「利益の出る売買ボットを作って」という依頼は、ルールを考えること、実装すること、資金を託す価値があるかを立証することの三つを一緒にしています。アシスタントは、最初と最後を未解決のまま、説得力のあるコードを出すことができます。ここでは三つを分けます。単純な戦略を固定し、手順を記録した過去検証を実行し、結果の裏にある記録を公開します。
対象は、日次で動く、ビットコインのロングのみのブレイクアウトシステムです。経済的な仮説は控えめです。時折発生する持続的なトレンドが、繰り返すブレイク失敗の費用を回収するかもしれない、というものです。不快に感じる部分も、この発想の一部です。トレンドフォローは大半の取引で負け、少数の大きな勝ちに依存することがあります。そのため、口座の最終残高だけでなく、取引損益の分布も調べます。
この研究では、戦略ルール、市場の観測値、模擬約定、口座結果を分けて扱います。出典、日次入力、実行可能な15のテスト、全実験の記録を保存しています。以下では計算を説明し、結論を左右する取引と会計の具体例を示します。
これはAIを使った開発の研究であり、どの資産が上がるかをチャットボットに尋ねる実験ではありません。コードはCodexで開発しました。同じ課題をChatGPTとClaudeに実行させたわけでも、投資成績を測定したわけでも、実行時に言語モデルで取引を選んだわけでもありません。書き上げた後のアルゴリズムは、決定的なルールに従います。
実装間の違いを照合する手順は、PythonとPine Scriptのバックテスト結果が異なる理由で詳しく扱います。
都合よく利益を生む曖昧さを残さない仕様から始める
戦略の説明では、取引一覧を変え得る細部まで決める必要があります。「55日高値で買う」だけでは不十分です。ヒゲで触れてもよいのか。現在の足をチャネルに含めるのか。確定した日足を、その足の過去の始値で買えたことにしてよいのか。今回のルールでは、確定した終値が過去の高値を上回った後、次の始値を待ちます。
仕様と評価手順は、この作業で成績を計算する前に記述しました。それより先に、二つのデータ修正を行いました。データソースの変更と、欠けた4時間足への対応です。どちらも研究記録に保存しています。結果を良くするために売買ルールを変更していません。ただし、これは研究判断の内部的な順序の記録です。独立したタイムスタンプ付きの事前登録でも、前向きの実験でもありません。
| 要素 | 正確なルール |
|---|---|
| 商品と時刻 | BTC-USDT。6本の4時間足をUTC日次のOHLC足に集約する。 |
| エントリー | フラット時、確定終値 > 直前55日足の最高HIGH。現在の足は除く。 |
| 退出 | ロング保有時、確定終値 < 直前20日足の最低LOW。現在の足は除く。 |
| 約定時刻 | 終値でシグナル。次の日次の元の始値を不利なスリッページで調整し、売買する。 |
| ポジション | ロング1つ。小数のBTCを許容し、レバレッジや空売りは使わない。退出は全量。 |
| エントリー予算 | 手元現金の90%にエントリー手数料も含める。数量 = 0.9 × 現金 / [約定価格 × (1 + 手数料率)]。 |
| 主設定の費用 | 片側ごとに手数料10ベーシスポイント、不利なスリッページ5ベーシスポイント。現在の取引所の提示額ではなく仮定。 |
| 口座の境界 | 報告する各期間を10,000 USDT、ポジションなしで開始。それ以前の足は指標の準備だけに使う。 |
| 期末評価 | 最後の日次終値で時価評価。強制決済せず、仮の退出費用も引き当てない。 |
| 除外する費用 | 税金、固定の利用料、データ、ホスティング。現金利息、ファンディング、借株料はない。 |
想定した執行の境界は理想化されています。連続取引の暗号資産市場では、確定した日足終値と次の日足始値は隣り合いますが、実際にはデータ受信、計算、発注に時間がかかります。5ベーシスポイントのスリッページは仮定であり、その遅延と注文量で想定価格の執行が可能だという証拠ではありません。
バックテストを始める前に、データ検査で研究期間が変わった
入力は、humblefool06がHugging FaceでCC BY 4.0と宣言して公開している、第三者のBTC-USDT履歴アーカイブです。リビジョン9f491eb5340dd6a24f27fde24edf098e1e785443を固定し、公開者のデータセットカードを保存し、SHA256ハッシュを記録しました。TensorParadigmが4時間足をUTC日足に集約しています。この出典と加工方法を研究記録に残しています。[1] [9]
網羅性の検査で、2020年2月19日に12:00 UTCの構成足がないと分かりました。価格を作らず、その日とそれ以前をすべて除外しました。そのため、正規化した入力は2020年2月20日から始まり、完全な71本の準備用日足を経て、開発期間を5月1日からにしています。保持する全2,354日分には、それぞれ正確に6本の構成足があります。タイムスタンプの順序、重複、有限値、OHLCの整合性は、成績計算より前に検査しました。
ハッシュで特定できるのは、使ったデータのバイト列です。公開者の価格が正しいことまでは証明しません。この第三者アーカイブを取引所記録と独立に照合したわけではありません。より強い投資研究なら、別途取得したデータで分析を繰り返し、差異を調べるべきです。再現性とデータの正確性は関連しますが、異なる要件です。
| 区間 | 日付 | 使い方 |
|---|---|---|
| 開発 | 2020年5月1日〜2022年12月31日、975日 | 固定ルールと、事前指定した全9パラメーター設定を報告。 |
| 検証 | 2023年1月1日〜12月31日、365日 | 変更しない55/20ルールを報告。主パラメーターの修正には使わない。 |
| 留保した過去評価 | 2024年1月1日〜2026年7月31日、943日 | 固定ルールの主要結果と、ブートストラップの入力。 |
| 副次的ウォークフォワード | 2023、2024、2025年、2026年1〜7月 | 過去データで選び、次の区間を評価。上の区間と重複する。 |
固定ルールの最後の区間は「留保した過去評価期間」と呼びます。あくまで、大まかな市場史が既に知られている過去データです。さらに、後で行う副次的なウォークフォワード分析は、重なる日付を再利用します。この記事の全分析を通じて、一度も触れていない最終サンプルは存在しません。独立したライブ検証と呼べば、設計を過大に表現することになります。
売買ボットを書く前に、アシスタントに曖昧さを解消させる
ChatGPTやClaudeは、研究計画をコードに変え、台帳を説明し、テストを提案する手助けができます。CodexやClaude Codeは、コードベース内で作業し、ファイルを編集し、コマンドを実行できます。文書で確認できる開発能力は、この作業で試す根拠にはなりますが、どの製品が最も利益の出る戦略を書くかを示すものではありません。[3] [4]
固定した仕様を渡し、実装前に未決定の選択肢を挙げるよう求めます。この研究では、等号を含むかどうか、過去の足だけの窓、次の始値での執行、手数料込みの現金予算、期末未決済ポジションの扱いが重要です。このどれかを黙って作り上げた回答は、自信に満ちていても不良実装です。
添付の固定戦略仕様を実装してください。まず、シグナル、約定、数量決定、報告損益を変え得る曖昧な点を挙げてください。フィルターの追加やパラメーターの最適化はしないでください。各入力がいつ利用可能になるかを明示し、シグナル、執行、会計、報告を分離してください。過去成績を実行する前に、時系列処理と現金照合の合成テストを作ってください。完全なコード、仮定、実験ログを返してください。以下のプロンプトは再利用できる研究依頼であり、統制したモデル比較の会話記録ではありません。モデルとバージョン、渡したファイル、採用した変更、その後の全戦略変更を実験ログに残します。そうしなければ、「一つのアイデア」が、見栄えのよいバックテストを探す何十回もの未記録の試行に変わりかねません。
出来事の順序を軸にPythonバックテストを作る
エンジンの日次ループは、意図した順序を持ちます。まず昨日の未執行注文を今日の始値で執行し、今日の終値で口座を評価し、その後で今日の判断を計算します。日次終値を使いながら、同じ足のそれ以前に約定することを防ぎます。両方のチャネルから、判断中の足を除外します。以下の抜粋は、特に間違えやすい二つの計算です。
# Called at the completed close, after any pending open fill.
entry_level = max(b.high for b in bars[index-entry_lookback:index])
exit_level = min(b.low for b in bars[index-exit_lookback:index])
if not quantity and bar.close > entry_level:
pending = {"side": "BUY", "signal_date": bar.date}
elif quantity and bar.close < exit_level:
pending = {"side": "SELL", "signal_date": bar.date}
# Execute pending only on the NEXT loop iteration, at that bar's open.エントリー数量は、90%の予算に手数料を含めます。手数料率をc、不利な調整後の買い約定価格をPとすると、数量は0.9 × 現金 / [P × (1 + c)]です。現金の90%で買った後に手数料を引くと、指定予算を超えます。スリッページはPに含まれているので、その推定金額をもう一度引けば二重計上になります。
commission = commission_bps / 10000
slippage = slippage_bps / 10000
fill_price = bar.open * (1 + slippage) # adverse BUY fill
qty = allocation * cash / (fill_price * (1 + commission))
notional = qty * fill_price
fee = notional * commission
cash -= notional + fee15の合成テストを実行しました。未来データの変更、現在の足の除外、等号を含まないブレイク、次の始値での約定、不利なスリッページ、手数料込みの数量決定、決済損益、未決済の時価評価、同予算の比較基準、最後の未約定シグナル、準備期間の分離、無効データ、ブートストラップの計算を対象にしています。確認できるのは、特定の時系列処理と会計の性質です。市場での優位性ではありません。
魅力的な図より多くを語る不変条件があります。日付tより後の価格を変えても、tより前の判断や約定が変わってはいけません。もう一つは、浮動小数点の許容誤差内での照合です。初期資産 + 決済済み取引の純損益 + 未決済ポジションの評価損益 = 最終資産。この恒等式を、ランナーはシミュレーションするすべての口座で検査します。
違いを明示したPine Scriptの実装
標準の日足チャートで同じ過去チャネルのエントリーと退出の発想を表す、Pine Scriptの実装も作成しました。確定した足を使い、通常の注文を次の足に送ります。模擬約定を決めるのは、TradingViewのストラテジー用ブローカーエミュレーターと設定です。チャートデータや足内の値動きの仮定が影響する場合があります。[2]
この補助スクリプトをTradingViewでコンパイルしておらず、Strategy Testerの結果も取得していません。この記事の成績の数値は、すべてPythonエンジンから得ています。Pineソースはコードとしてレビューしましたが、それは実行より範囲の狭い確認です。
意図して一致させていない点が二つあります。Pineのスリッページ設定は固定ティック数ですが、Pythonは価格比例の5ベーシスポイントです。今回作成したPine版は0ティックで、主な費用モデルを再現しません。また、Pineの標準的な資産90%の数量設定は、エントリー手数料込みで現金90%を使う予算とも異なります。この違いがあるため、口座リターンが等価だとは主張できません。
適切なエンジン間比較では、まずデータ配信、UTC境界、準備用履歴、期間、数量の規約、手数料をそろえます。リターンの前に、シグナル日付と約定台帳を比較します。取引が違うなら、最終残高が似ていても、検証ではなく偶然の一致です。
実際の結果:サンプルでは利益が出たが、買い持ちを下回った
固定アルゴリズムは、943日間の留保期間で10,000 USDTを11,154.96 USDTにしました。11.55%はその全期間の累積リターンであり、年率ではありません。日次終値で測った最大ドローダウンは29.72%でした。8取引を決済して3勝、期末はフラットです。したがって、この区間のプラスの純損益は、期末の含み益に依存していません。
比較基準は、最初の始値で、エントリー手数料込みの初期現金90%を投資し、そのまま保有します。リターンは43.66%、日次終値ベースのドローダウンは51.05%でした。常に90%へリバランスしたわけではありません。戦略の日次平均投資比率は33.62%で、比較基準は投資を続け、配分比率が価格とともに変動しました。リターンもドローダウンも低いことはトレードオフです。アルファの証拠でも、リスクをそろえた比較でもありません。
下表の各列は、ポジションなしから始まる別口座です。三つのリターンを複利計算して、連続した成績にしてはいけません。リセットと期末ポジションが違うためです。期間の長さも異なるので、年率として比較することもできません。
| 指標 | 開発:2020年5月〜2022年 | 検証:2023年 | 留保:2024年1月〜2026年7月 |
|---|---|---|---|
| 口座の純リターン | +170.39% | +16.55% | +11.55% |
| 最終資産、USDT | 27,039.04 | 11,654.60 | 11,154.96 |
| 日次終値ベースの最大ドローダウン | 41.48% | 24.27% | 29.72% |
| 決済済み件数 / 期末未決済件数 | 5 / 0 | 4 / 1 | 8 / 0 |
| 決済済み取引の勝率 | 60.00% | 25.00% | 37.50% |
| 決済済み取引の純プロフィットファクター | 4.05 | 0.66 | 1.28 |
| 日次平均投資比率 | 41.68% | 57.59% | 33.62% |
| 当初90%配分で買い持ちしたリターン | +82.46% | +139.71% | +43.66% |
| 買い持ちの日次終値ベース最大ドローダウン | 75.56% | 18.90% | 51.05% |
2023年の結果は、取引要約が誤解を招く理由を示します。4つの決済済み取引は669.03 USDTの損失でしたが、未決済ポジションにエントリー費用控除後2,323.63 USDTの評価損益があり、口座は1,654.60 USDT増えました。仮の退出手数料は引き当てていません。決済済み取引のプロフィットファクター0.66と、口座全体のプラスのリターンは、同時に正しくなり得ます。
利益の出た口座を信用する前に、一つの負け取引を監査する
留保期間で最初のエントリーシグナルは、2024年1月2日に発生しました。1月3日の元の始値44,946.91 USDTを、5ベーシスポイント高い44,969.383455に調整して買っています。エントリーの総予算9,000 USDTで、約0.19993623 BTCを取得しました。買いの元本金額は8,991.008991 USDT、手数料は8.991009 USDTです。
1月22日の退出シグナルは、1月23日の約定につながりました。元の始値39,568.02は、不利な売りスリッページで39,548.23599になります。売却の元本金額は7,907.125205 USDT。手数料7.907125 USDTを引いた受取額は7,899.218080 USDTです。最初のエントリー現金費用9,000 USDTを引くと、純損失は1,100.781920 USDTです。使わなかった現金1,000 USDTと合わせ、フラットになった口座には8,899.218080 USDTが残りました。
| 記録 | 値 |
|---|---|
| エントリーシグナル → 約定 | 2024年1月2日 → 1月3日 |
| エントリー約定価格 / BTC数量 | 44,969.383455 / 0.19993623 |
| 買い元本金額 + 手数料 | 8,991.008991 + 8.991009 = 9,000.000000 USDT |
| 退出シグナル → 約定 | 2024年1月22日 → 1月23日 |
| 売却元本金額 − 手数料 | 7,907.125205 − 7.907125 = 7,899.218080 USDT |
| 取引の純損益 | 7,899.218080 − 9,000.000000 = −1,100.781920 USDT |
この台帳は、丸めたパーセンテージより優れた実装確認になります。シグナルの時刻、不利な価格、手数料の計算基礎、投入現金に対する取引リターン(−12.23%)と口座変化(−11.01%)の違いが分かります。アシスタントがこの金額を照合できないなら、その先の最適化は、信頼できない計算を複雑にするだけです。
費用は重要だが、今回は利益の集中も大きな論点
留保期間の主設定の実行では、モデルで実際に計上した手数料は合計171.19 USDTでした。元の始値から不利にずれた価格差を数量で加重した額は85.59 USDTです。後者は執行基準に対する診断値であり、既に不利な約定価格に含まれています。売買の元本金額の合計は初期資金の17.12倍で、片側の小さな費用が積み上がる理由を示します。
同じルールを三つの仮定費用で再実行しました。ゼロコストは13.99%、主設定は11.55%、高コスト設定は9.16%のリターンです。それぞれ別のシミュレーションです。費用は購入数量と、その後の再投資に使える現金を変えます。最終残高の差は、主設定の実行の手数料とスリッページを足した額とは単純に一致しません。
| 手数料 / 不利なスリッページ | 純リターン | 日次終値ベースの最大ドローダウン |
|---|---|---|
| 0 / 0ベーシスポイント | +13.99% | 28.77% |
| 10 / 5ベーシスポイント:主設定 | +11.55% | 29.72% |
| 20 / 10ベーシスポイント | +9.16% | 30.66% |
勝った3つの決済済み取引は5,244.53 USDTを稼ぎ、残る5つは4,089.57 USDTを失いました。純利益は1,154.96 USDTです。少数の勝ちへの依存はトレンドフォローに整合的かもしれませんが、8取引では、その勝ちがどれほど確実に再来するかの証拠は乏しいままです。上位3件の損益を引くのは集中度の診断です。その取引を飛ばしても後の数量が変わらなかったとする、有効な仮想口座ではありません。
これらのリターンには固定費を含めていません。実口座では、処理に実際に帰属するデータ、ソフトウェア、モデル利用、ホスティングの費用を引き、適用される税制も考えます。決定的な日次ルールは、日足1本ごとにLLMのAPIを呼ぶ必要がありません。普通のコードでできる計算に、継続費用を重ねないことです。
過剰適合を避けるには、勝者に感心するより探索を記録する
過剰適合は、正式な最適化プログラムを走らせる前から始まりがちです。別の資産を試し、開始日を変え、フィルターを足し、結果を見て魅力的な案を残す。その一つ一つが、実効的な探索の範囲を増やします。通常のホールドアウトも、繰り返し見れば開発データになり得ます。バックテスト過剰適合の研究は、この選択問題を扱います。訓練・テストを分けたすべての手順に、合格証を与えるものではありません。[5]
開発では9設定を固定しました。エントリー40、55、70日と、退出10、20、30日の組み合わせです。表にすべての純リターンを示します。順位にかかわらず、55/20が主ルールのままです。複数の設定で同じ取引が生じるので、9行は9つの独立した確認ではありません。
| エントリー期間 | 退出10日 | 退出20日 | 退出30日 |
|---|---|---|---|
| 40日 | +140.64% | +164.32% | +123.77% |
| 55日 | +146.06% | +170.39%:固定主設定 | +161.82% |
| 70日 | +146.06% | +170.39% | +161.82% |
この開発期間では、9設定すべてで利益が出ました。この狭い近傍を理解する材料にはなりますが、最適値や、資産・相場局面をまたぐ頑健性は示しません。主設定の開発期間の決済取引は5件で、パラメーターについて主張する根拠として特に薄いものです。正式なバックテスト過剰適合の確率や、選択を補正した有意水準は推定していません。
自分のプロジェクトでは、最終表に残らなかった試行も保存します。後のサンプルを見てルールを変えたなら、改訂戦略には正直に、そのサンプルを使ったと明記します。ファイル名を変えても、情報の壁は元に戻りません。
この戦略仕様、実験ログ、コードを確認し、先読み、テストセットの反復利用、未記録の選択を調べてください。入力の利用可能時刻と約定時刻を追跡してください。実装バグが疑われる箇所ごとに、失敗を再現する最小テストデータを作ってください。バグと、モデル上の仮定・投資仮説を分けてください。成績を改善するためにパラメーターを変えないでください。サンプルが裏付けていない結論を指摘してください。ウォークフォワード検証は選択手順を評価する。それでも負ける
副次的な実験では、別の問いを立てます。毎年、研究者が過去データから9設定の一つを選んだらどうなるか、という問いです。各区間の訓練は2020年5月1日に始まり、テスト年の前年12月31日に終わります。純リターンが最大の設定を選び、同率ならドローダウンが小さいもの、さらに同じならエントリー・退出期間の順で決めます。次の年で評価し、その区間内では再調整しません。時系列の分割は情報の流れる方向を守ります。[6]
| テスト区間 | 訓練終了 | 選択したエントリー / 退出 | テスト純リターン | テスト最大DD | 買い持ちリターン |
|---|---|---|---|---|---|
| 2023 | 2022年12月31日 | 55 / 20 | +16.55% | 24.27% | +139.71% |
| 2024 | 2023年12月31日 | 55 / 30 | +38.44% | 19.37% | +108.88% |
| 2025 | 2024年12月31日 | 55 / 10 | −4.02% | 15.82% | −5.83% |
| 2026年1〜7月 | 2025年12月31日 | 55 / 30 | −14.24% | 15.35% | −25.52% |
選ばれたアルゴリズムは、2025年に4.02%、2026年1〜7月に14.24%を失いました。選択の順序が時間的に正しくても、期待外れになり得ます。過去のリターンを最大化しても、次の相場でその設定が優位だという証拠にはなりません。
各区間は10,000 USDT、ポジションなしから始めます。独立にリセットしたテスト口座であり、年をまたいで同じ口座がポジションと資産を持ち越すわけではありません。2026年は年の一部です。リターンを掛け合わせ、ライブ運用に相当する実績としてはいけません。
2024〜2026年のテスト日付は、主戦略の留保過去期間と重なり、後の訓練窓は以前のテスト年を含みます。明示した副次的診断であり、別の未使用ホールドアウトでも、主要結果の独立再現でもありません。
モンテカルロ分析:実際に何の不確実性を模擬したのかを示す
使うのは、依存のある観測値を再標本化する、固定長の循環ブロック・ブートストラップです。入力は、固定した主設定の943日分のポートフォリオ純リターンで、現金だけの日と費用も含みます。ブロック長を1、10、30日とし、それぞれシード20261018で、同じ943日の長さの経路を5,000本生成します。ブロックはサンプルの末尾から先頭に折り返せます。最後のブロックは必要な長さで切ります。[7]
各模擬経路で、抽出したリターンを複利計算し、独自のドローダウンを求めます。新たなBTC価格を模擬したり、ブレイクアウトシグナルを再実行したり、新しい順序で取引費用を再計算したりするものではありません。並べ替えるのは、観測済みのポートフォリオリターンです。1日ブロックは時系列の順序を捨てます。長いブロックは局所的な連続を残しますが、歴史的な相場局面全体は残しません。入力にない危機は、どれも追加できません。
模擬経路の最終損失比率は39.68%〜42.66%です。これは今回の再標本化実験の条件付き出力であり、今後943日に戦略が損失を出す確率の推定ではありません。ブロック長への感応度自体を残すべきで、最も安心できる列だけを選ぶべきではありません。
| ブロック長 | 最終リターン P05 / 中央値 / P95 | 最大DD 中央値 / P95 | 損失比率 | DD ≥20%の比率 |
|---|---|---|---|---|
| 1日 | −44.45% / +11.82% / +126.07% | 34.20% / 56.59% | 39.72% | 94.12% |
| 10日 | −41.73% / +10.97% / +124.93% | 32.65% / 53.35% | 39.68% | 93.20% |
| 30日 | −46.51% / +8.87% / +151.72% | 34.38% / 56.34% | 42.66% | 94.60% |
5,000経路で、損失比率のモンテカルロ標準誤差は約0.69〜0.70パーセントポイントです。√[p(1−p)/5,000]で計算します。これは有限の試行回数によるノイズを測る値です。データソース、売買ルール、将来の相場局面、再標本化の仮定の適切さに関する不確実性は含みません。100万経路を走らせれば計算ノイズは減りますが、市場履歴は増えません。モンテカルロ誤差と、研究対象の不確実性を分けて示すことは、シミュレーション研究の標準的な実務です。[8]
結果を監査し、次に調べる問いを絞る
Pythonの実装は、標準ライブラリを使って正規化済みの日次観測値から計算します。研究記録には、期間別レポート、開発の全9設定、副次的ウォークフォワード結果、ブートストラップ要約を残しています。出典のリビジョンとハッシュが、計算に使った観測値を特定します。
有用な監査は、留保期間の最終資産11,154.96 USDTと、上で説明した最初の負け取引から始められます。最終リターンを解釈する前に、各シグナル、約定、手数料、現金の増減を照合します。計算には完全な精度を保持しています。記事の丸めた表は表示のためのもので、後の計算に使う入力の代わりではありません。
次に、自分の問いに必要な証拠を決めます。データ配信の正確性なら、独立したデータを取得します。執行なら、現実的な注文制約の下で、判断時刻、発注時刻、受付確認、約定価格、数量を記録します。改訂したパラメーター選択を調べるなら、別の時系列期間を評価する前に選択ルールを書きます。異なる実験なので、ログでも分けたままにします。
これらのファイルの時刻付き戦略シグナル、送信した注文、確認済み約定、照合済みポジションを比較してください。最初の分岐点を特定してください。データ、時刻、数量決定、執行、会計に分類し、各指摘を記録IDで裏付けてください。戦略を再調整しないでください。照合表と、バグがある場合は最小の再現例を返してください。トレード日誌や売買候補スキャナーが目的でも、同じ規律が必要です。結果が出る前にルールの版と時刻付きの売買条件を保存し、取引だけでなく見送りや却下したシグナルも残します。アシスタントに日誌と執行台帳を照合させ、違いを説明させます。取引後の物語より、後の結果を測れる、当時記録した判断の方が役立ちます。
各判断より前に記録した売買条件の定義と情報だけを使ってください。実行、見送り、却下したシグナルをすべて含めてください。実際の取引を注文台帳と照合してください。事前に定めた売買条件の分類ごとに、遵守状況、繰り返す執行ミス、結果を報告してください。記述的なパターンと、ルール変更を正当化する十分な証拠を分けてください。欠けた記録と少数サンプルを明示してください。これを「利益の出る売買アルゴリズム」と呼ぶか
過去の会計という狭い意味なら、はい。主戦略の留保期間の口座は、仮定した手数料とスリッページの後で1,154.96 USDTを稼ぎました。しかし、運用に値する、実証済みで繰り返し可能な優位性のあるアルゴリズムという、より強い投資上の意味では証拠が足りません。一つの第三者の暗号資産アーカイブでの8件の決済取引では、その主張は確立できません。
判断は運用の目的にもよります。買い持ちの基準より大きい累積リターンを求める読者は、主要期間ではそれを得られませんでした。日次終値で約30%のドローダウンに耐えられない読者は、この観測された経路を採用しないでしょう。これは想定し得る投資家の要件に照らした評価であり、結果を見る前に密かに設定していた合格基準ではありません。
有用な次の段階は、仕様を固定した将来に向けたペーパーテストです。シグナルが来る前に開始日を記録し、すべての判断を執行可能な市場と照合する計画を立てます。テスト中の版を黙って置き換えず、修正案はすべて記録します。ペーパー執行にも現実的な仮定が必要です。後で少額の実運用を選ぶなら、実際の約定と運用に関する別の問いに答えられます。
ChatGPT、Claude、Codex、Claude Codeの実用的な価値は、個人がこの研究の仕組みをより速く作り、点検できることです。その仕組みは、聞きたくない答えも出します。今回得られたのは、過去には利益の出た口座、大きなドローダウン、買い持ちを下回るリターン、そして結果を左右した少数の取引でした。この事実を公開する方が、アシスタントに戦略の説明をもっと説得的に書かせるより役立ちます。
売買アルゴリズムに収益性があると呼ぶ前に
- 独立した2人のプログラマーが同じ取引を出すように、エントリー、退出、時刻、数量のルールを書く。
- 出典、不変のデータスナップショットまたはハッシュ、欠けた観測値の記録を残す。
- 未来データを変えても過去の判断が変わらないことを示す。
- 初期資産に決済・未決済の損益を足した額を、最終資産と照合する。
- 不利な執行の仮定、手数料、口座に関係する運用費用を含める。
- 適切な比較基準を示し、エクスポージャーとリスクの違いを説明する。
- 失敗や放棄した試行も含め、テストしたすべての設定を残す。
- パラメーター選択と後の評価を分け、再利用したテスト期間を開示する。
- 模擬損失の頻度は、モデルと過去入力に条件付けられた値として扱う。
- フォワードテストの前に次の版を固定し、記録したシグナルと実際・ペーパーの約定を照合する。
読者が本当に答えを必要としている問い
ChatGPTやClaudeは、利益の出る売買アルゴリズムを書けますか?
実装、テスト、デバッグを支援できます。今回の固定アルゴリズムは、留保した過去期間で、仮定した変動取引費用の後に11.55%を稼ぎました。ただし、買い持ちを下回り、29.72%のドローダウンがありました。示せるのは、このバックテストに限った結論です。依頼すればどちらかの助手が将来の利益を安定して作れることを示すものではありません。
売買ボットには、ChatGPT、Claude、Codex、Claude Codeのどれが優れていますか?
この研究では順位を付けていません。研究コードはCodexで開発し、統制したChatGPT対Claudeの比較はしていません。同じ仕様、テストデータ、リポジトリ作業で、重大なミスとレビューの手間を測ります。製品がコードを書ける能力と、戦略の投資価値は別です。
Python売買ボットとPine Script戦略のどちらを作るべきですか?
Pine Scriptは、チャートの確認、戦略の模擬売買、アラートに便利です。Pythonは、独自データ、会計、パラメーター実験、ポートフォリオ、再現可能な研究に向きます。この記事の数値はPythonによるものです。Pine版は作成して静的に確認しましたが、TradingViewではコンパイルも実行もしておらず、数量とスリッページの規約も異なります。
売買戦略の過剰適合をどう避ければよいですか?
裁量の余地を減らし、すべての試行を記録し、後の評価より前に選択ルールを固定し、時間順を守ります。近隣のパラメーターを調べ、選択手順全体をウォークフォワード区間で試します。自己欺瞞の機会を減らせますが、残ったルールに持続的な優位性がある保証にはなりません。
モンテカルロシミュレーションで、戦略が利益を出すと証明できますか?
いいえ。今回の循環ブロック・ブートストラップは、観測した日次ポートフォリオ純リターンを並べ替えます。結果はサンプル、ブロック長、再標本化の仮定に依存します。戦略判断を再生成せず、入力にない危機を見つけず、現実世界の信頼できる利益確率も推定しません。
利益の出たバックテストが、実運用で損失になるのはなぜですか?
過去の優位性が消える、小さなサンプルが見栄えを良くする、実装が当時使えない情報を使う、といった理由があります。スプレッド、遅延、注文量、部分約定、停止でも実際の約定は変わります。すぐに再調整せず、時刻付きシグナル、発注要求、確認済み約定、照合済みポジションを比べて差を探します。
この売買アルゴリズムには、いくらの資金が必要ですか?
開始残高10,000 USDTは会計上の取り決めであり、最低額の推奨ではありません。小数のBTCを許し、取引場所の最小数量制約と固定運用費を無視しています。実際の実行可能性は、注文制限、流動性、利用料、ホスティング、税金、許容損失によります。資金額が変われば固定費の重みも変わります。
この過去検証用Pythonモデルは自動売買しますか?
この研究ではライブ執行用の接続部分を開発していません。Pythonの実装は、過去のシグナル、明示した仮定での約定、口座結果を計算します。ライブシステムには、注文受付確認、部分約定処理、再接続、ポジション照合、重複・古い注文を防ぐ制御が別途必要です。
出典と再現性
数値結果は、出典を明示したアーカイブからTensorParadigmが独自に計算したものです。研究記録には、有効なプロトコル、修正、ハッシュ、正規化データ、プログラム、テスト、完全な結果を保存しています。外部資料はデータの出典、製品能力、方法を裏付けるもので、この戦略を推奨するものではありません。
- humblefool06のBTC-USDT履歴アーカイブ:データセット、固定リビジョン、公開者のライセンス宣言
- TradingView Pine Script文書:ストラテジー、ブローカーエミュレーター、取引費用
- OpenAI文書:コード生成とCodex
- Anthropic文書:Claude Codeの概要
- Baileyほか:『バックテスト過剰適合の確率』
- Scikit-learn文書:時系列順に沿ったデータ分割
- Politis、Romano:『定常データのための循環ブロック再標本化手順』
- Morris、White、Crowther:『シミュレーション研究による統計手法の評価』
- クリエイティブ・コモンズ表示4.0:出典表示と改変の条件
教育目的の過去データ研究です。リターンにはモデル上の変動取引費用を含みますが、税金と固定運用費用は含みません。ライブ取引やAIモデル間の投資比較実験は行っていません。過去と模擬の結果は、将来の収益性を実証するものではありません。