【要約】LLMに損切り価格を出させない設計 — Structured Output と数理レールの分担 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者がGMOコインFXの自動売買システムを構築する際、LLMの非決定性がもたらすリスクに直面した。LLMに価格を直接算出させると、数学的な整合性が崩れる懸念があった。
- ・LLMが生成する利確価格と、Pythonが計算する損切り幅の単位(時間スケール)が一致しない。
- ・プロンプトによる制約だけでは、不正な価格の組み合わせを構造的に防げない。
- ・計算誤差や例外発生時に、システムが不完全な注文を出す危険性がある。
// Approach
開発者は、LLMに「文脈の解釈」を、Pythonに「価格構造の算術」を分担させる非対称な設計を採用した。
- ・Structured Outputのスキーマから価格フィールドを削除し、生成を物理的に不可能にする。
- ・損切り幅の指定を「standard/wide」の離散的なノブに限定し、自由度を制御する。
- ・ATRを保有時間に合わせてスケーリングし、計算の単位を揃える。
- ・利確価格を損切り幅から逆算して組み立て、リスクリワード比を数学的に担保する。
- ・丸め処理の順序を「entry → SL → TP → ロット」に固定し、誤差の影響を最小化する。
// Result
この設計により、LLMの不確実性に依存せず、数学的に正しい注文を確実に生成できるようになった。
- ・スキーマレベルでの制御により、不正な価格の組み合わせを構造的に排除した。
- ・例外やバリデーション違反をすべて「見送り(NO_ENTRY)」に集約し、システムの堅牢性を高めた。
- ・保有時間の変更に対し、ATRのスケーリングにより損切り幅やロットが自動で整合する仕組みを構築した。
Senior Engineer Insight
> LLMを「推論」に、コードを「計算」に分離する設計は、信頼性が求められる現場の鉄則だ。特に、スキーマからフィールドを消して「生成不能にする」手法は、プロンプトの限界を突いた極めて実戦的な判断である。丸め処理の順序まで厳密に定義する姿勢は、微細な誤差が致命的な損失に直結する金融システムにおいて、極めて高い審美眼を感じさせる。