콘텐츠로 이동

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가 백테스트 요청을 구성할 때 필요한 사용자 입력 계약을 설명합니다. 내부 전송 형식이나 서버 구현 상세는 사용자 가이드 범위에 포함하지 않습니다.