↗
TENSORPARADIGM신경망 기반 시장 분석
TENSORPARADIGM 리서치 / 체결 / 재현 가능한 백테스트

Python과 Pine Script 백테스트: 같은 매매 전략의 결과가 다른 이유

체결 시점, 수량 산정, 틱과 베이시스포인트 비용, 계좌 순자산을 살펴보는 비트코인 연구. Python 실측 결과와 명확한 Pine Script 비교 절차를 설명합니다.

핵심 답변과 이번 측정의 범위

매매 신호가 같아도 백테스트 결과가 같지는 않습니다. 주문 시점, 수량, 슬리피지 단위, 미청산 포지션의 회계 처리가 결과를 바꿀 수 있습니다. 고정한 BTC-USDT 일봉 돌파 전략은 2024~2025년에 가정한 비용을 차감한 뒤 +24.46%를 기록했고, 같은 예산의 매수 후 보유 계좌는 +96.28%였습니다. Python에서 네 가지 체결 규칙의 영향을 측정하고, 손실 거래의 회계를 대조하고, 평가 기간의 모든 캔들을 거래소 API와 확인했습니다. 여기서 다루는 Pine 구현은 TradingView에서 실행하지 않았으며 엔진 간 일치 여부는 아직 검증되지 않았습니다.

이 연구가 설명하는 것

  • 고정한 매매 규칙이 신호, 주문, 체결, 현금 회계로 연결되는 방식.
  • 다음 봉 시가와 같은 봉 종가 체결, 신호 시점 수량 산정, 틱과 베이시스포인트의 차이를 측정한 결과.
  • 비용 차감 전후 성과, 낙폭, 벤치마크, 개발 단계의 전체 9개 조합과 두 워크포워드 구간.
  • 엔진을 비교하기 전에 Pine 체결 조건을 정하고 내보낸 기록을 공통 형식으로 정리하는 방법.

매매 규칙은 백테스트의 한 부분이다

두 구현이 비트코인 돌파 신호에는 동의하면서도 매수 수량, 체결 비용, 보고할 수익 지표에는 차이를 보일 수 있습니다. 종가 시점의 신호는 주문을 생성하라는 지시이지, 그 종가에 체결되었다는 기록이 아닙니다. TradingView는 일반적인 시장가 주문을 보통 다음 사용 가능한 틱, 흔히 다음 봉 시가에서 처리합니다. 설정으로 이 방침을 바꿀 수 있습니다. [1]

하나의 고정한 비트코인 일봉 돌파 규칙으로 이러한 차이를 조사합니다. 선언한 네 가지 체결 규칙을 정확히 같은 캔들에 적용합니다. 아래의 모든 수치 비교는 Python에서 실행했습니다. 여기서 다루는 Pine Script 구현은 TradingView에서 컴파일하거나 실행하지 않았고, Pine에서 내보낸 원장도 없습니다. 따라서 명시한 규칙의 결과를 측정하며, 플랫폼 간 성과 비교를 완료했다고 주장하지 않습니다.

데이터와 신호는 같게, 체결 방침은 의도적으로 다르게
Python 계산수량 및 체결 방침평가 수익률
reference-next-open수수료 포함 현금의 90%를 다음 시가에서 수량화, 5 bp 불리한 체결 조정+24.46%
signal-qty-bps신호 종가로 수량 고정, 다음 시가에 5 bp 불리한 가격 조정+24.47%
signal-qty-ticks같은 신호 시점 수량, 다음 시가에 0.01 USDT짜리 5틱 적용+25.13%
same-close완성된 신호 봉 종가에 5 bp 불리한 조정으로 체결하는 시점 반사실 실험+24.46%

이번 글은 앞선 알고리즘 구현 연구를 확장합니다. 앞선 글은 전체 연구 절차를 구축하고 Pine 수량 산정과 슬리피지의 차이를 다뤘습니다. 여기서는 그 차이를 명시적인 실험으로 만듭니다. 마지막 절은 자신의 Python과 TradingView 구현에서 나온 기록을 비교하는 방법을 설명합니다.

실행 전에 경제적 질문과 회계를 고정한다

경제적 가설은 지속적인 추세가 반복되는 돌파 실패의 손실을 보상할 수 있다는 것입니다. 55와 20만 수익을 낸다는 뜻은 아닙니다. 체결 검증의 대상을 일정하게 유지하려고 이전 글의 조회 기간을 그대로 사용합니다. 순자산 곡선이 매력적으로 보인다는 이유로 새 규칙을 고르면 다른 질문에 답하게 되고, 선택 기회도 하나 더 늘어납니다.

고정한 주요 명세
항목기록한 규칙
시장과 데이터BTC-USDT 현물 가격, UTC 일봉, 2020-02-20~2025-12-31 입력
진입미보유 상태: 완성된 종가가 현재 봉을 제외한 직전 55개 봉의 최고 고가를 엄격히 초과
청산매수 보유 상태: 완성된 종가가 현재 봉을 제외한 직전 20개 봉의 최저 저가를 엄격히 하회
주문종가 확정 후 신호, 다음 시가에 체결, 마지막 봉의 주문은 미체결 유지
자본기간마다 10,000 USDT와 미보유 상태로 시작, 진입 수수료를 포함해 현금의 90% 사용, 소수 BTC 허용
기본 비용매수·매도 각각 수수료 10 bp와 불리한 가격 조정 5 bp
기타 가정레버리지·공매도·펀딩비·현금 이자·세금·고정 운영비 없음, 별도 스프레드 비용 없음
최종 포지션마지막 종가로 시가평가, 강제 매도나 가상 청산 비용 충당금 없음
기간개발 2021~2022년, 검증 2023년, 평가 2024~2025년, 이전 데이터는 지표 준비에 사용

이번 작업에서 성과를 계산하기 전에 명세, 설정, 데이터 수정 사항을 기록했습니다. 이는 내부 연구 기록이며 독립적인 사전 등록이 아닙니다. 같은 규칙과 겹치는 시장 이력은 이 사이트에서 이미 연구했습니다. 2024~2025년 구간은 고정한 구현을 시간순으로 평가한 것이며, 이전에 몰랐던 시장에서 얻은 새로운 증거가 아닙니다.

주된 통과 조건은 기계적입니다. 체결은 기록한 정보 시점을 따라야 하고, 현금을 빌리지 않아야 하며, 청산 손익과 미청산 손익의 합은 계좌 순자산과 맞아야 합니다. 경제적 평가에는 같은 예산의 매수 후 보유 기준선, 낙폭, 거래 마찰 민감도, 수익 집중도를 보고합니다. 수익률이 양수라는 사실만으로 실전 투입을 결정할 수는 없습니다.

새로운 출처 대조로 무엇을 확인했는가

주요 계산에는 이전 연구에서 사용한 데이터셋의 일별 관측 2,142개를 사용합니다. UTC 하루마다 4시간봉 여섯 개를 합친 데이터이며, humblefool06이 Hugging Face에 CC BY 4.0이라고 명시해 공개했습니다. 연구 기록에는 고정한 리비전, 출처 표기, 변환 설명, SHA-256 해시를 보존합니다. 앞선 연구에서 그 전날의 불완전한 데이터를 제외했으므로 보존한 시계열은 2020년 2월 20일부터 시작합니다. 이번 분석은 2025년 12월 31일까지의 고정한 부분집합을 사용합니다. [3] [9]

별도로 Binance 공개 시장 데이터 API에서 2024~2025년의 일봉 731개를 모두 가져왔습니다. 시가·고가·저가·종가·거래량 총 3,655개 비교값이 전부 정확히 일치했습니다. 검증 보고서에 요청 URL, 응답 해시, 비교 절차를 기록합니다. 원시 API 응답을 주요 데이터셋으로 재배포하지는 않습니다. Binance 문서는 캔들의 기본 경계가 UTC이며 Kline을 시작 시각으로 식별한다고 설명합니다. [4]

파일 해시만 확인하는 것보다 강한 검사입니다. 다른 전달 경로가 평가 기간의 같은 캔들을 보고하는지 확인하기 때문입니다. 다만 같은 거래소 안에서의 대조이며, 독립적인 가격 감사는 아닙니다. OHLC 값에서 실제 주문이 체결될 수 있었다는 뜻도 아닙니다. 지표 준비 및 개발 기간은 이번 731개 캔들 API 대조에 포함되지 않았습니다.

연구 데이터를 읽을 때 시각 연속성, 중복 날짜, 유한한 양의 가격, OHLC 일관성을 검사했습니다. 잘못된 시계열은 재현 가능해도 여전히 잘못된 것입니다. 출처 카드와 본문에서 설명한 검증 절차는 남아 있는 불확실성을 드러냅니다. 설명을 그럴듯하게 만들려고 전문가 검토자나 두 번째 독립 피드를 지어내지 않습니다.

완성된 신호로 그 봉의 과거 시가에 살 수는 없다

기준 루프는 먼저 전날 보류한 주문을 오늘 시가에 실행하고, 오늘 완성된 종가로 포지션을 평가한 다음에야 오늘의 다음 지시를 계산합니다. 진입·청산 채널에는 이전 봉만 넣습니다. 진입 채널에 오늘 고가를 넣으면 정상 OHLC 데이터에서는 종가가 그 고가를 엄격히 넘는 돌파가 불가능해집니다. 정보를 사용할 수 있는 시점의 검사는 미래 정보 참조 편향 연구를 참고하세요.

Python으로 표현한 정보 이용의 경계
entry_level = max(b.high for b in bars[i-55:i])
exit_level = min(b.low for b in bars[i-20:i])
# Evaluate only after today's completed close.
if quantity == 0 and bar.close > entry_level:
    pending = ("buy", bar.date)
elif quantity > 0 and bar.close < exit_level:
    pending = ("sell", bar.date)
# Execute pending on the next bar; never at this bar's earlier open.

체결 시점 현금 배분을 쓰는 기준 구현은 q = 0.9 × 현금 / [체결가 × (1 + 수수료율)]만큼 매수합니다. 브로커나 시뮬레이터는 실행 가격을 알게 된 시점에 이 수량을 계산할 수 있습니다. 반면 이전 종가에서 수량을 명시해 제출하는 Pine 주문은 당시 이용 가능한 정보만 사용해야 합니다. 대안 구현은 신호 종가로 수량을 고정하며, 이후 자금이 부족해진 주문은 거절합니다. 현금을 만들어 내거나 조용히 수량을 바꾸지 않습니다.

인위적인 갭으로 차이를 쉽게 볼 수 있습니다. 현금 10,000 USDT, 신호 종가 100, 다음 시가 110, 비용 0, 배분 90%라면 체결 시점 수량 산정은 81.818182단위를 사고 현금 1,000을 남깁니다. 신호 시점 수량 산정은 90단위를 요청해 9,900을 쓰고 100을 남깁니다. 체결 순간 두 계좌의 순자산은 모두 10,000이지만 이후 노출은 달라집니다. 이 산술 예시는 설명용이며 측정한 비트코인 이력과는 별개입니다.

수익률 비교 전에 Pine 코드의 조건을 명시한다

여기서 다루는 Pine v6 설계는 확정 일봉, 이전 봉 채널, 명시한 신호 시점 수량, 비율 수수료, 기본 기능의 5틱 슬리피지를 사용합니다. 독립적인 비교에서는 표준 BTCUSDT 현물 일봉 차트, 고정한 명세의 기간, 충분한 지표 준비 이력, 명시한 설정을 사용해야 합니다. 이 연구에서는 TradingView 컴파일이나 Strategy Tester 검증을 수행하지 않았습니다.

혼동하기 쉬운 두 단위가 있습니다. 5베이시스포인트는 가격의 0.05%이고, 0.01 USDT짜리 5틱은 0.05 USDT입니다. 비트코인이 100,000 USDT라는 가정에서 불리한 가격 조정은 각각 50 USDT와 0.05 USDT입니다. 틱 수는 백분율이 아닙니다. Pine의 내장 슬리피지는 틱을 입력받으며, 진입 qty를 명시하면 기본 비율 수량 설정보다 우선합니다. [1]

Python의 signal-qty-ticks 모델은 명시한 Pine 규칙과 대조하기 위한 대상이며 TradingView의 완전한 복제본이 아닙니다. 피드 수정, 최소 계약 단위, 수량 반올림, 자금 충족 및 증거금 규칙은 여전히 다를 수 있습니다. 기준 구현은 거래소 로트 필터 없이 소수 단위를 허용합니다. 어떤 모의 수량도 거래소에서 유효한 실주문이라고 주장하지 않습니다.

calc_on_every_tick과 calc_on_order_fills는 명시한 기본값으로 유지하고 process_orders_on_close는 비활성화하세요. 계산이나 주문 처리 방침을 바꾸면 다른 실험이 됩니다. Pine 실행 모델은 과거와 실시간 갱신을 구분하므로, 완성된 캔들에서는 같아 보이는 전략도 봉이 형성되는 중에는 다르게 동작할 수 있습니다. [2]

기준 전략은 수익을 냈지만 수익률 벤치마크에는 못 미쳤다

2024년 1월 1일부터 2025년 12월 31일까지 평가 기간 731일 동안 기준 전략은 10,000 USDT를 12,445.81 USDT로 만들었습니다. 가정한 변동비를 차감한 수익률은 +24.46%입니다. 같은 초기 배분의 매수 후 보유 계좌는 +96.28%였습니다. 명시한 기간의 누적 수익률이며 연환산 수치가 아닙니다.

기간별 독립 계좌, 모두 10,000 USDT와 미보유 상태로 시작
기간일수비용 전 전략비용 후 전략90% 보유청산 거래
2021~2022년 개발730+22.64%+21.32%-38.60%4
2023년 검증365+17.97%+16.55%+139.71%4
2024~2025년 평가731+26.50%+24.46%+96.28%6

전략의 일별 종가 기준 최대 낙폭은 20.04%, 보유 기준선은 30.86%였습니다. 시가평가한 평균 투자 비중은 37.59%였으며, 731번의 종가 중 300번에서 포지션을 보유했습니다. 전체 거래대금을 초기 순자산으로 나눈 회전율은 12.96배입니다. 이 지표는 왕복 거래 횟수가 아니라 매수와 매도 양쪽을 모두 셉니다.

매수 후 보유는 전체 기간에 초기 배분을 유지하고, 돌파 전략은 현금과 비트코인 사이를 오갑니다. 수익률도 높고 낙폭도 크다는 사실만으로 완전한 위험조정 순위를 매길 수는 없습니다. 구체적인 결론은 더 좁습니다. 돌파 계좌가 지정한 누적 수익률 벤치마크를 넘지 못했다는 것입니다. 일별 종가 낙폭에는 하루 중 발생했다가 회복된 손실도 빠집니다.

2024~2025년 돌파 기준 전략과 같은 예산의 매수 후 보유 기준선의 일별 시가평가 순자산
연구 데이터셋으로 계산했습니다. 두 곡선 모두 10,000 USDT에서 시작하며 가정한 비용을 포함합니다. 순자산은 일별 종가로 시가평가합니다.

손실 거래를 주문부터 현금 잔액까지 감사한다

평가 기간에서 처음 손실로 청산된 거래는 2024-01-02 신호 이후 2024-01-03에 진입하고, 2024-01-22 신호 이후 2024-01-23에 청산했습니다. 수량은 0.19993623 BTC였습니다. 원장은 원래 기준 가격과 불리하게 조정한 체결 가격을 분리해 기록합니다. 아래 표는 실제 모의 체결값을 사용합니다.

진입 거래대금은 8,991.01 USDT, 진입 수수료는 8.99였습니다. 현금은 10,000.00에서 1,000.00으로 줄었습니다. 청산 시 체결가 기준 손익은 -1,083.88이었고 양쪽 수수료를 빼면 순손익은 -1,100.78 USDT입니다. 최종 현금은 8,899.22였습니다. 표시값을 더할 때 생기는 작은 차이는 반올림 때문이며 연구 계산에는 전체 정밀도를 유지합니다.

실제로 시뮬레이션한 손실 거래 한 건, 별도 표기 없으면 USDT
원장 항목값
진입 체결가44,969.38
BTC 수량0.19993623
진입 수수료8.99
진입 후 현금1,000.00
청산 체결가39,548.24
청산 수수료7.91
수수료 전 체결가 손익-1,083.88
청산 거래 순손익-1,100.78
청산 후 현금8,899.22

슬리피지는 이미 진입·청산 체결가를 바꿨습니다. 표시한 슬리피지 손실분을 체결가 손익에서 다시 빼면 두 번 청구하는 셈입니다. 이 원장의 “거래 총손익”은 수수료 차감 전이지만 체결가 슬리피지 반영 후입니다. 별도의 비용 전 전략 실행은 수수료와 슬리피지를 모두 제거합니다. 서로 다른 계산을 가리키는 이름입니다.

청산 거래 손익과 계좌 순자산은 서로 다른 질문에 답한다

평가 기간은 미보유 상태로 끝나므로 청산 거래 여섯 건이 전체 계좌 이익을 설명합니다. 더 잘 드러나는 사례는 2023년 검증 계좌입니다. 청산 거래는 669.03 USDT를 잃었지만, 남은 0.25356187 BTC에는 이미 지불한 진입 수수료를 차감한 뒤에도 2,323.63의 미청산 시가평가 이익이 있었습니다. 따라서 전체 계좌 이익은 1,654.60 USDT, +16.55%였습니다. 최종 현금은 933.10에 불과했고, 총 계좌 가치 11,654.60의 나머지는 보유 자산이었습니다.

대조 항등식은 초기 순자산 + 청산 순손익 + 미청산 시가평가 손익 = 현금 + 보유 자산 시가 = 최종 순자산입니다. 모든 실행에서 반올림 전 정밀도로 검사합니다. 플랫폼의 청산 거래 통계와 전체 계좌 수익률은 둘 다 산술적으로 정확해도 다를 수 있습니다. 그 차이를 버그로 판단하기 전에 같은 수량을 비교해야 합니다.

마지막 종가에 청산하면 다른 질문에 답하게 되며 매도 수수료와 불리한 체결이 한 번 더 발생합니다. 실현 손익과 미실현 손익을 조용히 바꾸지 않고, 미청산 시가평가를 유지하며 그 규칙을 밝힙니다.

이 캔들에서는 어떤 체결 차이가 중요했는가

수량 산정만 체결 시점 현금 배분에서 신호 종가로 고정한 수량으로 바꾸면 평가 수익률이 +0.0099퍼센트포인트 움직입니다. 그 수량 모델에서 5베이시스포인트를 5틱으로 바꾸면 수익률이 +0.6651포인트, 금액으로 66.507521 USDT 달라집니다. 같은 봉 종가 체결은 기준 최종 잔액을 불과 +0.002848 USDT 바꿨습니다. Python에서 측정한 방침의 효과이며, TradingView에서 관측한 불일치가 아닙니다.

비트코인은 계속 거래되므로 이 표본에서는 인접한 일봉 종가와 다음 시가가 가까울 수 있습니다. 여기서 시점 효과가 작았다고 다른 시장, 비유동적인 구간, 지연이 있는 실거래 구현에서 같은 봉 종가 체결이 타당해지는 것은 아닙니다. 인위적인 갭 사례는 같은 프로그래밍 선택이 다른 가격 경로에서 훨씬 중요해질 수 있는 이유를 보여 줍니다.

구현을 대조할 때는 순자산 곡선보다 먼저 체결 기록을 비교하세요. 최초로 다른 수량이나 가격을 찾고 현금에 미치는 영향을 이후로 추적하세요. 이후 배분은 앞선 현금에 의존하므로 차이가 누적됩니다. 최종 수익률이 비슷하다고 거래 구조가 일치한다고 증명되지는 않습니다.

선언한 네 가지 Python 체결 규칙에 따른 일별 계좌 순자산
네 경로 모두 Python에서 계산했습니다. 모델링 방침을 분리한 것이며 TradingView Strategy Tester 결과가 아닙니다.

비용과 예외적으로 큰 이익 거래에 대한 의존도를 검증한다

기준 전략은 12번의 체결에서 수수료 129.58 USDT를 냈습니다. 비용 표는 매수·매도 각각 수수료를 10 bp로 고정하고 불리한 가격 조정을 바꿉니다. 조정이 0이라고 비용이 없는 계좌는 아닙니다. 앞선 표의 비용 전 전략 행은 수수료와 슬리피지를 모두 제거한 별도 계산입니다. 과거 매수·매도 호가 스프레드를 추정하는 대신 스프레드와 체결 손실분을 하나의 불리한 조정으로 합쳐 가정했습니다. 더 넓은 비용 항목은 거래 비용 분석을 참고하세요.

2024~2025년 체결 비용 민감도
매수·매도 각각 수수료매수·매도 각각 불리한 조정순수익률일별 종가 최대 낙폭
10 bp0 bp+25.13%19.79%
10 bp5 bp+24.46%20.04%
10 bp10 bp+23.79%20.30%
10 bp20 bp+22.45%20.80%

평균 청산 거래 순손익은 407.63 USDT였습니다. 평균 이익 거래는 1,748.18, 평균 손실 거래는 -932.91이었으며, 청산 거래의 수익계수는 1.87, 승률은 50.00%였습니다. 금액 평균은 계속 바뀌는 계좌 규모에 의존합니다. 이 원장의 기술 통계이며 다음 거래의 안정적인 예측값이 아닙니다.

가장 큰 청산 거래 세 건의 기여는 5,244.53 USDT였습니다. 전체 계좌 손익에서 이 기여분을 빼면 -2,798.72가 남습니다. 이는 집중도를 살피는 산술이며, 해당 거래를 건너뛰고 이후 수량을 다시 계산한 실행은 아닙니다. 연간 수익률도 경로를 보여 줍니다. 2024년 +38.44%, 2025년 -10.10%였습니다. 연간 수익률은 매년 새 계좌를 만든 결과가 아니라 연속된 평가 계좌에서 계산합니다.

탈락한 조합도 독자가 볼 수 있도록 남긴다

진입 조회 기간 35·55·80에 청산 조회 기간 10·20·30을 각각 조합한 아홉 가지를 선언했습니다. 표는 비용 후 개발 결과를 모두 보고합니다. 순위와 관계없이 55/20을 유지하므로 비교가 가장 보기 좋은 체결 결과를 찾는 작업으로 슬쩍 바뀌지 않습니다.

2021~2022년 개발 순수익률, 선언한 모든 조합
진입 조회 기간청산 10청산 20청산 30
35+4.00%+10.03%-9.22%
55+14.61%+21.32%+17.48%
80+9.12%+15.55%+11.89%

아홉 칸 중 여덟 칸은 양수이지만 수익률은 −9.22%에서 +21.32%까지입니다. 35/30은 손실이고 청산 설정에 따라 결과가 크게 달라집니다. 유지한 55/20 규칙도 우연히 1위였습니다. 선택 기록은 이번 실행에 앞서지만, 이전 글에서 이미 그 규칙을 알고 있었습니다. 이 일치는 독립적인 확인이 아닙니다. 같은 시장 이력을 공유한 결과들은 서로 연관되며 기간 분할이나 그리드로 기존 지식을 지울 수는 없습니다. Bailey와 공저자들은 백테스트 선택의 과최적화를 분석하지만, 이번 그리드는 그 논문의 정식 백테스트 과최적화 확률 추정량이 아닙니다. [5]

두 워크포워드 구간은 이전 데이터만 사용하는 기록된 선택 절차를 시험합니다. 아홉 가지 중 훈련 수익률이 가장 높은 조합을 선택하고 다음 해에 평가합니다. 테스트 연도는 2022년과 2023년이며 2024~2025년을 선택에 사용하지 않습니다. 이 구간들은 진단용 확장이며 최종 계좌에 대한 추가적인 미사용 증거가 아닙니다.

선택 절차는 다음 기간의 검증을 통과해야 한다

각 구간은 10,000 USDT에서 새로 시작하고 이전 봉으로 지표를 준비하며 선택한 매개변수를 추가 수정 없이 적용합니다. 좋은 훈련 순위는 후보에게 테스트를 받을 기회를 줄 뿐, 테스트 결과를 주지는 않습니다.

사전에 정한 워크포워드 진단
훈련 기간다음 테스트 연도선택한 진입/청산테스트 순수익률
2021-01-01–2021-12-31202235/20-30.54%
2021-01-01–2022-12-31202355/20+16.55%

선택한 매개변수와 이후 수익률을 모두 남깁니다. 이후 기간이 손실이면 그 실패도 보고서에 남습니다. 글에 수익 결과를 담기 위해 새 필터를 추가하거나 주 규칙을 다시 조정하거나 최종 기간을 계속 열어 보지 않습니다.

몬테카를로 경로는 증거의 양이 아니라 순서를 바꾼다

기준 계좌에서 관측한 731개의 일별 순수익률을 원형의 연속된 20일 블록으로 재표집하며 시계열 끝에서는 처음으로 돌아갑니다. 각 모의 경로는 같은 일수와 같은 초기 자본을 사용합니다. 고정 시드 6142026과 5,000개 경로로 계산을 재현할 수 있습니다. 하루씩 섞는 것과 달리 블록은 일부 국소적 시계열 의존성을 보존합니다. 블록 길이는 명시한 모델링 선택이며 추정한 최적값이 아닙니다. [6]

모의 누적 수익률 중앙값은 +20.98%, 5백분위와 95백분위는 -38.34%와 +166.29%였습니다. 최대 낙폭 중앙값은 30.22%, 95백분위는 50.12%였습니다. 손실 모의 경로 비율은 32.28%였습니다. 이는 조건부 경로 요약이며, 보정된 미래 손실 확률이나 알파의 신뢰구간이 아닙니다.

계좌 수익률을 재표집해도 새 캔들이 만들어지거나 돌파 결정이 다시 실행되거나 새로운 유동성 조건과 누락된 위기가 복원되지는 않습니다. 여기서는 벤치마크 대비 성과를 부트스트랩하지 않습니다. 경로 수를 늘리면 선택한 절차의 몬테카를로 잡음은 줄지만, 기초가 되는 과거 증거는 같은 731일과 같은 거래 순서로 남습니다.

각 단계마다 검증 가능한 일을 도우미에게 맡긴다

ChatGPT와 Claude는 규칙을 명확히 표현하고 회계 불일치를 설명하며 보고서의 논리를 비판하는 데 도움을 줄 수 있습니다. Codex와 Claude Code는 저장소를 살펴보고 파일을 수정하며 개발 명령을 실행할 수 있습니다. 문서에 설명된 기능은 작업을 지원하지만 수익성 있는 매매 알고리즘을 입증하지는 않습니다. 이 연구는 저장소 개발에 Codex, 계산에 Python을 사용했습니다. 통제된 ChatGPT 대 Claude 실험을 수행하지 않았고 어느 도우미도 매매 신호를 예측하는 데 사용하지 않았습니다. [7] [8]

먼저 정보 이용의 경계를 정합니다. 도우미는 엄격한 비교인지 등호를 포함하는지, 이전 봉 구간, 주문·체결 시점, 현금 예산, 반올림, 최종 보유량 등 미해결 세부 사항을 구현 전에 드러내야 합니다. 첫 프롬프트는 재사용할 수 있는 의뢰문이지 모델 비교 실험을 기록했다는 주장이 아닙니다.

프롬프트 1 — 모호함 없애기
코딩 전에 이 매매 아이디어를 실행 가능한 명세로 바꿔 주세요. 경제적 가설, 진입·청산, 각 입력이 사용하는 봉, 신호 이용 가능 시점, 주문·체결 시점, 수량과 현금 제약, 비용, 시간대, 최종 평가, 시간순 기간, 벤치마크, 판단 기준을 명시하세요. 미해결 선택 사항을 나열하세요. 과거 결과를 개선한다는 이유로 규칙을 고르지 마세요.

그다음 구현을 제한합니다. 상태 머신과 테스트 데이터를 요청하되, 버그 수정 요청 안에 전략 최적화가 숨어들지 않게 합니다. 유용한 미래 데이터 검사는 시점 t 이후 가격을 바꿔도 그 이전 결정이나 체결이 바뀌지 않는지 확인합니다. 유용한 회계 검사는 마지막 거래가 미청산이어도 현금·보유량·수수료를 대조합니다.

프롬프트 2 — 합의한 조건 구현하기
첨부한 고정 명세를 정확히 구현하세요. 신호, 주문 생성, 체결, 현금 회계, 보고를 분리하세요. 필터를 추가하거나 매개변수를 최적화하지 마세요. 현재 봉 제외, 다음 시가 시점, 수수료 포함 수량, 자금 부족 주문, 마지막 미청산 포지션에 인위적인 테스트 데이터를 사용하세요. 각 규칙이 코드와 테스트에 어떻게 연결되는지 보여 주세요.

디버깅은 최초 불일치의 행부터 비교합니다. 보고서에는 파일에서 도출한 수치와 실행하지 않은 구성 요소의 명확한 상태 표시를 요구합니다. 시장 데이터가 관측을 제공하고 실행 가능한 코드가 계산하며, 어떤 가정과 비교를 신뢰할지는 연구자가 결정합니다.

프롬프트 3 — 최초 차이 찾기
두 정규화 원장을 시각 순으로 비교하세요. 입력 봉, 신호, 요청 수량, 체결가, 수수료, 포지션, 순자산 중 최초 차이를 찾으세요. 기록된 설정과 행의 값으로 설명하세요. 초기 순자산에 청산·미청산 손익을 더한 값을 최종 순자산과 대조하세요. 전략을 다시 조정하거나 최종 수익률만으로 버그를 추론하지 마세요.
프롬프트 4 — 재현 가능한 보고서 만들기
제공한 설정, 데이터 명세, 실행한 결과 파일만으로 보고서를 작성하세요. 테스트한 모든 조합, 기간 경계, 비용 전후 수익률, 벤치마크, 낙폭, 노출, 회전율, 수익 집중, 미청산 포지션 회계를 포함하세요. 모든 표를 원본 파일에 연결하세요. 실행하지 않은 코드와 할 수 없었던 검사를 명시하세요. 불리한 결과를 남기고 검토나 모델 비교를 지어내지 마세요.

실제 TradingView 실행을 대조하는 방법

자신의 Pine과 Python 구현을 비교하려면 같은 종목·기간의 표준 일봉 차트를 사용하고 Pine 소스, 설정, 차트 피드, 내보낸 거래를 보관하세요. 신호를 분리할 때는 비용 0부터 시작하고, 이후 두 엔진에 수수료와 같은 틱 기반 슬리피지를 추가하세요. 계좌 수익률보다 먼저 신호 날짜와 거래를 비교하세요. 로트 단위나 피드 이력의 차이는 반올림으로 없애지 말고 불일치로 기록해야 합니다.

양쪽 체결 기록을 시각, 방향, 요청 수량, 기준 가격, 체결가, 수수료, 체결 후 포지션, 현금, 순자산이라는 공통 스키마로 정리하세요. 각 내보내기 필드의 대응 관계를 시간대, 단위, 반올림까지 명시하세요. 본문에서 설명한 신호 수량·틱 비용 Python 규칙을 비교 대상으로 삼으세요. 이는 진단 절차이며 모든 언어의 Strategy Tester 내보내기 형식이 같다는 주장이 아닙니다. Pine 실행을 내보내지 않으면 엔진 간 결과는 미검증 상태로 남습니다.

이 순서는 수익 백테스트가 실거래에서 손실을 내는 이유도 설명합니다. 실거래 시스템은 다른 캔들을 받거나 더 늦게 주문하거나 더 적은 수량을 체결하거나 다른 스프레드를 지불할 수 있습니다. 그런 기록이 일치한 뒤에도 성과가 나쁘다면 전략과 시장에 대한 질문이 됩니다. 체결 가정을 계속 바꾸는 구실이 되지는 않습니다.

10 / 확인 사항

백테스트 수익률이 같아도 믿기 전에 확인할 사항

  1. 종목, 데이터 피드, UTC 캔들 경계, 기간, 지표 준비 구간을 맞춘다.
  2. 정확한 주문·체결 시점, 수량 공식, 틱 크기, 수수료, 자금 부족 처리 방침을 기록한다.
  3. 최종 잔액보다 먼저 최초로 달라진 체결을 비교한다.
  4. 청산 손익, 미청산 보유량, 수수료, 현금, 시가평가 순자산을 대조한다.
  5. 선언한 모든 조합을 남기고, 재사용한 과거와 새로운 전향적 증거를 구분한다.
  6. 다음 포워드 테스트의 조건을 고정하고 신호, 제출한 주문, 확인된 체결을 보관한다.
FAQ / 핵심 답변

실무에서 자주 묻는 질문

Python과 Pine Script 백테스트가 다른 이유는 무엇인가요?

프로그래밍 언어만으로 충분히 설명되는 경우는 드뭅니다. 데이터, 신호를 사용할 수 있는 시점, 주문·체결 시점, 수량, 비용, 계좌 지표의 정의가 결과를 결정합니다. 이 연구는 해당 규칙을 Python에서 명시적으로 바꾸고, 따로 내보낸 기록으로 Pine과 비교하는 절차를 설명합니다.

ChatGPT나 Claude로 수익을 내는 매매 봇을 만들 수 있나요?

코드를 만들고 검토하는 데 도움을 줄 수 있습니다. 기준 구현은 명시한 과거 기간에 가정한 변동비를 차감한 뒤 +24.46%를 기록했습니다. 그러나 어느 도우미가 투자 우위를 더했다는 증거는 아닙니다. AI 간 투자 비교 실험이나 실거래 수익성 검증은 하지 않았습니다.

전략에 우위가 있는지 어떻게 판단하나요?

먼저 코드가 의도한 정보 사용과 회계 규칙을 구현하는지 확인해야 합니다. 그런 다음 고정한 선택 절차를 적절한 벤치마크, 현실적인 비용, 이후 관측과 비교해 평가합니다. 수익 집중, 과거의 연구상 선택, 체결 조건 변화가 모두 해석에 영향을 미칩니다. 한 번의 수익 백테스트로 결론을 낼 수는 없습니다.

매매 전략의 과최적화를 피하려면 어떻게 해야 하나요?

모든 시도를 기록하고 재량적 변형을 제한하며, 선택과 평가를 시간순으로 나누고 손실 조합도 남겨야 합니다. 이 연구의 9칸 그리드와 두 워크포워드 구간은 민감도를 보여 줍니다. 살아남은 규칙의 견고성을 보증하거나 이전 연구에서 얻은 지식을 지우지는 못합니다.

몬테카를로 시뮬레이션이 매매 우위를 증명하나요?

아닙니다. 이번 블록 부트스트랩은 명시한 의존성 가정 아래 관측된 일별 계좌 순수익률을 재배열합니다. 생성한 경로는 조건부 낙폭과 수익 민감도를 살펴보는 데 쓰입니다. 새로운 과거 데이터나 시장 국면을 만들거나 예측력을 입증하지는 않습니다.

Pine Script 전략을 Python과 비교 검증했나요?

아닙니다. Python 계산과 테스트는 실행했습니다. Pine 코드는 TradingView에서 컴파일하거나 실행하지 않았으며, 신호 시점 수량과 고정 틱 슬리피지를 사용합니다. 실제 체결을 내보낸 뒤 명시한 Python 비교 대상과 대조해야 합니다.

출처와 연구 방법

표와 차트는 출처를 밝힌 입력에서 저희가 직접 실행한 계산이며, 아래 자료가 보고한 결과가 아닙니다. 연구 과정에서 프로토콜, 계산 전 수정 기록, 출처 해시, API 대조, 테스트, 신호부터 순자산까지의 회계를 기록했습니다. 본문은 논거를 평가하는 데 필요한 가정과 측정 결과를 제시합니다. 외부 문서는 플랫폼 동작과 방법을 뒷받침하지만 전략을 추천하는 것은 아닙니다. 독립 전문가의 검토를 받았다고 주장하지 않습니다.

  1. TradingView: Pine Script 전략과 브로커 에뮬레이터
  2. TradingView: Pine Script 실행 모델
  3. humblefool06: BTC-USDT 4시간봉 데이터셋과 데이터 카드
  4. Binance: 공개 현물 Kline 시장 데이터 문서
  5. Bailey 외: 백테스트 과최적화의 확률
  6. Politis·White: 의존성 부트스트랩의 자동 블록 길이 선택
  7. OpenAI: 코드 생성과 Codex
  8. Anthropic: Claude Code 개요
  9. Creative Commons: 저작자표시 4.0 이용 조건

변동비를 모델링한 과거 데이터 기반 교육용 연구입니다. 세금과 고정 운영비는 제외합니다. 실거래 체결, TradingView 성과 실행, AI 간 투자 비교 실험은 수행하지 않았습니다.