AlgoLab Blog · 제작 의뢰 가이드 · 2026

자동매매 백테스트 의뢰 — 제작 전에 검증만 먼저 맡기기

구매자 가이드 · 전략 검증 2026-10-15 · 약 8분 읽기 · 알고랩 AlgoLab
한 줄 요약

네, 자동매매 프로그램을 만들기 전에 백테스트(전략 검증)만 먼저 의뢰할 수 있고, 제작과는 별도 견적입니다. 2026-10-15 상담 기준 단순 백테스트는 30만원부터, 파라미터 3~5개 그리드 서치와 리포트는 50~100만원, 파라미터 6개 이상이나 워크포워드·몬테카를로는 100~200만원 구간입니다. 견적에 필요한 건 종목·시간봉·기간·파라미터 범위 네 가지뿐이고, 검증에서 코드로 옮긴 매매 규칙은 나중에 키움·KIS·업비트 실전 봇에서 그대로 재사용됩니다. 결과가 나쁘게 나오면 그것도 산출물입니다 — 수십만 원으로 수백만 원짜리 제작을 하지 않을 근거를 얻는 셈입니다.

목차

  1. 검증부터가 맞는 사람, 제작부터가 맞는 사람
  2. 검증 의뢰서에 적을 4가지
  3. 데이터를 어디서 받느냐가 결과를 바꾼다
  4. 비용 구간 — 무엇이 가격을 올리나
  5. 산출물 — 무엇을 받아야 하나
  6. 제작으로 넘어갈 때 재사용되는 것
  7. 결과가 나쁘게 나오면
  8. 자주 묻는 질문

상담에서 자주 듣는 말이 있습니다. "이 전략이 될지 모르겠는데, 프로그램부터 만들어야 하나요?" 가격표를 보고 상담 버튼까지는 누르는데 그다음 걸음에서 멈추는 이유도 대개 이것입니다. 될지 모르는 전략에 제작비부터 쓰기는 부담스럽습니다. 그럴 때 쓰는 경로가 검증 의뢰입니다. 주문을 내는 봇을 만들지 않고, 매매 규칙만 코드로 옮겨 과거 데이터에서 돌려 보는 작업입니다.

1. 검증부터가 맞는 사람, 제작부터가 맞는 사람

상황권하는 순서이유
유튜브·책에서 본 전략, 직접 돌려 본 적 없음검증 먼저규칙이 문장 단계라 숫자로 본 적이 없음
트레이딩뷰 Pine Script strategy()로 이미 결과를 봤음검증 먼저(파이썬 재현)체결 가정·수수료·한국 시장 세금이 다를 수 있음
파라미터 값(RSI 기간, 손절 %)을 못 정했음최적화 의뢰값을 고르는 일 자체가 별도 작업
몇 달째 손으로 같은 규칙대로 매매 중제작부터규칙과 실전 기록이 이미 있음
매매 판단이 아니라 반복 작업 자동화(리밸런싱·알림)제작부터검증할 '전략'이 없거나 단순함

핵심은 "규칙을 숫자로 본 적이 있느냐"입니다. 직접 매매해 본 규칙이면 실전 기록이 이미 검증 역할을 하고 있습니다. 반대로 영상에서 본 수익 곡선 하나만 있다면, 그 곡선이 어떤 기간·비용·체결 가정에서 나왔는지부터 확인해야 합니다. 같은 규칙도 시작일만 바꾸면 결과가 뒤집히는 경우가 흔합니다(백테스트 시작일 민감도 실측).

2. 검증 의뢰서에 적을 4가지

견적을 내는 데 필요한 정보는 네 가지입니다. 하나라도 비면 작업량을 가늠할 수 없어 정식 견적이 나오지 않습니다. 상담에서 하나씩 같이 정해도 되니, 모르면 "모름"이라고 쓰셔도 됩니다.

# 검증 의뢰서 — 이 정도면 견적이 나온다
대상:      KOSPI 전일 거래대금 상위 30종목   # 단일 종목이면 "005930 삼성전자"
시간봉:    일봉                              # 1분봉·5분봉·60분봉·일봉
기간:      2016-01 ~ 2026-09 (약 10년)
진입:      종가 > 20일 이동평균 이고 RSI(14) < 35 → 다음 날 시가 매수
청산:      익절 +6% / 손절 -3% / 보유 10거래일 초과 시 시가 매도
바꿔 볼 값: RSI 기간 10~30, 익절 2~10%, 손절 1~5%   # 파라미터 3개
비용 가정:  수수료 0.015% + 매도 거래세 + 슬리피지 0.1%  # 모르면 "기본값"
원하는 것:  연도별 수익률, MDD, 거래 수, 파라미터별 결과 표

여기서 가장 많이 빠지는 게 "바꿔 볼 값"입니다. 규칙만 검증할지(파라미터 고정), 파라미터까지 찾을지(최적화)에 따라 작업이 달라지기 때문입니다. 그리고 비용 가정을 비워 두면 결과가 실제보다 좋게 나옵니다. 국내 주식은 매도 거래세가 있어 단타일수록 차이가 커집니다(백테스트 수수료·세금 반영).

3. 데이터를 어디서 받느냐가 결과를 바꾼다

같은 규칙이어도 데이터 출처에 따라 숫자가 달라집니다. 의뢰서에 시간봉과 기간을 적어 달라는 이유가 이것입니다 — 어떤 데이터를 쓸 수 있는지가 시간봉·기간에 따라 정해집니다.

시장·봉주로 쓰는 출처확인할 점
국내 일봉 장기FinanceDataReader · pykrx(KRX)수정주가 여부, 상장폐지 종목 포함 여부(생존편향)
국내 일봉(증권사)키움 REST ka10081 · KIS FHKST03010100키움 upd_stkpc_tp 수정주가 플래그, KIS 1회 100건 제한 → 반복 호출
국내 분봉키움 ka10080 · KIS 분봉 TR받을 수 있는 과거 길이가 짧음 — 증권사별 공식 문서 확인
코인업비트 /v1/candles · 바이낸스 /api/v3/klines업비트 KST 09:00 일봉 기준, 거래 없는 분은 캔들이 비어 있음
트레이딩뷰 전략Pine Script strategy.* 결과체결 가정이 파이썬 재현과 다를 수 있음

예를 들어 "5분봉 단타, 최근 5년"은 국내 주식이라면 증권사 API만으로는 기간을 채우기 어려울 수 있습니다. 이럴 때는 기간을 줄이거나 데이터 출처를 따로 정해야 하고, 그게 견적에 들어갑니다. 지금 상장된 종목만으로 돌리면 성과가 부풀려지는 생존편향도 데이터 단계에서 정해지는 문제입니다(생존편향 실측).

4. 비용 구간 — 무엇이 가격을 올리나

작업구간 (2026-10-15 상담 기준)들어가는 것
단순 백테스트30만원부터규칙 1세트 코드화 + 비용 반영 + 성과 리포트
파라미터 최적화50~100만원파라미터 3~5개 그리드 서치 + 파라미터별 결과 표·시각화
고급 검증100~200만원파라미터 6개 이상, 워크포워드(WFO)·몬테카를로·베이지안 최적화

가격을 올리는 건 전략의 "어려움"보다 탐색 공간의 크기입니다. 위 의뢰서의 파라미터 3개를 1 단위로 다 돌리면 이렇게 됩니다.

from itertools import product

rsi_n = range(10, 31)   # 21개
tp    = range(2, 11)    # 9개
sl    = range(1, 6)     # 5개
grid  = list(product(rsi_n, tp, sl))
print(len(grid))        # 945  → 945번의 백테스트 × 30종목 × 10년

파라미터 하나를 더하면 곱셈이 한 번 더 붙습니다. 분봉은 일봉보다 데이터가 수십~수백 배 많아 같은 945번도 계산량이 크게 늘어납니다. 견적에서 종목 수·시간봉·기간·파라미터 범위를 묻는 이유가 전부 이 곱셈 때문입니다.

945개 중 1등은 거의 항상 부풀려져 있습니다. 많이 돌려 가장 좋은 값을 고르면 운 좋은 조합이 뽑히기 쉽습니다(데이터 스누핑·다중검정). 그래서 최적화를 맡길 때는 "고른 구간과 다른 구간에서 다시 확인"하는 워크포워드를 같이 두는 편이 안전합니다. 알고랩이 이동평균 최적값으로 직접 해 본 실측에서는 고른 구간 CAGR 11.46%가 워크포워드로 다시 돌리면 4.02%로 내려갔습니다(워크포워드 최적화 실측). 이 숫자도 과거 한 사례일 뿐 미래를 말해 주지 않습니다.

5. 산출물 — 무엇을 받아야 하나

"수익률 몇 %"만 받으면 판단할 수가 없습니다. 검증 의뢰의 산출물은 보통 이런 묶음입니다.

backtest_result/
├─ report.pdf            # CAGR · MDD · 샤프지수 · 승률 · 손익비 · 거래 수 · 연도별 표
├─ equity_curve.png      # 누적 수익 곡선 + 낙폭(drawdown) 그래프
├─ trades.csv            # 거래 1건 = 1줄 (진입일·청산일·가격·사유·비용)
├─ params_grid.csv       # 최적화 시: 파라미터 조합별 결과 (945줄)
├─ assumptions.md        # 데이터 출처·기간·수정주가·비용·체결 가정
└─ strategy.py           # 신호 함수 (범위에 포함한 경우)

이 중 가장 중요한 건 assumptions.md(가정)와 trades.csv(거래 내역)입니다. 리포트 숫자는 가정이 바뀌면 같이 바뀌고, 거래 내역이 있어야 "이 수익이 한두 번의 대박 거래에서 나온 건지"를 확인할 수 있습니다. 어떤 파일까지 넘겨받는지(코드 포함 여부 등)는 견적 단계에서 범위로 명시합니다. 리포트를 어떻게 읽는지는 백테스트 리포트 읽는 법에, 형태 예시는 샘플 리포트 PDF(유사 전략 시뮬레이션 가상 데이터 — 실제 고객 전략 결과가 아님)에 있습니다.

의뢰서 4가지 종목·봉·기간·파라미터 백테스트 비용·체결 가정 포함 판정 통과 → 제작 신호 함수 재사용 · 모의투자 조건부 → 규칙 수정 다른 구간에서 재검증 탈락 → 중단 제작비를 쓰지 않을 근거
검증 의뢰의 결과는 세 갈래 — 셋 다 다음 결정을 위한 산출물이다

6. 제작으로 넘어갈 때 재사용되는 것

"검증하고 나서 제작하면 두 번 돈 내는 거 아닌가요?"도 자주 받는 질문입니다. 두 작업은 겹치는 부분과 겹치지 않는 부분이 분명히 나뉩니다. 겹치는 건 매매 규칙 자체입니다. 검증 단계에서 규칙을 이렇게 함수 하나로 떼어 두면, 백테스트와 실전 봇이 같은 함수를 부릅니다.

import pandas as pd

def signal(df: pd.DataFrame, rsi_n: int = 14) -> bool:
    """일봉 DataFrame(open/high/low/close) → 오늘 종가 기준 매수 신호"""
    close = df["close"]
    ma20 = close.rolling(20).mean()
    delta = close.diff()
    up = delta.clip(lower=0).ewm(alpha=1 / rsi_n, adjust=False).mean()
    down = (-delta.clip(upper=0)).ewm(alpha=1 / rsi_n, adjust=False).mean()
    rsi = 100 - 100 / (1 + up / down)
    return bool(close.iloc[-1] > ma20.iloc[-1] and rsi.iloc[-1] < 35)

# 백테스트: FinanceDataReader 일봉을 하루씩 잘라 signal() 호출
# 실전 봇:  키움 ka10081 / KIS FHKST03010100 일봉을 DataFrame으로 바꿔 같은 signal() 호출

이렇게 하면 "백테스트에서는 됐는데 봇에서는 다르게 산다"는 문제의 큰 원인 하나가 사라집니다. 재사용되는 것을 정리하면 이렇습니다.

검증 단계에서 만든 것제작 때
신호 함수(진입·청산 규칙)그대로 재사용
지표 계산·데이터 전처리(수정주가 등)그대로 재사용 — 실전 데이터 형식에 맞춰 변환만
확정된 파라미터 값설정 파일로 이동
비용 가정실전 성과와 비교하는 기준선
—새로 필요: 증권사 API 인증(appkey·access_token), 주문·체결 확인, 재시도·레이트리밋, 장 시간·휴장 처리, 로그·텔레그램 알림

제작비의 상당 부분은 마지막 줄, 즉 봇이 실제 계좌에서 죽지 않게 하는 배선입니다. 그래서 검증을 먼저 했다고 제작 견적이 그만큼 그대로 줄어드는 건 아니지만, 규칙이 확정된 상태라 제작 중 사양이 흔들리는 일이 줄어듭니다. 재사용 범위가 견적에 어떻게 반영되는지는 상담에서 확인해 드립니다. 제작에 보통 몇 주가 걸리는지는 자동매매 프로그램 제작 기간에, 견적서 전체 구조는 제작 비용·견적 가이드에 정리돼 있습니다.

7. 결과가 나쁘게 나오면

검증 의뢰에서 가장 값진 결과가 이것일 수 있습니다. 비용을 넣었더니 수익이 사라지거나, 한두 해에만 몰려 있거나, MDD가 감당할 수 없는 수준이면 그 전략으로 봇을 만들지 않는 것이 맞는 결정입니다. 수십만 원으로 그걸 알게 된 셈입니다.

이때 흔한 유혹이 "결과가 좋아질 때까지 규칙을 고쳐서 다시 돌리기"입니다. 한두 번의 수정은 자연스럽지만, 같은 기간에서 계속 고치면 그 기간에만 맞는 규칙이 만들어집니다. 규칙을 고쳤다면 고칠 때 보지 않은 구간에서 다시 확인하는 것이 원칙입니다. 그다음 단계가 모의투자와 소액 실전입니다(실전 투입 전 검증 3단계).

알고랩도 같은 원칙으로 전략을 직접 돌려 보고, 통과한 것과 탈락한 것을 함께 전략 검증 허브에 남겨 둡니다. 탈락 기록은 지우지 않습니다 — 무엇이 안 되는지 아는 것도 결과이기 때문입니다.

꼭 알아 둘 것 — 백테스트는 과거 데이터에서 규칙이 어떻게 움직였는지를 보여 줄 뿐, 미래 수익을 예측하거나 보장하지 않습니다. 위 가격 구간은 2026-10-15 상담 기준이며 실제 견적은 종목·봉·기간·파라미터를 확인한 뒤 정해집니다. 알고랩은 매매 규칙을 코드로 구현하고 검증하는 도구를 제작할 뿐, 종목 추천이나 투자자문·일임을 하지 않습니다.

8. 자주 묻는 질문

자동매매 프로그램 없이 백테스트만 의뢰할 수 있나요?

가능합니다. 알고랩은 백테스트·파라미터 최적화를 자동매매 프로그램 제작과 별도 작업으로 견적합니다. 2026-10-15 상담 기준 단순 백테스트는 30만원부터, 파라미터 3~5개 그리드 서치와 리포트는 50~100만원, 파라미터 6개 이상이나 워크포워드·몬테카를로는 100~200만원 구간이며 정확한 금액은 종목·봉·기간·파라미터를 확인한 뒤 정해집니다.

백테스트 의뢰할 때 무엇을 알려 줘야 하나요?

네 가지면 견적이 나옵니다. 대상 종목(단일·복수·선정 기준), 시간봉(1분봉·5분봉·일봉 등), 검증 기간(최근 1년·3년 등), 바꿔 볼 파라미터의 개수와 범위입니다. 진입·청산 규칙은 문장으로 적어 주시면 되고, 수수료·세금·슬리피지 가정은 정하지 않으셨으면 기본값을 제안해 드립니다.

백테스트 결과가 좋으면 실제로도 수익이 나나요?

보장되지 않습니다. 백테스트는 과거 데이터에서 규칙이 어떻게 움직였는지를 보여 줄 뿐이며 미래 수익을 예측하지 않습니다. 여러 파라미터 중 가장 좋았던 값을 고르면 결과가 부풀려지기 쉬워, 최적화를 맡길 때는 워크포워드처럼 고르지 않은 구간에서 다시 확인하는 절차를 함께 두는 것이 안전합니다.

검증 후에 제작을 맡기면 처음부터 다시 만드나요?

전부 다시 만들지는 않습니다. 검증 단계에서 코드로 옮긴 매매 규칙(신호 함수), 데이터 전처리, 비용 가정은 실전 봇에서 그대로 쓰는 구조로 짤 수 있습니다. 실전 봇에 새로 필요한 것은 증권사 API 인증·주문·체결 확인·재시도·로그 같은 실행 배선입니다. 재사용 범위와 견적 반영은 상담에서 확인해 드립니다.

만들기 전에, 먼저 돌려 보세요

전략을 문장으로 적어 오시면 종목·봉·기간·파라미터부터 같이 정하고 검증 견적을 드립니다. 24시간 빠른 답변 가능합니다.

무료 상담 시작하기