LLM Tool Request Contract¶
Studio AI 채팅에서 LLM이 호출하는 백테스트 도구 요청의 필드 정의입니다.
백테스트 요청은 단일 tool=backtest + requests[] 형식을 사용합니다.
backtest¶
| 필드 | 필수 | 설명 |
|---|---|---|
tool |
필수 | backtest |
goalMetric |
선택 | 최적화 기준 지표 (기본: total_return_pct) |
requests |
필수 | 백테스트 요청 배열 (최소 1개) |
requests[*] 필드¶
| 필드 | 필수 | 설명 |
|---|---|---|
label |
필수 (binder fallback) | 요청 식별 라벨 (예: "baseline", "period=20") |
script |
필수 (editor 우선) | 실행 가능한 DSL 원문 전체. 항상 현재 에디터 스크립트(current_script)가 우선하며, LLM이 제안한 script는 에디터 스크립트가 비어 있을 때만 fallback으로 사용됨 |
symbols |
필수 (context fallback) | 종목코드 배열. 단일 종목 = ["005930"], 다중 = ["005930","000660"] |
timeframe |
필수 (context fallback) | 타임프레임 |
fromDate / toDate |
필수 (context fallback) | 기간 (YYYYMMDD) |
scriptParams |
선택 | 스크립트 파라미터 |
simParams |
선택 | 시뮬레이션 파라미터 (아래 참조) |
savedUniverseId |
선택 | 저장 유니버스 ID 참조 |
savedUniverseName |
선택 | 저장 유니버스 이름 참조 |
savedUniverseId 또는 savedUniverseName이 있고 symbols가 비어 있으면, 해당 유니버스의 종목을 symbols[]로 채웁니다. 참조한 유니버스를 찾을 수 없으면 에러가 반환됩니다.
requests[*].script 입력 규칙:
- placeholder를 넣으면 안 됩니다. 금지 예:
same as above,위 코드,<...>, 요약문/자연어 설명 - 실제 실행 가능한 DSL 전체 본문을 넣어야 하며, 누락 시 compile preflight 단계에서
simulation_compile_error가 날 수 있습니다.
simParams 필드¶
| 필드 | 기본값 | 설명 |
|---|---|---|
initial_budget |
10_000_000 |
초기 자본금 |
evaluation_step |
추천값 자동 계산 | timeframe + script scale + order_on의 최대공약수로 추천. 스크립트에 strategy.order_on/rule.order_on이 있으면 그 값을 우선하고, 없으면 기본 order_on=5T를 사용한다. 비지원 단위는 더 작은 지원 공약수(최소 1T)로 정규화 |
order_on |
"5T" |
주문 발동 기준 스케일 (스크립트 strategy.order_on이 우선) |
stop_loss_pct |
0 (비활성) |
손절매율. 0이면 비활성이며 DSL 스크립트에서 명시 시에만 적용 |
take_profit_pct |
0 (비활성) |
익절률. 0이면 비활성이며 DSL 스크립트에서 명시 시에만 적용 |
allow_cash_reduction |
true |
현금 부족 시 수량 축소 허용 |
max_notional |
500_000 |
최대 주문 금액 |
tax_rate_by_symbol |
null |
심볼별 매도세율 override 맵. key는 심볼 대문자, value는 0 이상 수치 |
evaluation_step 선택 가능 범위는 지원되는 공약수 스케일 전체(1T 포함)입니다.
응답 추가 필드¶
| 필드 | 조건 | 설명 |
|---|---|---|
missing_scales |
일부 스케일 fetch 실패 시 | 누락된 스케일 목록 (예: ["1W"]) |
일부 종목 실행이 실패하면 전체 결과가 실패로 표시될 수 있습니다. 실패 원인은 결과 카드에서 확인할 수 있습니다.
symbols[].length > 1이면 runtime이 portfolio 엔진을 자동 선택합니다. symbols[].length == 1이면 single-symbol 엔진을 사용합니다.
비교나 파라미터 탐색은 requests[]에 여러 항목을 넣어 표현합니다. 각 항목의 label로 의도를 구분합니다.
참고¶
이 문서는 Studio AI가 백테스트 요청을 구성할 때 필요한 사용자 입력 계약을 설명합니다. 내부 전송 형식이나 서버 구현 상세는 사용자 가이드 범위에 포함하지 않습니다.