AI Trading Copilot の JSONL ログで AI 判断を検証する振り返り手順

AI を使った分析ツールを導入してしばらく経つと、「このツールの判断は、自分の取引スタイルに本当に合っているのか」という疑問が出てきます。その答えを印象や記憶で出してしまうと、うまくいった場面ばかりが頭に残り、評価が甘くなりがちです。

ai-programming.xyz が公開している AI Trading Copilot は、Claude AI による分析結果を毎回ローカルに記録する仕組みを持っています。本記事ではこの記録(JSONL ログ)を題材に、AI の判断を後から客観的に振り返るための手順 を整理します。

特定の cBot を取り上げていますが、「記録を残す → 基準を決めて集計する → 結論を急がない」という流れは、自作ツールや裁量取引の振り返りにもそのまま応用できる考え方です。

なぜ「記録してから振り返る」必要があるのか

最初に、ログを使った振り返りがなぜ必要なのかを整理しておきます。

人間の記憶には、結果を知ったあとで「あのシグナルは当然そうなると思っていた」と感じてしまう 後知恵バイアス(結果を知った後で、事前にも予測できていたと錯覚する傾向)があります。さらに、印象に残るのは大きく動いた場面や損失を出した場面に偏りやすく、何も起きなかった大多数のシグナルは記憶から抜け落ちていきます。

AI の出力を評価する場面では、この偏りが特に問題になります。「AI が当てた場面」だけを覚えていれば過大評価に、「外れた場面」だけを覚えていれば過小評価につながります。どちらの場合も、判断材料としての実力を正しく測れていない状態です。

これを避けるには、判断が出た時点の情報をそのまま残し、あとから全件を同じ基準で見直す しかありません。AI Trading Copilot のログ機能は、この「全件を残す」部分を自動化してくれるものと位置づけられます。

AI Trading Copilot のログ機能の概要

ここでは、商品ページで公開されている範囲でログ機能の仕様を確認します。

保存場所と形式

分析結果は %AppData%\cTrader\AICopilot\ 以下に、銘柄・時間足ごとの JSONL ファイル として保存されます。JSONL(JSON Lines)とは、1行に1件の JSON データを書き並べる形式のことです。1回の分析が1行になるため、追記しやすく、Python や表計算ソフトへの取り込みも比較的簡単です。

記録される内容

商品ページでは、Claude API の返す結果は action(5段階アクション)/ entry / SL / TP / confidence(信頼度)/ summary(根拠の要約)で構成されると説明されています。ログ上の項目名はバージョンで変わる可能性もあるため、集計前に実際のファイルを1行開いて確認 しておくと安心です。

また「全分析結果を保存」とあるため、Min Confidence(最小信頼度フィルター)を下回ってアラートが送られなかった分析や AVOID 判定も記録対象と読めます。通知だけでは気づけないシグナルまで振り返れる点が、ログを使う大きな意味です。

振り返りの手順

ここからは、ログを使った振り返りの進め方を3つのステップに分けて解説します。

ステップ1: 評価基準を先に決める

集計を始める前に、「何をもって機能したとみなすか」を文章で決めておきます。たとえば次のような基準です。

基準をデータを見た後に決めると、都合の良い結果が出る基準を無意識に選んでしまいます。基準の決定はデータ確認より前 に置くようにしてください。

ステップ2: アクション別・信頼度帯別に分けて集計する

全件をまとめて評価すると、性質の違うシグナルが混ざってしまいます。アクションの種類と信頼度の帯で分けて件数を数えるだけでも、傾向は見えやすくなります。以下は Python での集計イメージです。

import json
from collections import defaultdict

# ファイルパスとキー名は、実際のログを開いて合わせてください
path = "your_log.jsonl"
groups = defaultdict(int)

with open(path, encoding="utf-8") as f:
    for line in f:
        line = line.strip()
        if not line:
            continue
        rec = json.loads(line)
        conf = float(rec["confidence"])
        band = "high" if conf >= 70 else "low"
        groups[(rec["action"], band)] += 1

for key, count in sorted(groups.items()):
    print(key, count)

件数の分布が分かったら、各グループについてステップ1の基準で結果を記入していきます。結果の判定は、チャートを遡って目視で確認する方法でも十分です。

ステップ3: 設定変更の履歴を分けて管理する

モデル(Haiku / Sonnet)の切り替え、解析間隔の変更、プロンプトのカスタマイズがあると、同じログに 性質の違う判断 が混ざります。変更日時をメモに残し、集計は設定ごとに期間を分けて行うことをおすすめします。シグナル時点の自分の見立ても併記しておくと、AI との食い違いを振り返る材料になります。出力の読み方は AI Trading Copilot の信頼度スコアと5段階アクションの読み方 でも整理しています。

振り返りで陥りやすい落とし穴

ログを集計できるようになると、今度は数字の読み方で判断を誤りやすくなります。代表的な落とし穴を確認しておきます。

標本が少ないうちに結論を出す

数週間分のログでは、特定の相場環境(トレンドが続いた期間、レンジが続いた期間など)に結果が大きく左右されます。件数が十分に溜まるまでは「傾向の仮説」として扱い、結論にはしない という姿勢が大切です。複数の相場環境を含む期間で見ることも意識してください。

同じデータで調整して、同じデータで評価する

「このログを見ると信頼度しきい値をもう少し上げた方が良さそうだ」と調整し、その結果を同じログで確認すると、実態以上に良く見えやすくなります。これは過去データに設定を合わせ込んだだけの状態(過剰最適化)である可能性があります。調整に使う期間と、確認に使う期間を分ける ことで、この問題をある程度避けられます。考え方の土台は バックテストの基礎 でも解説しています。

表示価格と実際の約定価格の差を無視する

ログに残る Entry / SL / TP は分析時点の価格です。実際の取引ではスプレッドやスリッページ(注文価格と約定価格のずれ)が加わり、短い時間足ほど影響が大きくなります。評価の際はこの差を織り込んで見るようにしてください。

件数だけでなく損益の大きさも見る

「基準を満たした件数」が多くても、外れたときの損失が大きければ全体の評価は変わります。結果の大きさまで含めた評価には、期待値(エクスペクタンシー)の基礎MAE と MFE の基礎 の考え方が役立ちます。

導入時に意識したいこと

ログを使った振り返りは、AI の判断を「信じるか信じないか」ではなく、自分の運用にどの程度組み込めるかを測る ための作業です。振り返りで良い傾向が見えたとしても、それは過去の特定期間についての整理であり、今後の結果を保証するものではありません。

導入直後はデモ口座や少額で運用し、ログが十分に溜まるまでは判断を AI の出力に委ねすぎないことをおすすめします。また、ロットサイズ・1回あたりの許容損失・最大ドローダウンといったリスク管理のルールは、ログの評価結果とは別に、あらかじめ固定しておく必要があります。

まとめ

AI Trading Copilot の JSONL ログは、アラートが送られなかった分析まで含めて全件を残せる点に価値があります。評価基準を先に決める、アクション別・信頼度帯別に分けて集計する、設定変更の履歴を分けて管理する、そして少ない標本や同じデータでの調整で結論を急がない、という流れを押さえておくと、AI の判断を客観的な材料として扱いやすくなります。

ログ機能やパラメーター、パネル表示の詳細は AI Trading Copilot の詳細ページ で公開されています。自分の検証スタイルに合うかどうか、確認してみてください。

ログを集計するスクリプトや、AI 連携 cBot そのものを自分で組んでみたい方は、ai-programming.xyz のスクールや関連コンテンツも参考になります。

本記事は一般的な情報提供を目的としています。投資助言ではありません。 取引判断はご自身の責任で行ってください。