GET사용 가능
신호 백테스트 결과
신호 백테스트 결과(BTC / ETH만 지원)
GET
/api/signal/backtest/:coin요청
쿼리 파라미터
| 이름 | 타입 | 필수 | 기본값 | 허용 값 | 설명 |
|---|---|---|---|---|---|
| coin path | string | 필수 | — | BTC, ETH | 코인. 다른 값은 400을 반환합니다. 예시: BTC |
“path”로 표시된 파라미터는 URL의 일부입니다.
요청 예시
curl -s "https://www.coinboss.com/api/signal/backtest/BTC"응답 필드
필드 표는 실제 응답에서 생성되므로 엔드포인트가 반환하는 내용을 그대로 보여 줍니다. 경로에서 a[]는 배열 항목을, {*}는 코인이나 거래소처럼 동적 이름을 키로 갖는 객체를 뜻합니다.
| 필드 | 타입 | 단위 | 설명 |
|---|---|---|---|
| success | boolean | — | 요청이 성공하면 true입니다. 실패하면 본문은 `{ success: false, code, error, request_id }`입니다. |
| coin | string | — | 코인 심볼, 대문자(예: BTC). |
| backtest_basis | string | — | 백테스트 통계를 측정한 코인(`ETH`). |
| basis_note_code | string | — | 요청한 코인이 백테스트한 코인이면 `basis_native`, 다른 코인에 대해 ETH 통계를 표시하면 `basis_borrowed`. |
| basis | string | — | 선물 가격에서 현물 가격을 뺀 값 또는 베이시스 블록. |
| note_code | string | — | 고정 코드 `eth_only_basis`: 이 응답의 모든 통계는 ETHUSDT 히스토리에서 산출됩니다. |
| daily | object | — | 일별 값. |
| daily.dataset | object | — | 일별 통계의 바탕이 되는 일별 캔들 히스토리의 크기와 날짜 범위(전체 히스토리와 최근 구간). |
| daily.dataset.bars_full | number | count | 전체 히스토리의 일별 캔들 수. |
| daily.dataset.range_full | string | — | 전체 히스토리의 첫 날짜와 마지막 날짜, 텍스트 형식. |
| daily.dataset.bars_recent | number | count | 최근 구간의 일별 캔들 수. |
| daily.dataset.range_recent | string | — | 최근 구간의 첫 날짜와 마지막 날짜, 텍스트 형식. |
| daily.dataset.src | string | — | 소스. |
| daily.baseline | object | — | 임의의 날에 매수해 30일간 보유했을 때의 참조 결과로, 전체 히스토리와 최근 구간에 대해 제공합니다. |
| daily.baseline.full | object | — | 전체 해상도 데이터. |
| daily.baseline.full.n | number | — | 집계된 항목 수. |
| daily.baseline.full.hold30_winrate | number | % | 전체 히스토리의 모든 30일 보유 중 수익으로 끝난 비중. |
| daily.baseline.full.hold30_pf | number | ratio | 전체 히스토리의 모든 30일 보유에 대한 프로핏 팩터: 이익 합계 ÷ 손실 합계의 절댓값. |
| daily.baseline.recent | object | — | 최근 항목. |
| daily.baseline.recent.n | number | — | 집계된 항목 수. |
| daily.baseline.recent.hold30_winrate | number | % | 최근 구간의 모든 30일 보유 중 수익으로 끝난 비중. |
| daily.baseline.recent.hold30_pf | number | ratio | 최근 구간의 모든 30일 보유에 대한 프로핏 팩터: 이익 합계 ÷ 손실 합계의 절댓값. |
| daily.timing | object | — | 매수 후 보유 수익률을 단순 추세 필터 규칙과 비교한 값으로, 전체 히스토리와 최근 구간에 대해 제공합니다. |
| daily.timing.full | object | — | 전체 해상도 데이터. |
| daily.timing.full.buy_hold_pct | number | % | 전체 히스토리의 매수 후 보유 수익률로, 210번째 캔들부터 측정합니다. |
| daily.timing.full.above_ema200_pct | number | % | 종가가 200일 EMA 위에 있는 날에만 보유했을 때의 전체 히스토리 수익률. |
| daily.timing.full.below_ema200_pct | number | % | 종가가 200일 EMA 아래에 있는 날에만 보유했을 때의 전체 히스토리 수익률. |
| daily.timing.full.ema20_gt_ema50_pct | number | % | 20일 EMA가 50일 EMA 위에 있는 동안에만 보유했을 때의 전체 히스토리 수익률. |
| daily.timing.full.days_above | string | — | 종가가 EMA200 위에 있다는 규칙에 대한 `days held/total days` 텍스트, 전체 히스토리. |
| daily.timing.full.days_fast | string | — | EMA20이 EMA50 위에 있다는 규칙에 대한 `days held/total days` 텍스트, 전체 히스토리. |
| daily.timing.recent | object | — | 최근 항목. |
| daily.timing.recent.buy_hold_pct | number | % | 최근 구간의 매수 후 보유 수익률. |
| daily.timing.recent.above_ema200_pct | number | % | 종가가 200일 EMA 위에 있는 날에만 보유했을 때의 최근 구간 수익률. |
| daily.timing.recent.below_ema200_pct | number | % | 종가가 200일 EMA 아래에 있는 날에만 보유했을 때의 최근 구간 수익률. |
| daily.timing.recent.ema20_gt_ema50_pct | number | % | 20일 EMA가 50일 EMA 위에 있는 동안에만 보유했을 때의 최근 구간 수익률. |
| daily.timing.recent.days_above | string | — | 종가가 EMA200 위에 있다는 규칙에 대한 `days held/total days` 텍스트, 최근 구간. |
| daily.timing.recent.days_fast | string | — | EMA20이 EMA50 위에 있다는 규칙에 대한 `days held/total days` 텍스트, 최근 구간. |
| daily.signals | object | — | 신호 항목. 동적 키: bull_regime,bear_regime,multi_long,fast_filter,pullback_add,streak5_up |
| daily.signals.{*} | object | — | 신호 항목. |
| daily.signals.{*}.hold | string | — | 맵 키가 가리키는 시그널의 백테스트에 사용된 보유 규칙, 예: `30d`, `7d` 또는 ATR 배수로 정한 익절 / 손절 규칙. |
| daily.signals.{*}.full | object | — | 전체 해상도 데이터. |
| daily.signals.{*}.full.n | number | — | 집계된 항목 수. |
| daily.signals.{*}.full.winrate | number|null | — | 승률. |
| daily.signals.{*}.full.pf | number|null | — | 프로핏 팩터. |
| daily.signals.{*}.recent | object | — | 최근 항목. |
| daily.signals.{*}.recent.n | number | — | 집계된 항목 수. |
| daily.signals.{*}.recent.winrate | number|null | — | 승률. |
| daily.signals.{*}.recent.pf | number|null | — | 프로핏 팩터. |
| daily.signals.{*}.src | string | — | 소스. |
| daily.signals.{*}.full.total_pct | number | % | 전체 대비 비중. 없을 수 있음 |
| daily.signals.{*}.full.mdd_pct | number | % | 최대 낙폭. 없을 수 있음 |
| daily.signals.{*}.recent.total_pct | number | % | 전체 대비 비중. 없을 수 있음 |
| daily.signals.{*}.recent.mdd_pct | number | % | 최대 낙폭. 없을 수 있음 |
| m15 | object | — | 15분 ETHUSDT 캔들 기준 백테스트: 포지션 종료(익절·손절) 조건은 ATR(14) 배수이며 왕복 비용을 포함합니다. |
| m15.dataset | object | — | 사용된 15분 캔들 히스토리의 크기, 날짜 범위, 완전성. |
| m15.dataset.bars | number | — | 봉 수. |
| m15.dataset.range | string | — | 요청한 구간. |
| m15.dataset.completeness | string | — | 15분 히스토리에서 실제로 있는 캔들 수와 예상 캔들 수를 비교해 보여 주는 텍스트. |
| m15.dataset.src | string | — | 소스. |
| m15.signals | object | — | 신호 항목. 동적 키: knife_25,knife_30,cum8_4,cum16_6 |
| m15.signals.{*} | object | — | 신호 항목. |
| m15.signals.{*}.signals | number | — | 신호 항목. |
| m15.signals.{*}.n | number | — | 집계된 항목 수. |
| m15.signals.{*}.winrate | number | — | 승률. |
| m15.signals.{*}.pf | number | — | 프로핏 팩터. |
| m15.signals.{*}.total_pct | number | % | 전체 대비 비중. |
| m15.signals.{*}.mdd_pct | number | % | 최대 낙폭. |
| m15.signals.{*}.tp | number | x | 맵 키가 가리키는 시그널에 사용된 익절 거리, ATR(14)의 배수. |
| m15.signals.{*}.sl | number | x | 맵 키가 가리키는 시그널에 사용된 손절 거리, ATR(14)의 배수. |
| m15.signals.{*}.src | string | — | 소스. |
| m15.threshold_scan | array | — | 매수를 트리거하는 단일 캔들 하락 폭별 백테스트 결과. |
| m15.threshold_scan[] | object | — | 하락 기준값 하나에 대한 결과. |
| m15.threshold_scan[].th | number | % | 진입을 트리거하는 단일 캔들 가격 변화(음수). |
| m15.threshold_scan[].signals | number | — | 신호 항목. |
| m15.threshold_scan[].n | number | — | 집계된 항목 수. |
| m15.threshold_scan[].winrate | number | — | 승률. |
| m15.threshold_scan[].pf | number | — | 프로핏 팩터. |
| m15.threshold_scan[].total_pct | number | % | 전체 대비 비중. |
| m15.filter_test | array | — | −2.0 % 급락 진입에 추가 필터(RSI, 거래량, EMA200)를 하나씩 적용한 결과. |
| m15.filter_test[] | object | — | 필터 변형 하나에 대한 결과. |
| m15.filter_test[].code | string | — | 코드. |
| m15.filter_test[].n | number | — | 집계된 항목 수. |
| m15.filter_test[].winrate | number | — | 승률. |
| m15.filter_test[].pf | number | — | 프로핏 팩터. |
| m15.filter_test[].total_pct | number | % | 전체 대비 비중. |
| m15.confirm_test | array | — | 진입 시점별 결과: 즉시 진입하거나, 확인 캔들 한 개 또는 두 개를 기다린 뒤 진입. |
| m15.confirm_test[] | object | — | 진입 시점 변형 하나에 대한 결과. |
| m15.confirm_test[].code | string | — | 코드. |
| m15.confirm_test[].n | number | — | 집계된 항목 수. |
| m15.confirm_test[].winrate | number | — | 승률. |
| m15.confirm_test[].pf | number | — | 프로핏 팩터. |
| m15.confirm_test[].total_pct | number | % | 전체 대비 비중. |
| m15.cost_test | array | — | 서로 다른 왕복 거래 비용 가정에 따른 결과. |
| m15.cost_test[] | object | — | 비용 가정 하나에 대한 결과. |
| m15.cost_test[].cost_pct | number | % | 이 실행에서 가정한 왕복 거래 비용, 명목가치 대비 백분율. |
| m15.cost_test[].pf | number | — | 프로핏 팩터. |
| m15.cost_test[].total_pct | number | % | 전체 대비 비중. |
| m15.hour_test | array | — | −1.5 % 급락 진입의 결과를 UTC 시간대 구간별로 나눈 값. |
| m15.hour_test[] | object | — | UTC 시간대 구간 하나에 대한 결과. |
| m15.hour_test[].code | string | — | 코드. |
| m15.hour_test[].n | number | — | 집계된 항목 수. |
| m15.hour_test[].winrate | number | — | 승률. |
| m15.hour_test[].pf | number | — | 프로핏 팩터. |
| m15.hour_test[].total_pct | number | % | 전체 대비 비중. |
| m15.short_side | array | — | 반대 방향 거래의 결과: 단일 캔들 급등 후 숏 진입. |
| m15.short_side[] | object | — | 급등 기준값 하나에 대한 결과. |
| m15.short_side[].code | string | — | 코드. |
| m15.short_side[].n | number | — | 집계된 항목 수. |
| m15.short_side[].winrate | number | — | 승률. |
| m15.short_side[].pf | number | — | 프로핏 팩터. |
| m15.short_side[].total_pct | number | % | 전체 대비 비중. |
| weekday | array | — | 요일. |
| weekday[] | object | — | 요일. |
| weekday[].d | number | — | 달력 날짜(UTC). |
| weekday[].up_rate | number | — | 상승 마감한 기간의 비중. |
| weekday[].mean_pct | number | % | 해당 요일의 평균 일별 가격 변화(`d` 1 = 월요일 … 7 = 일요일), 전체 히스토리. |
| month | array | — | 달력 월. |
| month[] | object | — | 달력 월. |
| month[].m | number | — | 월 번호, 1–12. |
| month[].up_rate | number | — | 상승 마감한 기간의 비중. |
| month[].median_pct | number | % | 전체 히스토리의 여러 연도에 걸친 해당 월 누적 가격 변화의 중앙값. |
2026-11-11 23:01 UTC에 실제 응답 1건으로 생성.
응답 예시
/api/signal/backtest/BTC · 2026-11-13 01:38:37 UTC에 수집한 실제 응답. 긴 배열과 맵은 표시를 위해 줄였습니다: month: 원래 항목 12개; weekday: 원래 항목 7개; m15.signals: 원래 항목 4개; daily.signals: 원래 항목 12개; m15.cost_test: 원래 항목 5개; m15.hour_test: 원래 항목 3개.
- "success"true
- "coin""BTC"
- "backtest_basis""ETH"
- "basis_note_code""basis_borrowed"
- "basis""ETHUSDT"
- "note_code""eth_only_basis"
- "daily"
- "dataset"
- "baseline"
- "timing"
- "signals"
- "m15"
- "dataset"
- "signals"
- "threshold_scan"
- "filter_test"
- "confirm_test"
- "cost_test"
- "hour_test"
- "short_side"
- "weekday"
- "month"
상세 정보
- 인증
- 없음. 공개 엔드포인트.
- 요청 한도
- IP당 분당 1200회
- 서버 캐시
- 60m
- 엣지 마이크로 캐시
- 10s
- 구간
- 고정: 일봉 2017-08-17 ~ 2026-07-30, 15분봉 2023-01 ~ 2026-07
- 데이터 소스
- 거래소 ETHUSDT 캔들에 대한 오프라인 백테스트의 정적 요약으로, 재계산하지 않습니다.
- 거래소 커버리지
- ETH 백테스트만 제공; BTC는 동일한 ETH 기반 수치를 반환합니다.
- 단위
- win rate in percent, profit factor, sample counts
- 타임스탬프
- 필드 설명에 별도 언급이 없는 한 Unix epoch 밀리초(UTC)
- 응답 형식
- json
- 안정성
- 안정
실시간 상태
사용 가능2026-11-13 01:38:37 UTC 점검HTTP 20088 ms스키마 일치
최근 30일 가용성
점검 380회 중 100% 통과
오류
실패한 호출은 모든 엔드포인트에서 동일한 구조로 반환됩니다. 전체 목록은 오류 페이지에 있습니다. 오류 및 요청 한도 →
| 코드 | HTTP | 의미 | 대응 방법 |
|---|---|---|---|
| INVALID_PARAM | 400 | 필수 파라미터가 누락되었거나 허용되지 않는 값입니다. 문제가 된 파라미터를 알 수 있으면 `param`에 그 이름이 들어갑니다. | 그대로 재시도하지 말고 요청을 수정하십시오. |
| UNAUTHORIZED | 401 | `CB-API-KEY` 헤더를 보냈지만 알 수 없거나 폐기된 키입니다. 공개 데이터에는 키가 필요 없으므로 헤더를 빼거나 유효한 키를 사용하십시오. | 그대로 재시도하지 마십시오. |
| FORBIDDEN | 403 | 해당 경로는 공개 API에 포함되지 않습니다(내부용 또는 계정 전용). | 재시도하지 마십시오. |
| NOT_FOUND | 404 | 알 수 없는 경로이거나, 요청한 코인 / 거래소 / 펀드가 존재하지 않습니다. | 재시도하지 말고 경로와 식별자를 카탈로그와 대조해 확인하십시오. |
| RATE_LIMITED | 429 | 요청 수가 분당 한도를 초과했습니다. `Retry-After`가 대기해야 할 초를 알려 줍니다. | `Retry-After`만큼 기다린 뒤 백오프를 적용해 재시도하십시오. |
| INTERNAL | 500 | 예기치 않은 서버 오류입니다. 메시지는 의도적으로 일반적인 내용만 담습니다. 신고할 때 `request_id`를 인용하십시오. | 몇 초 뒤 한 번 재시도하고, 계속되면 요청 ID와 함께 신고하십시오. |
| UPSTREAM_FAILED | 503 | 이 엔드포인트의 데이터 소스가 제시간에 응답하지 않았습니다. 그 대신 만료된 수치나 대체 수치를 반환하는 일은 없습니다. | 백오프를 적용해 재시도하고 상태 페이지를 확인하십시오. |
| UNAVAILABLE | 501 / 503 | 데이터셋이 일시적으로 준비되지 않았거나(캐시 워밍 중) 엔드포인트에 아직 합법적인 공개 소스가 없습니다. | 나중에 재시도하십시오. 설계상 사용 불가인 엔드포인트는 카탈로그에 표시되어 있습니다. |
| REQUEST_FAILED | 200 | 일부 이전 엔드포인트는 HTTP 200에 `success: false`로 응답합니다. HTTP 상태만 보지 말고 항상 `success`를 확인하십시오. | 메시지에 따라 다릅니다. 실패한 요청으로 처리하십시오. |
직접 실행
GET
/api/signal/backtest/:coin사용 가능파라미터
string — Coin; other values return 400.
요청 URL
https://www.coinboss.com/api/signal/backtest/BTC엔드포인트를 선택하고 “요청 보내기”를 누르십시오. 응답, 헤더, 소요 시간이 여기에 표시됩니다.
이 카테고리의 다른 엔드포인트
- AHR999 적립 매수 지표 시계열 /api/indicators/ahr999
- 비트코인 버블 지수 /api/indicators/bitcoin-bubble
- BTC 일별 종가 전체 히스토리 /api/indicators/btc-history
- 강세장 고점 신호 체크리스트 /api/indicators/bull-peak-signals
- CBBI 강세장 종합 지수 /api/indicators/cbbi
- 파생상품 위험 지수(CoinBoss 산출 방식) /api/indicators/cdri
- 파생상품 종합 지수(CoinBoss 산출 방식) /api/indicators/cgdi
- BTC와 금 / S&P 500의 상관관계 /api/indicators/correlation
- 주요 자산 상관관계 매트릭스 /api/indicators/correlation-matrix
- 국가별 암호화폐 법적 지위 /api/indicators/crypto-legality
- 사이클 고점 밸류에이션 밴드 /api/indicators/cycle-caps
- BTC 가격 배가 시간 시계열 /api/indicators/doubling-time
- Google 검색 관심도 추이 /api/indicators/google-trends
- 거시 지표 시계열 /api/indicators/macro-series
- 가격 예측 모델 출력 /api/indicators/price-forecast
- 사상 최고가 대비 하락률 시계열 /api/indicators/price-no-turning-back
- Reddit 비트코인 서브레딧 구독자 수 /api/indicators/reddit-subs
- Wikipedia 페이지 조회수 /api/indicators/wikipedia-pageviews
- 알트코인 시즌 지수(CoinBoss 산출 방식) /api/indices/altseason
- 바닥 레이더 /api/indices/bottom-radar
- 바닥 레이더 과거 사례 분석 /api/indices/bottom-radar/case-0819
- BTC 멀티팩터 신호 대시보드 /api/indices/btc-signal
- BTC 신호 백테스트 /api/indices/btc-signal/backtest
- 공포·탐욕 지수 /api/indices/fear-greed
- 공포·탐욕 지수(현재 값과 히스토리) /api/market/fear-greed
- 신호 백테스트 결과 /api/signal/backtest/:coin
- 신호 모니터 대시보드 /api/signal/monitor/:coin