← 기사 목록으로
July 4, 2026
5분 소요

무작위 탐색 vs 스마트 탐색: 교차점은 알고리즘이 아니라 평가 비용에 있다

무작위 탐색 vs 스마트 탐색: 교차점은 알고리즘이 아니라 평가 비용에 있다
#알고리즘 트레이딩
#백테스트
#하이퍼파라미터 최적화
#베이지안 최적화
#walk-forward
#과적합
Part 7 of 10 · Collection
High-Performance Backtest Engines

"환상 없는 백테스트" 시리즈의 일부.

하이퍼파라미터 최적화 분야에는 널리 받아들여지는 통념이 하나 있다. 무작위 탐색은 언젠가 벗어나야 할 베이스라인이라는 것이다. Bergstra와 Bengio의 고전적인 결과(2012)는 무작위가 그리드를 이긴다는 것을 확립했다. 이후 베이지안 최적화, TPE, CMA-ES, 그리고 Hyperband/ASHA 같은 다중 충실도(multi-fidelity) 방법들이 차례로 무작위를 이길 것으로 예상되었다. 그래서 우리가 자체 트레이딩 엔진을 위한 파라미터 탐색 방법을 벤치마크하려고 앉았을 때, 우리는 익숙한 사다리를 예상했다 — 무작위가 맨 아래, 스마트 샘플러가 맨 위.

그런데 정반대의 결과를 얻었다 — 그리고 그다음에는 교과서적인 답도 얻었다. 같은 전략, 같은 파라미터 공간, 같은 목적 함수, 같은 머신. 우리가 바꾼 유일한 것은 백테스트 한 번의 비용이었고, 탐색 방법들의 순위가 뒤집혔다. 각 평가가 저렴할 때는 단순히 뒤섞은 Sobol 시퀀스가 모든 "스마트한" 샘플러를 압도했다. 각 평가를 비싸게 만들자 스마트한 방법들이 앞서 나가서, 표본 외(out-of-sample)에서 살아남은 유일한 구성을 찾아냈다.

여기서 얻는 교훈은 "무작위가 저평가되었다"거나 "베이지안이 과대평가되었다"가 아니다. 무작위 탐색과 스마트 탐색 사이의 교차점은 알고리즘의 영리함이 아니라 평가 비용에 의해 지배된다는 것이다. 최적화 기법은 평판이 아니라 백테스트 한 번에 드는 비용으로 선택하라. 이 글에서는 그 교차점이 정확히 어디에 있는지, 왜 거기에 있는지, 그리고 비싼 체제의 기법들(조기 중단, 다중 충실도 가지치기)을 안전하게 사용할 수 있는지 여부를 결정하는 하나의 전제 조건 — 충실도(fidelity) — 을 측정한다.

아래 내용은 모두 우리 백테스터의 두 스크립트에서 나온 것이다. 저렴한 단일 타임프레임 체제용 bench_search.py(v4, 커밋 ee092f1)와, 비싼 다중 타임프레임 체제용 bench_search_multitf.py(커밋 102853c)다. 둘 다 누출이 없다 — 봉 i의 종가에서 결정하고 open[i+1]에서 체결한다 — 그리고 둘 다 탐색이 한 번도 보지 못한 홀드아웃 테스트 구간을 가진 다중 폴드 롤링 walk-forward 목적 함수로 모든 방법을 채점한다.

질문: 처리량인가, 표본 효율인가?

탐색 예산을 하나의 분수로 표현한 것 — 실제 소요 시간을 ask/tell 비용과 평가 비용의 합으로 나눈 것 — 분모의 평가 비용 항이 원시 처리량과 지점별 배치 중 무엇이 이기는지를 결정한다

모든 탐색 방법은 실제 소요 시간 예산을 두 가지에 쓴다. 다음에 어디를 샘플링할지 결정하는 것(샘플러 자체의 연산)과 그 샘플을 평가하는 것(백테스트 실행)이다. 전자를 ask/tell 비용, 후자를 평가 비용이라 부르자. 고정된 실제 소요 시간 예산에서 어떤 방법의 실질적인 탐색 능력은 대략 다음과 같다.

탐색한 지점 수    실제 소요 시간 예산ask/tell 비용+평가 비용\text{탐색한 지점 수} \;\approx\; \frac{\text{실제 소요 시간 예산}}{\text{ask/tell 비용} + \text{평가 비용}}

그리고 최종 품질은 이 개수에 각 지점이 얼마나 잘 배치되었는지를 곱한 것이다. 서로 당기는 두 개의 손잡이가 있다.

  • 처리량 — 초당 지점 수. 단순한 샘플러(무작위, 뒤섞은 Sobol/QMC)는 ask/tell 비용이 거의 0에 가깝다. 저불일치(low-discrepancy) 지점을 하나 내놓고 넘어간다. 이들은 개수를 최대화한다.
  • 표본 효율 — 지점당 품질. 스마트한 샘플러(TPE, CMA-ES, ASHA)는 목적 함수를 모델링하는 데 실제 연산을 쓰며 각 지점을 더 잘 배치한다. 처리량을 희생해서 배치를 최대화한다.

어느 손잡이가 이기는지는 전적으로 분모에 달려 있다. 평가 비용이 아주 작을 때는 ask/tell 비용이 분모를 지배하므로, 그것을 부풀리는 것 — 대리 모델, 커널 밀도 추정, 공분산 업데이트 — 은 무엇이든 곧바로 탐색할 수 있는 지점 수를 줄인다. 평가 비용이 클 때는 ask/tell 비용이 반올림 오차에 불과하므로, 스마트함은 사실상 공짜이며 가능한 한 많이 사들여야 한다.

이것이 이 글 전체 논지를 한 문장으로 요약한 것이다. ask/tell 세금은 고정되어 있지만, 그 중요성은 그것을 나누는 평가 비용에 의해 정해진다. 이제 그것이 실제로 일어나는 모습을 보자.

저렴한 체제: 단순한 Sobol이 처리량으로 이긴다

저렴한 체제에서는 뒤섞인 Sobol 스트림이 수천 개의 거의 공짜인 평가를 파라미터 공간 전체에 홍수처럼 쏟아붓는 반면, TPE와 ASHA는 자신의 ask/tell 기계 뒤에서 정체되어 예산의 대부분을 관찰이 아니라 생각하는 데 쓴다

우리의 단일 타임프레임 전략은 7개 파라미터 공간에 대한 누출 없는 HMA/HMA3 분리 규칙이며, 프로세스 내부의 numba eval_batch로 평가된다. 이는 프로세스 간 오버헤드 없이 구성들에 대해 prange를 실행한다. 이 엔진에서 백테스트 한 번은 거의 공짜다 — 원시 커널은 초당 대략 3~4천 개의 구성을 평가한다. 이것이 저렴한 체제이며, 트레이딩이 대부분의 HPO 통념이 나온 딥러닝 환경과 극명하게 다른 지점이다. 우리의 "목적 함수"는 6시간짜리 GPU 학습이 아니라 0.3밀리초짜리 배열 연산이다.

우리는 모든 방법에 동일한 예산 — 1,500회 평가 — 을 주고, 각 방법이 그 평가들을 소진하는 데 필요한 실제 소요 시간과, 찾아낸 홀드아웃 테스트 목적값을 기록했다. 평가 예산이 고정되어 있으므로, 실제 소요 시간 열은 각 샘플러의 오버헤드를 직접 읽어낸 값이다.

방법 평가 횟수 실제 소요 시간 처리량 홀드아웃 TEST
sobol (QMC) 1,500 0.53초 ~2,830 cfg/s −259
random 1,500 0.85초 ~1,770 cfg/s −27
sobol→cmaes 1,500 1.38초 ~1,085 cfg/s −367
cmaes 1,500 1.76초 ~850 cfg/s −85
tpe 1,500 9.76초 ~154 cfg/s −161
tpe-mv+sobol 1,500 12.15초 ~123 cfg/s −151
asha (folds) 1,500 15.79초 ~95 cfg/s −165

TEST는 탐색이 한 번도 건드리지 않은 홀드아웃 구간에서의 walk-forward 목적값(활성 시간당 연환산 PnL × 거래 횟수 신뢰도)이며, 높을수록 좋다.

두 가지 사실이 눈에 띈다. 첫째, 처리량 열을 보라. 뒤섞은 Sobol은 약 2,830 cfg/s로 실행되어 — 엔진의 한계에 근접한다. TPE는 약 154 cfg/s, ASHA는 약 95 cfg/s로 실행된다. 동일한 횟수의 평가를 하기 위해 18~30배 느려진 것이다. 스마트한 샘플러들이 뭔가 추가로 평가하는 게 아니다. 그들은 그 시간을 자신의 ask/tell 기계 내부에서 쓰고 있는 것이다.

둘째 — 그리고 이것이 이야기를 정직하게 유지하는 부분이다 — 어떤 방법도 양(+)의 표본 외 결과를 찾지 못했다. 모든 TEST 값이 음수다. 단일 타임프레임 체제에서 우리 전략에는 단순히 지속적인 OOS 우위가 없으므로, "어느 방법이 이기는가"는 최종 수익에 관한 질문이 아니라 탐색 효율에 관한 질문이다. 그리고 고정된 평가 예산에서의 탐색 효율에서는 단순한 방법들이 완승한다. Sobol과 random은 스마트한 샘플러와 같거나 더 나은 홀드아웃 수치에 도달하면서도 실제 소요 시간은 20분의 1만 쓴다.

이제 실무자가 실제로 경험하는 방식으로 비교를 뒤집어 보자 — 평가 횟수가 아니라 실제 소요 시간을 고정한다. ASHA가 1,500회 평가에 필요했던 15.8초를 모든 방법에 준다면, Sobol은 1,500에서 멈추지 않는다. 대략 45,000개의 구성까지 계속 나아간다. 저렴한 체제에서 질문은 결코 "어느 샘플러가 1,500개의 지점을 가장 잘 배치하는가"가 아니다 — "각 지점이 거의 공짜일 때, 1,500개의 영리하게 배치된 지점과 45,000개의 뒤섞인 지점 중 어느 쪽을 갖고 싶은가"이다. 거의 공짜인 평가에서는 폭이 이긴다. 7차원 공간을 30배 더 넓게 커버하는 것이 그것을 더 잘 모델링하는 것을 이긴다.

ask/tell 세금

그 20배는 어디로 가는가? 백테스트 자체는 아니다 — 그것은 모든 방법에서 동일하다. 그것은 샘플러의 지점당 장부 기록으로 들어가며, 파이썬으로 루프 안에서 실행된다.

  • TPE는 매 ask마다 한 쌍의 커널 밀도 추정(좋은 시행 대 나쁜 시행)을 적합시키며, 그 비용은 시행 이력과 함께 증가한다. 다변량 TPE는 이를 차원들에 걸쳐 결합적으로 적합시킨다 — 더 많은 모델링, 더 많은 파이썬.
  • CMA-ES는 세대마다 공분산 행렬을 업데이트하고 그로부터 샘플링한다. 여기서는 TPE보다 저렴하다(약 850 cfg/s로 실행됨) — 하지만 여전히 Sobol 지점 하나를 내놓는 것보다 한 자릿수 큰 오버헤드다.
  • ASHA는 가지치기 도구의 승격/랭크(rung) 장부 기록 비용을 지불하며, 게다가 폴드를 충실도로 사용하는 우리 설계에서는 무언가를 가지치기하기 전에 고정된 지표 사전 계산 비용을 지불한다 — 그래서 "절약된" 평가는 회계상 시사하는 것보다 덜 절약된다.

이 중 어느 것도 알고리즘 자체에 대한 흠은 아니다. 오히려 그것이 핵심이다. ask/tell 비용은 지점당 대략 고정된 밀리초 수치이며, 그것이 감싸고 있는 평가 역시 몇 밀리초에 불과할 때, 그 고정 비용은 갑자기 예산의 90%가 된다. 스마트한 샘플러는 실제 소요 시간의 10분의 9를 어디를 볼지 생각하는 데 쓰고, 10분의 1만 실제로 보는 데 쓴다. 뒤섞은 Sobol 시퀀스는 모든 시간을 보는 데 쓴다. 보는 것이 저렴할 때는 보는 것이 이긴다.

우리는 의도적으로 완전한 가우스 과정 베이지안 최적화기는 여기서 벤치마크하지 않았다. 같은 이유에서다. GP 대리 모델은 시행 횟수에 대해 O(n3)O(n^3)이다. 밀리초 단위의 비용이 드는 평가에 맞서면, 대리 모델을 적합시키는 데 공간의 의미 있는 부분을 평가하기도 전에 전체 탐색 예산을 소모해 버릴 것이다. 저렴한 체제에서 GP-BO는 산술적으로 실격이다.

비싼 체제: 교차점이 뒤집힌다

교차점: 평가 한 번이 비싸질수록 두 방법의 곡선이 교차한다 — 맹목적인 Sobol은 떨어지고, 비용을 인식하는 스마트 샘플러는 그것을 넘어 상승하여 양의 표본 외 영역으로 넘어가는 유일한 방법이 된다

이제 백테스트 한 번을 비싸게 만들어 보자. 다중 타임프레임 전략은 상위, 중위, 하위 타임프레임(트리플 TF)을 쌓아서, 각각이 지표 계산과 자체 임곗값을 기여하며, 모두 동일한 다중 폴드 walk-forward에서 채점된다. 이제 평가 한 번은 0.3밀리초가 아니라 대략 0.1~0.5초 정도가 든다 — 세 자릿수 규모의 도약이다. 평가 비용은 분모에서 반올림 오차 항이었던 자리에서 지배적인 항으로 옮겨갔다. 논지에 따르면 ask/tell 세금은 더 이상 중요하지 않아야 하고 스마트함이 보상받기 시작해야 한다. 실제로 그렇다.

우리는 트리플 TF 문제(18개 파라미터 공간)에서 모든 방법을 고정된 약 150초의 실제 소요 시간 예산으로 실행시켰고, 각 방법이 자신의 샘플러가 지시하는 대로 그 예산을 쓰게 한 뒤, 반환한 단일 최고 구성을 홀드아웃 테스트 구간에서 평가했다.

방법 (트리플 TF, 150초) 평가 횟수 홀드아웃 TEST 판정
sobol (QMC) 349 −673 패배
cascade (sobol²×64) 20,864 −585 패배
asha (folds) 292 유효 −239 패배
tpe-mv+sobol 455 −43 패배
sobol→cmaes 15,239 +226 유일하게 OOS 양수

TEST는 이전과 동일한 walk-forward 목적값이다. 오직 한 방법만 0을 넘었다.

저렴한 체제를 지배했던 단순한 Sobol 베이스라인은 이제 꼴찌로, −673이다. 18차원 공간의 맹목적인 저불일치 샘플링은, 각 평가가 비싸기 때문에 겨우 349회의 평가만 쓸 수 있어서 어떤 것도 국소화하지 못한다. 스마트한 방법인 sobol→cmaes — 예산의 30%를 Sobol에 써서 하나의 분지(basin)를 씨뿌리고, 그다음 최적의 씨앗으로부터 CMA-ES 정제를 하는 방식 — 는 애초에 양의 표본 외 결과를 만들어낸 유일한 방법이었다. 최종적으로 건드리지 않은 홀드아웃에서 챔피언은 +2.62%(19회 거래, 자본 노출 약 6.6%)를 반환했고, 이는 +16.35%(46회 거래, 노출 약 15.7%)를 반환한 테스트 구간 위에 쌓인 것이다. 다른 모든 경쟁 방법의 챔피언은 표본 외에서 손실을 봤다.

이것이 교차점이다. 같은 전략군, 같은 목적 함수, 같은 머신에서 측정된 것이다. 평가 한 번의 비용 말고는 아무것도 바꾸지 않았는데, 탐색 방법들의 순위가 뒤집힌다. 저렴한 체제에서는 Sobol이 이기고 스마트한 샘플러는 20배의 낭비다. 비싼 체제에서는 스마트한 샘플러만이 작동하고 Sobol이 낭비다.

왜 "스마트"가 여기서 이기는가 — 그리고 그것은 표본 효율만이 아니다

2축 파라미터 공간의 비용 인식형 활용: 비싼 지표 축은 고정된 채로 두고, 스마트 샘플러는 캐시된 신호에 대한 저렴한 임곗값 축을 홍수처럼 채워서, 동일한 실제 소요 시간을 더 많은 평가와 더 잘 배치된 평가 양쪽으로 전환한다

이 이야기의 깔끔한 버전은 "비싼 평가는 표본 효율에 보상하므로, 더 적고 더 나은 지점을 배치하는 방법이 이긴다"는 것이다. 이는 절반만 사실이며, 데이터는 우리에게 더 정직하고 더 흥미로운 나머지 절반을 강제한다.

평가 횟수를 다시 보라. sobol→cmaes는 맹목적인 Sobol보다 더 적은 지점을 평가해서 이긴 게 아니다 — 같은 150초 동안 15,239회를 평가했다. Sobol의 349회보다 마흔 배 많다. 어떻게? 우리의 다중 TF 평가 비용은 균일하지 않고 구조화되어 있기 때문이다. 두 개의 축이 있다. 비싼 지표 축(타임프레임 주기와 HMA 길이, 각각 계산에 30500ms가 걸린다. 지표 재계산을 강제하기 때문이다)과 저렴한 임곗값 축(진입/청산 분리 수준, 캐시된 신호에서 각각 약 12ms)이다. 둘 사이의 격차는 30~100배다.

맹목적인 Sobol은 이 구조를 무시한다. 그것이 뽑는 모든 지점은 비싼 지표 축을 흔들어 새로운 재계산을 강제한다 — 그래서 349회 평가 전부에서 전액을 지불한다. sobol→cmaes는 CMA-ES가 유망한 영역을 국소화하고 나면, 대략적인 지표 구조는 거의 고정한 채로 연속적인 임곗값들을 교란하는 경향이 있는데, 이는 캐시된 신호에 떨어져서 거의 비용이 들지 않는다. 스마트한 방법은 동일한 실제 소요 시간을 더 잘 배치된 지점들훨씬 더 많은 지점들 양쪽으로 전환한다. 왜냐하면 여기서 적응적이라는 것은 비용을 인식하는 것을 의미하기 때문이다. 즉 비싼 축이 고정된 후에는 저렴한 축에 머무르는 것이다. 우리의 명시적인 cascade(sobol²×64) 활용법은 이를 가장 공격적으로 수행한다 — 캐시된 신호에 대해 저렴한 임곗값들을 일괄 처리하여 20,864회 평가를 수행한다 — 그리고 트리플 TF 테스트에서는 패배했지만, 이중 타임프레임 변형에서는 테스트 구간을 **+20.2%**로 완승했다(이후 자체 홀드아웃에서 실패했다 — 아래에서 더 다룬다).

그래서 교차점을 더 날카롭게 표현하면 이렇다. 비싼 체제에서는 ask/tell 세금이 무시할 만해지고, 이는 당신을 스마트해지도록 풀어준다 — 그리고 "스마트"란 목적 함수의 비용 구조에 적응하는 것을 의미하지, 그저 형태에 적응하는 것이 아니다. 맹목적인 샘플링은 둘 다 할 수 없다. 이것이 정확히 우리의 적응형 해상도 드릴다운 엔진이 활용하도록 만들어진 2축 구조이며, 다중 충실도 방법들이 비싼 체제에 속하는 이유다 — 단, 한 가지 조건이 성립할 때만 그렇다.

충실도: 가지치기의 숨겨진 전제 조건

다중 충실도 방법 — Hyperband, ASHA, 모든 조기 중단 가지치기 도구 — 은 하나의 가정에 기대고 있다. 저렴하고 부분적인 평가가 비싸고 완전한 평가와 동일한 방식으로 구성들을 순위 매긴다는 가정이다. 어떤 구성이 하나의 walk-forward 폴드에서 좋아 보이면 모든 폴드에서도 좋아 보이는 경향이 있다면, 패자들을 일찍 죽이고 생존자들의 예산을 승자들에게 쓸 수 있다. 만약 저렴한 충실도가 무작위로 순위를 매긴다면, 조기 중단은 그저 동전 던지기로 좋은 구성들을 버리는 것에 불과하다.

그래서 어떤 가지치기 도구를 신뢰하기 전에, 우리는 이 가정을 직접 측정한다. 우리의 충실도는 사용된 walk-forward 폴드 수다(저렴하게 r개 폴드에서 평가하거나, 전체 비용으로 K개 폴드 전부에서 평가한다). 그리고 충실도 게이트는 저렴한 r-폴드 목적값과 전체 목적값 사이의 스피어만 순위 상관계수 ρ를 무작위 구성 표본에 걸쳐 계산한다. ρ@1은 단 하나의 폴드로 판단할 때의 상관관계 — 가장 공격적이고 가장 저렴한 충실도다. 다음은 이 게이트가 두 체제에 걸쳐 보고한 내용이다.

충실도 (사용된 폴드) 단일 TF ρ 다중 TF ρ
ρ@1 (1 폴드) ~0.03 0.43
ρ@2 0.67
ρ@3 0.78
ρ@4 0.82
ρ@5 0.91

단일 타임프레임 체제에서는 하나의 폴드가 구성들을 진실과 ~0.03의 상관관계로 순위 매긴다 — 통계적으로 무작위와 구별할 수 없다. 이것은 우연이 아니다. "어떤 방법도 OOS 우위를 찾지 못했다"는 것과 같은 사실이다. 전략에 지속적인 신호가 없을 때, 폴드별 성과는 대부분 운이므로, 어떤 단일 폴드도 거의 무작위 추출에 가깝고, 저충실도 가지치기는 좋은 구성들을 죽이고 운 좋은 구성들을 승격시킬 것이다. 여기 저렴한 체제에서 다중 충실도는 안전하지 않다 — 방법이 나빠서가 아니라, 저렴한 신호가 잡음이기 때문이다. (우리의 게이트는 이를 감지하고 공격적인 가지치기를 거부한다.)

다중 타임프레임 체제에서는 실제 우위가 존재하며, 충실도 그림이 완전히 달라진다. ρ@1은 0.43으로 상승하고, 다섯 폴드가 되면 ρ는 0.91까지 올라간다. 이제 하나의 폴드가 실제 순위 정보를 담고 있고, 다섯 폴드는 거의 전부를 담고 있다. 조기 중단은 안전해진다 — 처음 몇 폴드에서 지고 있는 구성은 정말로 패자일 가능성이 높다. 이것이 다중 충실도 방법이 비싼 체제에 속하는 두 번째 이유다. 비싼 평가가 가지치기를 가치 있게 만든다는 점뿐 아니라, 비싼 체제야말로 저렴한 충실도가 마침내 비싼 충실도처럼 순위를 매기는 곳이라는 점에서도 그렇다.

이것이 우리에게 주는 규칙은 무뚝뚝하고 실행 비용이 저렴하다. 가지치기 전에 ρ를 측정하라. 충실도 상관관계는 수백 개의 무작위 구성에 대한 두 줄짜리 계산이며, 다중 충실도 탐색이 당신을 가속하는 것과 다중 충실도 탐색이 조용히 당신을 방해하는 것 사이의 차이가 바로 그것이다.

탐색에서 이기는 것과 그것에서 살아남는 것은 다르다

정직해야 할 것이 하나 더 있다. 이 시리즈는 거짓말하는 백테스트에 관한 것이기 때문이다. 우리의 트리플 TF 챔피언 sobol→cmaes는 양의 홀드아웃을 기록한 유일한 방법이었다 — +2.62%, 테스트 구간의 +16.35% 위에 쌓인 것이다. 여기까지는 좋은 소식이다. 여기 주의할 점이 있다. 그것은 통계적 디플레이션(deflation)을 견디지 못했다.

이 챔피언은 모든 방법에 걸쳐 시도된 수만 개의 구성 중 최고다. 그만큼 많은 다중 검정 아래에서는, +2.62%의 홀드아웃이 자동으로 진짜인 것은 아니다. 우리는 이 시리즈 전체가 의존하는 과적합 게이트들을 돌렸다 — 시행 간 상관관계에 맞게 유효 N을 보정한 Deflated Sharpe Ratio, 그리고 조합적 대칭 교차 검증(CSCV)을 통한 PBO다. 이 챔피언은 PBO를 통과했지만(0.12, 0.2 임계값을 여유 있게 밑돈다 — CSCV 분할 전반에서 순위가 안정적이다) 디플레이트된 샤프 지수는 0으로 붕괴했다(게이트는 0.95 이상을 요구한다). 판정: 살아남지 못한다.

이것을 주의 깊게 읽어야 한다. 이것이 이 전체 연습의 핵심이기 때문이다. 교차점 결과는 진짜다. 스마트한 탐색은 비싼 체제에서 탐색 자체를 이겼다, 결정적으로. 그리고 Sobol은 그것에서 졌다. 하지만 탐색에서 이기는 것은 최적화기에 대한 진술이지, 전략에 대한 진술이 아니다. 좋은 최적화기가 우위 없는 공간에서 찾을 수 있는 최고의 구성이라 해도 여전히 우위가 없다 — 디플레이션이야말로 당신이 어느 쪽을 쥐고 있는지 알려주는 것이다. 올바른 탐색 방법을 선택하는 것은 효율적으로 현재 얻을 수 있는 최선의 답을 준다. 그것이 원래 존재하지 않던 우위를 만들어내는 것은 아니다. 최적화기와 과적합 게이트는 서로 다른 것을 측정하는 서로 다른 도구이며, 둘 다 필요하다.

실제로 적용할 수 있는 결정 규칙

우리의 벤치마크를 다시 실행할 필요는 없다. 최적화기를 고르기 위해 필요한 것은 숫자 하나뿐이다. 백테스트 한 번에 시간이 얼마나 걸리는가? 목적 함수의 단일 평가 — 완전한 walk-forward 패스 한 번, 모든 폴드 — 의 시간을 재고, 어느 체제인지 읽어내라.

  • 저렴한 평가 (≲ 약 10ms/백테스트): 처리량을 사라. 뒤섞은 Sobol/QMC나 무작위를 써라. TPE/CMA-ES/ASHA의 ask/tell 세금은, 거의 공짜인 평가가 보상하지 않는 배치를 위해 지점 수를 10~30배 희생시킬 것이다. 다중 충실도 가지치기는 신경 쓰지 마라 — 그리고 그러고 싶은 유혹이 든다면, 먼저 ρ@1을 확인하라. 우위가 낮은 저렴한 체제에서는 그것이 0에 가까울 가능성이 높으며, 이는 가지치기가 동전 던지기라는 뜻이다. 절약된 엔지니어링 시간은 탐색을 좁히는 대신 넓히는 데 써라.
  • 비싼 평가 (≳ 약 100ms~수초/백테스트): 표본 효율을 사라. CMA-ES, TPE, 또는 Sobol로 씨앗을 뿌린 CMA-ES 하이브리드를 써라. 샘플러 오버헤드는 이제 평가에 대한 반올림 오차다. 만약 평가 비용이 구조화되어 있다면(다중 TF에서처럼 느린 지표 축과 빠른 임곗값 축이 있다면), 그 구조를 활용하는 방법들 — 캐스케이드, 드릴다운, 비용을 인식하는 모든 것 — 을 모든 차원을 동등하게 비싸다고 취급하는 방법들보다 우선하라.
  • 그 중간이거나 확실하지 않다면: Sobol로 씨앗을 뿌린 하이브리드(sobol→cmaes)가 견고한 기본값이다. 초반에는 너비 우선의 Sobol처럼 행동하고(저렴하고, 적합시킬 모델이 없다) 후반에는 스마트한 정제기처럼 행동한다. 그래서 어느 체제에 있게 되든 우아하게 성능이 저하된다 — 이것이 정확히 그것이 우리의 비싼 체제 챔피언이었던 이유다.
  • 어떤 가지치기 도구를 쓰기 전에도 충실도를 측정하라. 수백 개의 무작위 구성에서 저렴한 충실도와 전체 목적값 사이의 스피어만 ρ를 계산하라. ρ@1이 낮다면 하나의 폴드로 가지치기하지 마라. ρ가 약 0.5를 넘을 때까지 최소 자원을 올려라. 이것은 두 줄의 코드밖에 들지 않지만, 당신의 가속기가 최고의 구성들을 조용히 버리는 것을 막아준다.
  • 어느 쪽이 탐색에서 이기든, 디플레이션 게이트를 돌려라. 최적화기의 승자는 당신이 그 주에 만들어낼 것 중 과적합될 가능성이 가장 높은 대상이다. 그것이 거래 가능한지 결정하는 것은 최적화기의 점수가 아니라 DSR과 PBO다.

이것이 연결되는 지점

이 결과는 이 시리즈가 계속 끌어당겨 온 몇 가닥의 실이 만나는 중심에 있다.

  • 이것은 그 아래의 엔진이 정직하다는 것을 전제로 한다. 저렴한 체제에서의 우위 전체는 우리의 프로세스 내부 numba 엔진이 IPC 없이 초당 수천 개의 구성을 처리하기 때문에 존재한다 — 속도 사다리야말로 애초에 당신을 처리량이 이기는 체제에 놓아주는 것이다. 느리고 프레임워크에 세금을 뜯기는 엔진이라면 모든 문제를 기본적으로 비싼 체제에 몰아넣을 것이고, 당신은 이 교차점을 결코 보지 못할 것이다.
  • 비싼 체제에서의 활용법은, 우리의 적응형 해상도 드릴다운 엔진이 그 주위에 설계된 바로 그 2축 비용 구조다. 거칠고 비싼 축에서 국소화한 다음, 세밀하고 저렴한 축을 활용하는 것.
  • 여기 나온 모든 방법이 신뢰할 만한 것은 오직 엔진이 누출이 없기 때문이다. 수만 번의 시행에 걸친 탐색은 미래 참조 버그를 찾아 이용하는 가장 효율적인 기계다 — "승자"는 그 누출에 가장 강하게 기댄 구성이 될 것이다. 먼저 시계를 고치고, 그다음에 탐색하라.
  • 그리고 이 챔피언의 운명 — 탐색에서 이겼지만 디플레이션에서 실패한 것 — 은 파라미터 탐색과 과적합 통제를 서로 다른 도구를 가진 별개의 단계로 취급해야 한다는 전체 논거다.

학문적 배경은 이 분야가 계속 되돌아가는 것과 동일하다. 무작위가 왜 그리드를 이기는가에 대한 Bergstra와 Bengio(2012), 다중 충실도에 대한 Li 등의 Hyperband(2018)와 그 후속인 ASHA(2020), 그리고 어떤 대규모 탐색의 승자든 믿기 전에 왜 디플레이트되어야 하는가에 대한 Bailey와 López de Prado(2014)다. 이들 중 어느 것도 단 하나의 최선의 최적화기를 규정하지 않는다. 그런 것은 존재하지 않기 때문이다 — 존재하는 것은 하나의 체제와, 그것을 선택하는 비용이다.

요점 정리

  1. 무작위 탐색과 스마트 탐색 사이의 교차점은 알고리즘이 아니라 평가 비용에 의해 설정된다. 우리는 백테스트 한 번의 비용 말고는 아무것도 바꾸지 않고 모든 방법의 순위를 뒤집었다.
  2. 저렴한 평가 → 단순한 Sobol이 처리량으로 이긴다. 우리의 단일 TF 엔진(약 34천 cfg/s)에서, TPE와 ASHA는 동일한 평가 횟수에서 1830배 느리게 실행되었다 — Sobol의 약 2,830 cfg/s에 비해 약 95~154 cfg/s다. 동일한 실제 소요 시간에서, 각 지점이 거의 공짜일 때는 폭이 공간을 더 잘 모델링하는 것을 이긴다.
  3. 비싼 평가 → 스마트한 방법이 효율로 이긴다. 트리플 TF 문제에서 sobol→cmaes는 양의 표본 외 결과를 찾은 유일한 방법이었다(테스트 +16.35%, 홀드아웃 +2.62%). 맹목적인 Sobol은 꼴찌로 끝났다.
  4. 비싼 체제에서 "스마트"란 비용을 인식하는 것을 의미한다. 승자는 비싼 지표 축과 저렴한 임곗값 축 사이의 30~100배 격차를 활용했다 — 비싼 축이 고정된 후에는 저렴한 축에 머무름으로써 더 많은 평가를 했고, 또한 그것들을 더 잘 배치했다.
  5. 충실도는 가지치기의 전제 조건이다. 단일 폴드 순위 상관관계는 ρ@1 ≈ 0.03(단일 TF, 사실상 무작위)에서 0.43(다중 TF)으로 상승했고, 다섯 폴드가 되면 0.91에 도달했다. 다중 충실도/ASHA는 저렴한 충실도가 비싼 충실도처럼 순위를 매길 때에만 보상을 준다 — 그러니 가지치기 전에 ρ를 측정하라.
  6. 탐색에서 이기는 것은 그것에서 살아남는 것이 아니다. 이 챔피언은 PBO는 통과했지만 Deflated Sharpe 게이트는 통과하지 못했다. 최적화기는 평가 비용으로 고르고, 거래 가능성은 디플레이션 게이트로 결정하라. 이들은 서로 다른 도구이며, 둘 다 필요하다.

백테스트 한 번의 비용으로 최적화기를 고르라. 그리고 최적화기가 우위 없는 공간에서 찾을 수 있는 최선의 답도 여전히 우위가 없다는 것을 기억하라 — 그리고 탐색이 아니라 게이트가, 당신이 지금 쥐고 있는 것이 어느 쪽인지 말해주게 하라.

blog.disclaimer

Authors

Eugen Soloviov
Eugen Soloviov

Trading-systems engineer

Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.

Newsletter

시장에서 앞서 나가세요

뉴스레터를 구독하여 독점적인 AI 트레이딩 통찰력, 시장 분석 및 플랫폼 업데이트를 받아보세요.

귀하의 개인정보를 존중합니다. 언제든지 구독을 취소할 수 있습니다.