↗
TENSORPARADIGM신경망 기반 시장 분석
TENSORPARADIGM 리서치 / 알고리즘 설계 / 실증 검증

ChatGPT나 Claude로 트레이딩 알고리즘을 만드는 법: 수익성을 검증하고 과적합을 피하려면

재현 가능한 Python·Pine Script 트레이딩 프로젝트. 명확한 규칙, 실제 백테스트 결과, 비용, 워크포워드 검증, 몬테카를로 분석으로 과적합을 살펴본다.

설명에 앞서 결과부터

그렇다. ChatGPT나 Claude의 도움으로 트레이딩 알고리즘을 만들 수 있고, 그 전략은 돈을 벌 수도 있다. 이 글의 Python 실증 연구에서 고정된 비트코인 돌파 규칙은 2024년 1월 1일부터 2026년 7월 31일까지 가정한 거래 비용을 차감하고 11.55%의 수익을 냈다. 동시에 일별 종가 기준 최대 낙폭은 29.72%였으며, 초기 배분 조건을 맞춘 매수 후 보유 기준 전략보다 수익률이 낮았다. 이는 실제로 계산한 과거 결과다. 예측도, 특정 AI 공급자에게 매매 우위가 있다는 증거도 아니다. 이 글은 그 차이를 검토하는 데 사용한 규칙, 계산, 거래 회계, 테스트를 설명한다.

이 글에서 얻을 수 있는 것

  • 모든 조건을 명시한 55일 돌파·20일 청산 전략, Python 회계 모델, Pine Script와의 차이 설명.
  • 손실 거래, 수수료, 미결제 포지션 회계 예시, 매수 후 보유 비교를 포함한 실제 결과.
  • 개발 구간의 변형 9개 전체, 워크포워드 구간 4개, 조건부 부트스트랩 경로 15,000개. 보기 좋은 자산곡선 하나만 고른 결과가 아니다.
  • 작업 통과 조건까지 구체적으로 담은 ChatGPT, Claude, Codex, Claude Code용 재사용 프롬프트.
  • 이 연구가 입증하는 것, 아직 답하지 못한 것, 전향적 검증에서 기록해야 할 것에 대한 명확한 답.

결과를 직접 들여다볼 수 있는 완전한 트레이딩 리서치 프로젝트

“수익성 있는 트레이딩 봇을 만들어 줘”에는 세 가지 일이 섞여 있다. 규칙을 고안하고, 구현하고, 자본을 투입할 가치가 있는지 입증하는 일이다. 보조 도구는 첫 번째와 세 번째 문제를 풀지 않고도 그럴듯한 코드를 만들 수 있다. 이 글에서는 단순한 전략을 고정하고, 문서화한 과거 연구를 실행하고, 결과의 근거 기록을 공개함으로써 세 가지를 분리한다.

프로젝트는 일봉 기반의 비트코인 매수 전용 돌파 시스템이다. 경제적 가설은 소박하다. 지속적인 추세가 때때로 반복된 돌파 실패의 비용을 만회할 수 있다는 것이다. 불편한 부분도 이 아이디어의 일부다. 추세 추종은 대부분의 거래에서 손실을 내고 소수의 큰 수익 거래에 의존할 수 있다. 따라서 계좌 최종 잔액뿐 아니라 거래 손익의 분포도 살펴본다.

이 연구는 전략 규칙, 시장 관측값, 모의 체결, 계좌 결과를 구분한다. 출처, 일별 입력, 실행 가능한 테스트 15개, 전체 실험 기록을 보존했다. 아래에서는 계산을 설명하고 결론에 영향을 주는 거래와 회계 사례를 보여 준다.

이 프로젝트는 AI의 도움을 받은 엔지니어링 연구다. 챗봇에게 어떤 자산이 오를지 묻는 실험은 아니다. 코드는 Codex에서 개발했다. 같은 작업을 ChatGPT와 Claude에 각각 맡기거나, 두 제품의 투자 성과를 측정하거나, 실행 중 언어 모델로 거래를 고르지는 않았다. 완성된 알고리즘은 결정론적 규칙을 따른다.

구현 간 차이를 대조하는 방법은 Python과 Pine Script 백테스트 결과가 다른 이유에서 자세히 살펴봅니다.

수익에 유리하게 해석할 여지를 없애는 명세부터 시작하라

전략 설명은 거래 목록을 바꿀 수 있는 세부 사항까지 확정해야 한다. “55일 고점에 매수”만으로는 부족하다. 윗꼬리도 인정하는가? 현재 봉을 채널에 넣는가? 확정된 일봉을 보고 그보다 앞선 같은 봉의 시가에 매수할 수 있는가? 우리의 규칙은 이전 고점들을 넘어선 확정 종가를 요구하고, 다음 시가까지 기다린다.

명세와 평가 절차는 이 작업에서 성과를 계산하기 전에 작성했다. 데이터 변경 두 건이 먼저 있었다. 출처 교체와 4시간 관측값 누락에 대한 대응이다. 둘 다 연구 기록에 보존했다. 결과를 좋게 만들기 위해 매매 규칙을 바꾸지는 않았다. 이 기록은 연구 의사결정의 내부 순서이며, 독립적인 시점 인증을 받은 사전 등록이나 전향적 실험은 아니다.

고정된 주전략과 회계 기준
구성 요소정확한 규칙
상품과 시간 기준BTC-USDT. 4시간 관측값 6개를 각각의 UTC 일별 OHLC 봉으로 집계한다.
진입포지션이 없을 때 확정 종가 > 직전 55개 일봉의 최고 고가. 현재 봉은 제외한다.
청산매수 포지션 보유 중 확정 종가 < 직전 20개 일봉의 최저 저가. 현재 봉은 제외한다.
체결 시점종가에 신호를 생성하고, 다음 일봉의 원시 시가를 슬리피지만큼 불리하게 조정해 매수·매도한다.
포지션매수 포지션 1개. 소수점 BTC를 허용하며 레버리지와 공매도는 없다. 전량 청산한다.
진입 예산진입 수수료를 포함해 가용 현금의 90%. 수량 = 0.9 × 현금 / [체결가 × (1 + 수수료율)].
기본 비용매수·매도 각각 수수료 10bp와 불리한 슬리피지 5bp. 현재 거래소 요율이 아닌 가정이다.
계좌 경계보고하는 각 구간을 포지션 없이 10,000 USDT로 시작한다. 이전 봉은 지표 준비에만 쓴다.
마지막 평가최종 일봉 종가로 평가한다. 강제 청산이나 가상의 청산 비용 충당은 없다.
제외한 비용세금, 구독 고정비, 데이터·호스팅 비용. 현금 이자, 펀딩비, 차입 비용도 없다.

가정한 체결 경계는 이상화되어 있다. 쉬지 않고 거래되는 암호화폐 시장에서 일봉 종가 확정과 다음 일봉 시가는 맞닿아 있지만, 실제 구현에는 데이터 수신, 계산, 주문 제출 시간이 든다. 슬리피지 5bp는 가정이지, 해당 지연과 주문 규모에서 그 가격으로 체결할 수 있다는 증거가 아니다.

백테스트가 시작되기 전, 데이터 점검으로 연구 범위가 바뀌었다

입력은 humblefool06이 Hugging Face에 CC BY 4.0으로 공개한다고 명시한 제3자 BTC-USDT 아카이브다. 리비전 9f491eb5340dd6a24f27fde24edf098e1e785443을 고정하고, 게시자의 데이터셋 설명을 보존하고, SHA256 해시를 기록했다. TensorParadigm은 4시간봉을 UTC 일봉으로 집계했다. 이 출처와 가공 방법을 연구 기록에 남겼다. [1] [9]

데이터 범위를 점검한 결과 2020년 2월 19일에는 12:00 UTC 관측값이 없었다. 가격을 만들어 넣는 대신 해당 날짜와 그 이전 기록을 모두 제외했다. 따라서 정규화한 입력은 2020년 2월 20일부터 시작하며, 개발 구간은 완전한 준비용 봉 71개가 쌓인 뒤인 5월 1일부터 시작한다. 보존한 일별 관측값 2,354개는 모두 정확히 구성 봉 6개를 포함한다. 성과 계산 전에 타임스탬프 순서, 중복, 유한한 값, OHLC 일관성을 확인했다.

해시는 사용한 바이트를 식별할 뿐 게시자의 가격이 정확하다는 것을 입증하지 않는다. 우리는 이 제3자 아카이브를 거래소 기록과 독립적으로 대사하지 않았다. 더 강한 투자 연구라면 별도로 확보한 피드에서 분석을 반복하고 차이를 조사해야 한다. 재현 가능성과 출처의 정확성은 관련이 있지만 서로 다른 요구 사항이다.

시간순 구간. 각 계좌는 독립적으로 초기화한다
구간날짜사용 방식
개발2020년 5월 1일–2022년 12월 31일. 975일고정 규칙과 사전 지정한 매개변수 변형 9개를 모두 보고한다.
검증2023년 1월 1일–12월 31일. 365일변경하지 않은 55/20 규칙을 보고한다. 주전략 매개변수 수정에 쓰지 않는다.
별도 확보한 과거 평가2024년 1월 1일–2026년 7월 31일. 943일고정 규칙의 핵심 결과와 부트스트랩 입력.
보조 워크포워드2023년, 2024년, 2025년, 2026년 1월–7월이전 데이터로 선택한 뒤 다음 구간에서 평가한다. 위 구간들과 날짜가 겹친다.

“별도 확보한 과거 평가 구간”이라는 표현은 고정 규칙의 마지막 구간에만 사용한다. 시장의 큰 흐름이 이미 알려진 과거 데이터다. 또한 보조 워크포워드 연구가 나중에 겹치는 날짜를 재사용한다. 이 글의 모든 분석을 통틀어 완전히 미사용인 최종 표본은 없다. 독립적인 실거래 검증이라고 부르면 설계를 과장하는 셈이다.

트레이딩 봇 코드를 쓰기 전에 모호한 부분부터 없애게 하라

ChatGPT와 Claude는 연구 지시를 코드로 옮기고, 원장을 설명하고, 테스트를 제안하는 데 도움을 줄 수 있다. Codex와 Claude Code는 코드베이스 안에서 파일을 편집하고 명령을 실행할 수 있다. 문서에 설명된 엔지니어링 기능은 이 작업에 활용해 볼 근거가 되지만, 어느 제품이 가장 수익성 있는 전략을 쓰는지 입증하지는 않는다. [3] [4]

보조 도구에 고정 명세를 주고 구현 전에 미확정 선택지를 밝히게 하라. 이 연구의 핵심 선택에는 엄격한 돌파와 경계값 포함 돌파의 구분, 이전 봉만 사용하는 구간, 다음 시가 체결, 수수료를 포함한 현금 예산, 마지막 미결제 포지션 처리가 있다. 이를 조용히 지어내면서 자신 있게 답한다면 결함 있는 구현이다.

프롬프트 1 — 아이디어를 감사 가능한 명세로 바꾸기
첨부한 고정 전략 명세를 구현하라. 먼저 신호, 체결, 포지션 규모, 보고 손익을 바꿀 수 있는 모호한 부분을 모두 찾아라. 필터를 추가하거나 매개변수를 최적화하지 마라. 각 입력을 언제 이용할 수 있는지 명시하라. 신호 로직, 실행, 회계, 보고를 분리하라. 과거 성과를 계산하기 전에 시점 처리와 현금 대사를 위한 합성 테스트를 만들어라. 전체 코드, 가정, 실험 일지를 제출하라.

아래 프롬프트는 재사용 가능한 연구 지시문이며, 통제된 모델 비교 실험의 대화 기록은 아니다. 모델·버전, 제공한 파일, 채택한 변경, 이후의 모든 전략 변형을 실험 일지에 남겨라. 그렇지 않으면 “아이디어 하나”가 어느새 보기 좋은 백테스트를 찾을 기회 수십 번으로 늘어나면서 기록은 남지 않을 수 있다.

사건이 일어나는 순서를 중심으로 Python 백테스트를 설계하라

엔진의 일별 반복문에는 의도적인 순서가 있다. 어제 대기시킨 주문을 오늘 시가에 실행하고, 오늘 종가로 계좌를 평가한 다음, 오늘의 의사결정을 계산한다. 이렇게 해야 일봉 종가로 같은 봉의 더 이른 가격에 체결하는 일을 막을 수 있다. 두 채널 모두 판단하는 봉을 제외한다. 아래 발췌 코드는 구현을 틀리기 쉬운 두 계산을 보여 준다.

Python 발췌 — 채널은 이전 봉만 사용한다
# Called at the completed close, after any pending open fill.
entry_level = max(b.high for b in bars[index-entry_lookback:index])
exit_level = min(b.low for b in bars[index-exit_lookback:index])

if not quantity and bar.close > entry_level:
    pending = {"side": "BUY", "signal_date": bar.date}
elif quantity and bar.close < exit_level:
    pending = {"side": "SELL", "signal_date": bar.date}
# Execute pending only on the NEXT loop iteration, at that bar's open.

진입 수량은 90% 예산 안에 수수료를 포함한다. 수수료율이 c이고 불리하게 조정한 매수 체결가가 P라면 수량은 0.9 × 현금 / [P × (1 + c)]다. 현금 90%만큼 매수한 뒤 수수료를 별도로 빼면 지정 예산을 초과한다. 슬리피지는 이미 P에 반영되어 있다. 추정 현금 비용을 다시 차감하면 두 번 부과하게 된다.

Python 발췌 — 진입 수수료를 포함해 90% 지출하기
commission = commission_bps / 10000
slippage = slippage_bps / 10000
fill_price = bar.open * (1 + slippage)  # adverse BUY fill
qty = allocation * cash / (fill_price * (1 + commission))
notional = qty * fill_price
fee = notional * commission
cash -= notional + fee

합성 테스트 15개를 실행했다. 미래 데이터 변경, 현재 봉 제외, 엄격한 돌파, 다음 시가 체결, 불리한 슬리피지, 수수료 포함 수량 계산, 실현 손익, 미결제 자산 평가, 같은 예산의 기준 전략, 마지막 미체결 신호, 준비 구간 분리, 잘못된 데이터, 부트스트랩 계산을 다룬다. 이 테스트는 특정 시점 처리와 회계 성질을 확인한다. 시장 우위를 입증하지는 않는다.

보기 좋은 차트보다 유용한 불변 조건이 있다. 날짜 t 이후의 가격을 바꾸어도 t 이전의 의사결정이나 체결은 바뀌지 않아야 한다. 또 하나는 부동소수점 허용 오차 안에서 정확한 대사다. 초기 자산 + 청산 거래 순손익 + 미결제 포지션 평가손익 = 최종 자산이어야 한다. 실행 프로그램은 시뮬레이션하는 모든 계좌에서 이 항등식을 확인한다.

차이를 명시한 Pine Script 구현

표준 일봉 차트에서 같은 이전 채널 기반 진입·청산 아이디어를 표현하는 Pine Script 구현도 작성했다. 확정 봉을 사용하고 일반 주문을 다음 봉에 실행하도록 예약한다. TradingView 전략의 브로커 에뮬레이터와 설정이 모의 체결을 결정한다. 차트 데이터와 봉 내부 경로 가정도 영향을 줄 수 있다. [2]

이 보조 코드를 TradingView에서 컴파일하거나 전략 테스터 결과를 얻지는 않았다. 이 글의 모든 성과 수치는 Python 엔진에서 나왔다. Pine 소스는 코드로 검토했으며, 이는 실제 실행보다 범위가 좁은 확인이다.

의도적으로 다른 점이 두 가지 있다. Pine의 슬리피지 설정은 고정 틱 수를 사용하지만 Python은 가격에 비례하는 5bp를 사용한다. 작성한 Pine 버전은 0틱이므로 기본 비용 모델을 재현하지 않는다. Pine의 기본적인 자산 대비 90% 수량 산정도 진입 수수료를 포함한 현금 90% 예산과 다르다. 따라서 두 계좌 수익률이 동등하다고 주장할 수 없다.

엔진을 제대로 비교하려면 먼저 피드, UTC 경계, 준비용 과거 데이터, 날짜 구간, 수량 기준, 수수료를 맞추어야 한다. 수익률보다 신호 날짜와 체결 원장을 먼저 비교하라. 거래가 다른데 최종 잔액만 비슷하다면 검증이 아니라 우연한 일치다.

실제 결과: 표본에서는 수익, 보유 기준 전략보다는 낮은 수익률

고정 알고리즘은 별도 확보한 943일의 과거 평가 구간에서 10,000 USDT를 11,154.96 USDT로 늘렸다. 11.55%는 그 기간의 누적수익률이며 연환산 수익률이 아니다. 일별 종가 기준 최대 낙폭은 29.72%였다. 청산한 거래는 8개, 수익 거래는 3개였으며 마지막에는 포지션이 없었다. 따라서 이 구간의 양의 순성과는 마지막 미결제 포지션의 미실현 이익에 의존하지 않는다.

기준 전략은 첫날 시가에 진입 수수료를 포함한 초기 현금의 90%를 투자한 뒤 보유했다. 수익률은 43.66%, 일별 종가 기준 낙폭은 51.05%였다. 계속 90%로 재조정하지는 않았다. 전략의 평균 일별 투자 노출은 33.62%였고, 기준 전략은 투자 상태를 유지하면서 비중이 변했다. 더 작은 낙폭과 더 낮은 수익률의 조합은 절충 관계다. 알파의 증거도, 위험을 맞춘 비교도 아니다.

고정 돌파 전략과 초기 배분 후 보유 기준 전략의 과거 평가 구간 일별 자산 및 낙폭. 전략의 최종 자산은 11,154.96 USDT, 기준 전략은 14,365.54 USDT다.
실제 Python 결과. 2024년 1월 1일–2026년 7월 31일. 둘 다 10,000 USDT로 시작하고 기본 가정 비용을 적용했다. 일별 종가 낙폭은 더 큰 장중 손실을 놓칠 수 있다. 출처: humblefool06 아카이브, TensorParadigm 집계.

아래 각 열은 포지션 없이 시작하는 별도 계좌다. 세 수익률을 복리로 연결해 연속 실적으로 만들면 안 된다. 초기화 방식과 마지막 포지션이 다르다. 기간 길이도 달라 연간 수익률처럼 비교할 수 없다.

기본 가정 비용을 차감한 고정 55/20 결과
지표개발: 2020년 5월–2022년검증: 2023년과거 평가: 2024년 1월–2026년 7월
계좌 순수익률+170.39%+16.55%+11.55%
최종 자산, USDT27,039.0411,654.6011,154.96
일별 종가 기준 최대 낙폭41.48%24.27%29.72%
청산 거래 / 마지막 미결제5 / 04 / 18 / 0
청산 거래 승률60.00%25.00%37.50%
청산 거래 순 프로핏 팩터4.050.661.28
평균 일별 투자 노출41.68%57.59%33.62%
초기 90% 배분 후 보유 수익률+82.46%+139.71%+43.66%
보유 전략의 일별 종가 기준 최대 낙폭75.56%18.90%51.05%

2023년 결과는 거래 요약이 왜 오해를 낳는지 보여 준다. 청산 거래 4개는 669.03 USDT를 잃었지만, 미결제 포지션의 진입 비용 차감 후 평가손익이 2,323.63 USDT여서 계좌는 1,654.60 USDT 늘었다. 가상의 청산 수수료는 충당하지 않는다. 청산 거래 프로핏 팩터이 0.66이면서 전체 계좌 수익률이 양수인 것은 모두 정확할 수 있다.

수익 계좌를 믿기 전에 손실 거래 하나부터 감사하라

과거 평가 구간의 첫 진입 신호는 2024년 1월 2일 발생했다. 전략은 1월 3일 원시 시가 44,946.91 USDT를 5bp 위로 조정한 44,969.383455에 매수했다. 총 진입 예산 9,000 USDT로 약 0.19993623 BTC를 취득했다. 진입 명목금액은 8,991.008991 USDT, 수수료는 8.991009 USDT였다.

1월 22일 청산 신호는 1월 23일 체결로 이어졌다. 원시 시가 39,568.02는 불리한 매도 슬리피지를 적용하면 39,548.23599가 된다. 매도 명목금액은 7,907.125205 USDT였고, 수수료 7.907125 USDT를 빼면 수취액은 7,899.218080 USDT다. 최초 진입 현금 비용 9,000 USDT를 빼면 순손실은 1,100.781920 USDT다. 손대지 않은 현금 1,000 USDT를 더하면 포지션이 없는 계좌에 8,899.218080 USDT가 남았다.

과거 평가 구간의 첫 청산 거래. 표시 금액은 반올림
기록값
진입 신호 → 체결2024년 1월 2일 → 1월 3일
진입 체결가 / BTC 수량44,969.383455 / 0.19993623
진입 명목금액 + 수수료8,991.008991 + 8.991009 = 9,000.000000 USDT
청산 신호 → 체결2024년 1월 22일 → 1월 23일
청산 명목금액 − 수수료7,907.125205 − 7.907125 = 7,899.218080 USDT
거래 순손익7,899.218080 − 9,000.000000 = −1,100.781920 USDT

이 원장은 반올림한 수익률보다 구현 확인에 유용하다. 신호 시점, 불리한 가격, 수수료 기준금액, 투입 현금 대비 거래 수익률(−12.23%)과 계좌 변화율(−11.01%)의 차이를 드러낸다. 보조 도구가 이 금액들을 대사하지 못한다면 추가 최적화는 믿을 수 없는 계산을 더 복잡하게 만들 뿐이다.

비용도 중요하지만, 여기서는 수익의 집중이 더 중요하다

과거 평가 구간의 기본 실행에서 실제 모델 수수료 합계는 171.19 USDT였다. 원시 시가 대비 불리한 가격 차이에 거래 수량을 곱한 합계는 85.59 USDT였다. 후자는 체결 기준에 대한 진단값이며 불리하게 조정한 체결가에 이미 반영되어 있다. 매수·매도 명목금액의 합계는 초기 자본의 17.12배로, 편도 비용이 작아도 누적될 수 있음을 보여 준다.

같은 규칙을 세 가지 가정 비용으로 다시 실행했다. 비용이 없는 경우 13.99%, 기본 경우 11.55%, 더 높은 비용의 경우 9.16%를 벌었다. 이는 각각 별도의 시뮬레이션이다. 비용은 매수 수량과 이후 재투자할 현금을 바꾸므로 최종 잔액 차이가 기본 실행의 수수료와 슬리피지 합계와 단순히 같지는 않다.

과거 평가 구간의 가정 비용별 민감도. 비용은 편도 기준
수수료 / 불리한 슬리피지순수익률일별 종가 기준 최대 낙폭
0 / 0 bp+13.99%28.77%
10 / 5 bp: 기본+11.55%29.72%
20 / 10 bp+9.16%30.66%

수익을 낸 청산 거래 3개는 5,244.53 USDT를 벌었고 나머지 5개는 4,089.57 USDT를 잃었다. 순이익은 1,154.96 USDT였다. 소수의 승자에 의존하는 것은 추세 추종과 일치할 수 있지만, 거래 8개로는 그런 승자가 얼마나 안정적으로 다시 나타날지 거의 알 수 없다. 상위 3개 손익을 빼 보는 것은 집중도 진단이지, 이후 수량 산정을 바꾸지 않은 채 그 거래들만 건너뛸 수 있었다는 유효한 가상 계좌가 아니다.

고정비는 이 수익률에 포함하지 않았다. 실제 계좌에서는 해당 과정에 실제로 귀속되는 데이터, 소프트웨어, 모델 사용, 호스팅 비용을 차감하고 적용 규정에 따른 세금을 고려해야 한다. 결정론적인 일별 규칙에는 봉마다 LLM API를 호출할 필요가 없다. 일반 코드가 할 수 있는 계산에 반복 비용을 붙이지 마라.

승자를 감상하기보다 탐색 과정을 기록해야 과적합을 줄일 수 있다

과적합은 정식 최적화 프로그램을 돌리기 전부터 시작되곤 한다. 다른 자산을 시도하고, 시작일을 바꾸고, 필터를 더하고, 결과를 본 뒤 보기 좋은 버전을 남긴다. 각 선택이 실질적인 탐색 범위를 넓힌다. 일반적인 홀드아웃도 반복해서 들여다보면 개발 데이터가 될 수 있다. 백테스트 과적합 연구는 이런 선택 문제를 다루며, 학습·검증 분할을 했다는 이유만으로 모든 과정에 합격증을 주지는 않는다. [5]

개발 설정 9개를 미리 고정했다. 진입 구간 40일, 55일, 70일과 청산 구간 10일, 20일, 30일의 조합이다. 표는 모든 순수익률을 보여 준다. 순위와 무관하게 55/20 규칙이 주전략이다. 여러 설정이 같은 거래를 생성하므로 9개 행이 독립적인 확인 9번을 뜻하지는 않는다.

기본 비용을 차감한 개발 변형 9개 전체의 순수익률
진입 구간청산 10일청산 20일청산 30일
40일+140.64%+164.32%+123.77%
55일+146.06%+170.39%: 고정 주전략+161.82%
70일+146.06%+170.39%+161.82%

이 개발 구간에서는 9개 모두 수익을 냈다. 이 작은 이웃 설정에 대한 유용한 맥락이지만 최적값이나 다른 자산·시장 국면에서의 견고성을 입증하지는 않는다. 주전략의 개발 구간 청산 거래는 5개뿐이므로 매개변수에 관한 주장의 근거로 특히 얇다. 정식 백테스트 과적합 확률이나 선택을 보정한 유의수준은 추정하지 않았다.

직접 연구할 때는 최종 표에 오르지 못한 시도도 보존하라. 이후 표본을 살펴보고 규칙을 바꾸었다면 수정 전략을 정직하게 표시하라. 그 표본을 사용한 전략이다. 파일 이름을 새로 붙여도 정보 장벽이 복구되지는 않는다.

프롬프트 2 — 조정하기 전에 연구 과정 감사하기
이 전략 명세, 실험 일지, 코드에서 미래 정보 참조, 검증 표본 반복 사용, 기록되지 않은 선택을 검토하라. 입력 이용 가능 시점과 체결 시점을 추적하라. 의심되는 구현 버그마다 실패를 드러내는 최소 테스트 데이터를 만들어라. 버그와 모델링 가정, 투자 가설을 구분하라. 성과를 개선하려고 매개변수를 바꾸지 마라. 표본이 뒷받침하지 않는 결론을 찾아라.

워크포워드는 선택 절차를 평가한다. 그래도 손실은 날 수 있다

보조 실험은 다른 질문을 던진다. 매년 연구자가 과거 데이터로 변형 9개 중 하나를 골랐다면 어땠을까? 각 구간의 학습은 2020년 5월 1일에 시작해 직전 12월 31일에 끝난다. 순수익률이 가장 높은 변형을 고르고, 같으면 낙폭이 더 작은 것, 그다음 진입·청산 기간 순서로 정한다. 다음 해에 평가하며 그 구간 안에서 다시 조정하지 않는다. 시간순 분할은 정보가 흐르는 방향을 지킨다. [6]

앵커드 워크포워드: 이전 데이터로 선택하고 다음 구간에서 검증
검증 구간학습 종료선택된 진입 / 청산검증 순수익률검증 최대 낙폭보유 수익률
20232022년 12월 31일55 / 20+16.55%24.27%+139.71%
20242023년 12월 31일55 / 30+38.44%19.37%+108.88%
20252024년 12월 31일55 / 10−4.02%15.82%−5.83%
2026년 1월–7월2025년 12월 31일55 / 30−14.24%15.35%−25.52%

선택된 알고리즘은 2025년에 4.02%, 2026년 1월–7월에 14.24%를 잃었다. 선택 절차가 시간상 올바르게 배치되어도 결과는 실망스러울 수 있다. 과거 수익률을 최적화했다는 사실은 선택한 설정이 다음 시장에서도 우세하다는 근거가 아니다.

각 검증 구간은 포지션 없이 10,000 USDT로 시작한다. 독립적으로 초기화한 테스트 계좌들이며, 해마다 포지션과 자산을 이어 가는 단일 계좌가 아니다. 2026년 구간은 일부 기간이다. 수익률을 곱해 실거래에 준하는 연속 실적으로 만들면 안 된다.

2024년–2026년 검증 날짜는 주전략의 과거 평가 구간과 겹치고, 이후 학습 구간은 이전 검증 연도를 포함한다. 이는 명시적으로 보조 진단이다. 또 다른 미사용 홀드아웃도, 핵심 결과의 독립적인 재현도 아니다.

몬테카를로 분석: 실제로 시뮬레이션한 불확실성을 설명하라

의존성이 있는 관측값을 재표본추출하는 원형 고정 길이 블록 부트스트랩을 사용한다. 입력은 고정 주전략 실행에서 나온 과거 평가 구간의 일별 순포트폴리오 수익률 943개이며 현금 보유일과 비용도 포함한다. 블록 길이 1일, 10일, 30일마다 시드 20261018로 같은 943일 기간의 경로 5,000개를 만든다. 블록은 표본 끝에서 처음으로 이어질 수 있으며 마지막 블록은 필요한 길이만큼 잘라 낸다. [7]

각 모의 경로는 추출한 수익률을 복리로 연결하고 자체 낙폭을 계산한다. 새로운 BTC 가격을 시뮬레이션하거나, 돌파 신호를 다시 생성하거나, 새 순서에 맞추어 거래 비용을 재계산하는 것은 아니다. 이미 관측한 포트폴리오 수익률을 재배열한다. 1일 블록은 시계열 순서를 버리고, 긴 블록은 국소적인 연속 구간을 보존하지만 전체 과거 시장 국면을 보존하지는 않는다. 어느 방법도 입력에 없던 위기를 추가하지 않는다.

모의 최종 손실 비율은 39.68%에서 42.66%다. 이 재표본추출 실험의 조건부 결과이지, 향후 943일 동안 전략이 손실을 볼 확률의 추정치는 아니다. 가장 안심되는 열을 고르기보다 블록 길이에 대한 민감도 자체를 보존해야 한다.

조건부 부트스트랩 결과. 수익률은 모의 943일의 누적값
블록 길이최종 수익률 P05 / 중앙값 / P95최대 낙폭 중앙값 / P95손실 비율낙폭 ≥20% 비율
1일−44.45% / +11.82% / +126.07%34.20% / 56.59%39.72%94.12%
10일−41.73% / +10.97% / +124.93%32.65% / 53.35%39.68%93.20%
30일−46.51% / +8.87% / +151.72%34.38% / 56.34%42.66%94.60%

경로 5,000개에서 손실 비율의 몬테카를로 표준오차는 √[p(1−p)/5,000]으로 계산하며 약 0.69–0.70퍼센트포인트다. 이는 유한한 시뮬레이션의 잡음을 측정한다. 데이터 출처, 매매 규칙, 미래 국면, 재표본추출 가정의 적절성에 관한 불확실성은 포함하지 않는다. 경로를 백만 개로 늘리면 시뮬레이션 잡음은 줄지만 시장 역사가 늘어나지는 않는다. 연구 대상 불확실성과 몬테카를로 오차를 나누어 보고하는 것은 표준적인 시뮬레이션 관행이다. [8]

결과를 감사한 뒤 더 나은 다음 질문을 정하라

Python 구현은 표준 라이브러리로 정규화한 일별 관측값을 계산한다. 연구 기록에는 구간별 보고서, 개발 변형 9개 전체, 보조 워크포워드 결과, 부트스트랩 요약을 보존했다. 출처 리비전과 해시가 계산에 사용한 관측값을 식별한다.

유용한 감사는 과거 평가 구간의 최종 자산 11,154.96 USDT와 위에서 설명한 첫 손실 거래에서 시작한다. 최종 수익률을 해석하기 전에 각 신호, 체결, 수수료, 현금 변화를 대사하라. 계산에는 전체 정밀도를 유지했다. 반올림한 기사 표는 표시용이지 후속 계산의 입력 대체물이 아니다.

그다음 질문에 어떤 근거가 필요한지 정하라. 피드 정확성을 조사하려면 독립 데이터셋을 구하라. 실행을 조사하려면 현실적인 주문 제약 아래 의사결정 시각, 제출 시각, 접수 확인, 체결가, 수량을 기록하라. 수정한 매개변수 선택 절차를 조사하려면 다른 시간순 구간을 평가하기 전에 선택 규칙을 작성하라. 서로 다른 실험이며 일지에서도 구분해야 한다.

프롬프트 3 — 백테스트와 실거래의 차이 조사하기
이 파일들의 타임스탬프가 있는 전략 신호, 제출 주문, 확인된 체결, 대사한 포지션을 비교하라. 가장 먼저 달라진 지점을 찾아라. 데이터, 시점, 수량, 실행, 회계로 분류하고 각 발견을 기록 ID로 뒷받침하라. 전략을 다시 조정하지 마라. 대사 표와 버그가 있다면 가장 작은 재현 예시를 제출하라.

목표가 매매일지나 셋업 스캐너라면 같은 원칙을 적용하라. 결과를 알기 전에 규칙 버전과 타임스탬프가 있는 셋업을 저장하고, 건너뛴 신호와 기각한 신호도 거래와 함께 보관하라. 보조 도구에 일지와 체결 원장을 대사하고 차이를 설명하게 하라. 거래 후의 이야기보다 이후 결과를 측정할 수 있는 당시 의사결정 기록이 더 유용하다.

프롬프트 4 — 사후 해석 없이 매매일지 검토하기
각 의사결정 전에 기록한 셋업 정의와 정보만 사용하라. 실행, 건너뜀, 기각한 신호를 모두 포함하라. 실제 거래와 주문 원장을 대사하라. 사전 지정한 셋업 범주별 준수 여부, 반복되는 실행 오류, 결과를 보고하라. 서술적 패턴과 규칙을 바꾸기에 충분한 근거를 구분하라. 누락 기록과 작은 표본을 표시하라.

이것을 수익성 있는 트레이딩 알고리즘이라고 부를 수 있을까?

좁은 의미의 과거 회계 결과로는 그렇다. 주전략의 과거 평가 계좌는 가정한 수수료와 슬리피지를 차감하고 1,154.96 USDT를 벌었다. 하지만 투입할 가치가 있는 반복 가능한 우위가 입증된 알고리즘이라는 더 강한 투자 의미에서는 근거가 부족하다. 제3자 암호화폐 아카이브 하나의 청산 거래 8개로는 그 주장을 입증할 수 없다.

판단은 투자 목적에도 달려 있다. 보유 기준 전략보다 높은 누적수익률을 원한 독자는 핵심 구간에서 그것을 얻지 못했다. 일별 종가 기준 약 30%의 낙폭을 감당할 수 없는 독자는 관측된 경로를 기각할 것이다. 이는 가능한 투자자 요구에 비춘 평가이지, 결과를 보기 전에 몰래 정해 둔 통과 기준은 아니다.

유용한 다음 단계는 고정된 전향적 모의 검증이다. 신호가 도착하기 전에 시작일을 기록하고, 모든 의사결정을 실제 거래 가능한 시장과 대사할 계획을 세워야 한다. 제안되는 수정은 모두 기록하되 검증 중인 버전을 조용히 바꾸지 마라. 모의 체결에도 현실적인 가정이 필요하다. 나중에 소액 실거래를 선택한다면 실제 체결과 운영에 관한 추가 질문에 답할 수 있다.

ChatGPT, Claude, Codex, Claude Code의 실질적인 가치는 개인이 이 연구 체계를 더 빠르게 만들고 살펴볼 수 있다는 데 있다. 그 체계가 반갑지 않은 답을 줄 수도 있다. 이 프로젝트에서는 수익을 낸 과거 계좌, 상당한 낙폭, 보유 기준보다 낮은 수익률, 소수의 중요한 거래가 나왔다. 보조 도구에 전략을 더 설득력 있게 설명해 달라고 요청하는 것보다 이 사실들을 공개하는 편이 더 유용하다.

10 / 확인 사항

트레이딩 알고리즘이 수익성 있다고 말하기 전에

  1. 독립적인 프로그래머 두 명이 같은 거래를 만들 수 있도록 진입, 청산, 시점, 수량 규칙을 작성하라.
  2. 출처 이력, 불변 데이터 사본 또는 해시, 누락 관측값 기록을 보존하라.
  3. 미래 데이터를 바꾸어도 이전 의사결정이 달라지지 않음을 입증하라.
  4. 초기 자산에 실현·미실현 손익을 더한 값과 최종 자산을 대사하라.
  5. 불리한 체결 가정, 수수료, 해당 계좌의 운영비를 포함하라.
  6. 적절한 기준 전략을 제시하고 노출과 위험의 차이를 설명하라.
  7. 실패하거나 포기한 시도까지 테스트한 모든 설정을 보존하라.
  8. 매개변수 선택과 이후 평가를 분리하고 재사용한 검증 기간을 공개하라.
  9. 모의 손실 빈도는 해당 모델과 과거 입력에 조건부인 값으로 다루어라.
  10. 전향적 검증 전에 다음 버전을 고정하고 기록한 신호를 실제·모의 체결과 대사하라.
FAQ / 핵심 답변

독자가 실제로 답을 알아야 할 질문

ChatGPT나 Claude가 수익성 있는 트레이딩 알고리즘을 코딩할 수 있나요?

구현, 테스트, 디버깅을 도울 수 있습니다. 우리의 고정 알고리즘은 과거 평가 구간에서 가정한 변동 거래 비용을 차감하고 11.55%를 벌었지만, 보유 기준보다 낮은 성과였고 낙폭은 29.72%였습니다. 이는 이 백테스트에 한정한 주장을 뒷받침합니다. 어느 보조 도구든 요청하면 안정적으로 미래 이익을 만들어 낸다는 뜻은 아닙니다.

트레이딩 봇에는 ChatGPT, Claude, Codex, Claude Code 중 무엇이 더 좋은가요?

이 연구는 순위를 정하지 않습니다. 연구 코드는 Codex에서 개발했고 통제된 ChatGPT·Claude 비교는 하지 않았습니다. 같은 명세, 테스트 데이터, 저장소 작업으로 각 도구를 평가하고 중대한 오류와 검토 부담을 측정하세요. 제품의 코딩 능력과 전략의 투자 가치는 서로 다릅니다.

Python 트레이딩 봇과 Pine Script 전략 중 무엇을 만들어야 하나요?

Pine Script는 차트 확인, 전략 시뮬레이션, 알림에 유용합니다. Python은 맞춤 데이터, 회계, 매개변수 실험, 포트폴리오, 재현 가능한 연구에 유용합니다. 이 글의 공개 수치는 Python에서 나왔습니다. Pine 버전도 작성하고 정적으로 검토했지만 TradingView에서 컴파일하거나 실행하지 않았고 수량·슬리피지 기준도 다릅니다.

트레이딩 전략의 과적합을 어떻게 피하나요?

재량적 선택을 줄이고, 모든 시도를 기록하고, 이후 평가 전에 선택 규칙을 고정하며 시간순을 지키세요. 주변 매개변수를 살피고 워크포워드 구간에서 전체 선택 절차를 검증하세요. 이런 단계는 스스로를 속일 기회를 줄이지만 살아남은 규칙에 지속적인 우위가 있다고 보장하지는 않습니다.

몬테카를로 시뮬레이션으로 전략의 수익성을 입증할 수 있나요?

아닙니다. 우리의 원형 블록 부트스트랩은 관측된 일별 순포트폴리오 수익률을 재배열합니다. 결과는 표본, 블록 길이, 재표본추출 가정에 달려 있습니다. 전략 의사결정을 다시 만들거나, 누락된 위기를 발견하거나, 현실의 신뢰할 만한 수익 확률을 추정하지 않습니다.

수익성 있는 백테스트가 실거래에서 손실을 내는 이유는 무엇인가요?

과거의 우위가 사라지거나, 작은 표본이 성과를 좋게 보이게 하거나, 구현이 당시 이용 불가능한 정보를 사용할 수 있습니다. 스프레드, 지연, 주문 규모, 부분 체결, 장애 때문에 실체결도 달라질 수 있습니다. 곧바로 전략을 다시 조정하기보다 타임스탬프가 있는 신호, 주문 요청, 확인된 체결, 대사한 포지션을 비교해 차이를 찾으세요.

이 트레이딩 알고리즘에는 자본이 얼마나 필요한가요?

초기 잔액 10,000 USDT는 회계 기준이지 최소 금액 권고가 아닙니다. 모델은 소수점 BTC를 허용하고 거래소의 최소 주문 단위와 운영 고정비를 무시합니다. 실제 가능성은 주문 한도, 유동성, 구독, 호스팅, 세금, 감당할 수 있는 손실에 달려 있습니다. 자본이 바뀌면 고정비의 중요성도 달라집니다.

이 과거 검증용 Python 모델은 자동매매를 하나요?

이 연구에서는 실거래 실행 어댑터를 개발하지 않았습니다. Python 구현은 과거 신호, 명시적 가정에 따른 체결, 계좌 결과를 계산합니다. 실거래 시스템에는 주문 접수 확인, 부분 체결 처리, 재연결 로직, 포지션 대사, 중복·오래된 주문에 대한 통제가 추가로 필요합니다.

출처와 재현 가능성

수치 결과는 출처를 표시한 아카이브로 TensorParadigm이 직접 계산했습니다. 연구 기록에는 최종 적용 프로토콜, 변경 기록, 해시, 정규화 데이터, 프로그램, 테스트, 전체 결과를 보존했습니다. 외부 출처는 데이터 귀속, 제품 기능, 방법론을 뒷받침하며 이 전략을 보증하지는 않습니다.

  1. humblefool06의 과거 BTC-USDT 아카이브: 데이터셋, 고정 리비전, 게시자의 라이선스 선언
  2. TradingView Pine Script 문서: 전략, 브로커 에뮬레이터, 거래 비용
  3. OpenAI 문서: 코드 생성과 Codex
  4. Anthropic 문서: Claude Code 개요
  5. Bailey 외: 백테스트 과적합의 확률
  6. Scikit-learn 문서: 시간순 시계열 분할
  7. Politis와 Romano: 정상 데이터를 위한 원형 블록 재표본추출 절차
  8. Morris, White, Crowther: 통계 방법 평가를 위한 시뮬레이션 연구 활용
  9. 크리에이티브 커먼즈 저작자표시 4.0: 출처 표시와 변경·가공 조건

교육 목적의 과거 연구입니다. 수익률에는 가정한 변동 거래 비용이 포함되지만 세금과 운영 고정비는 제외됩니다. 실거래나 AI 모델 간 투자 성과 비교 실험은 수행하지 않았습니다. 과거·모의 결과는 미래 수익성을 입증하지 않습니다.