본문으로 건너뛰기
HMA 예제 열기

GEONULAB / RESEARCH METHODS

Lab.

좋은 결과보다,
다시 설명할 수 있는 전략.

아이디어를 명세로 옮기고, 같은 조건에서 실험하고, 변경 전후를 비교합니다. 이 핸드북은 그 과정에서 내려야 할 결정을 정리합니다.

Strategy OS에서 시작하기
방법
명세 → 실험 → 비교
실행 예제
ETHUSDT · HMA
읽는 순서
원칙부터, 필요한 챕터까지

01 — Principle

전략은 빠진 결정까지 설명할 수 있어야 합니다.

전략은 진입 규칙이 아닙니다. 유니버스, 무효 조건, 손실의 형태, 종료의 우선순위, 운영 실패 시의 기본 행동까지 적혀 있어야 전략입니다. 적히지 않은 칸은 백테스트가 대신 채워 주지 않습니다.

그래서 Lab의 방법은 한 번에 하나의 결정입니다. 스펙에 없는 것은 존재하지 않습니다. 같은 문서가 연구와 실행에서 같은 결정을 만들지 않으면, 그 수익 곡선은 다른 시스템의 성과입니다.

Input

자연어 아이디어와 운영자의 가정

Method

여섯 칸의 명시적 규칙과 검증 게이트

Output

추적 가능한 Frozen Blueprint

02 — The six decisions

여섯 가지 결정으로 명세를 완성합니다.

의도, 시장, 위험, 진입, 청산, 운영. 아래는 설계 방법을 설명하는 일반 예시이며, Strategy OS에서 실행하는 HMA 템플릿의 설정과는 다릅니다. 실제 실행 규칙은 템플릿 명세에서 확인합니다.

01

Intent. 한 문장으로 고정하고, 틀린 조건부터 적습니다.

무엇을 포착하는지가 아니라, 무엇이 이 생각을 무효로 만드는지가 전략의 시작입니다.

ThesisNatural language · required
상승 추세의 질서 있는 눌림목을 포착한다
InvalidationDecision boundary
중기 추세 훼손, 또는 변동성 구조 이탈
검토 질문

이 아이디어가 틀렸음을 어떤 관측으로 확인할 수 있습니까?

02

Universe. 전략이 작동할 시장의 경계를 계약으로 묶습니다.

심볼, 시계, 데이터 출처가 명세 밖에 있으면 그 결과는 다른 전략의 성과입니다.

MarketSingle market · locked
ETHUSDT · Perpetual
Decision clockUTC · close-confirmed
30m decision / 1m execution
DataLocal cache in Workbench
Binance OHLCV · no forward fill
검토 질문

현재 명세 밖의 시장이나 데이터가 암묵적으로 섞이지 않았습니까?

03

Risk. 수익보다 먼저 손실의 형태를 설계합니다.

한 번의 거래, 동시 노출, 연속 손실에서 시스템이 멈추는 조건을 수치화합니다. 크기는 손절의 결과이지 입력이 아닙니다.

Risk per tradeSizing is an output
equity 비율 · 수수료 포함
Concurrent exposurePortfolio boundary
1 position
Loss haltOperator intervention
연속 손실 횟수와 세션 손실 상한으로 중단 조건 지정
검토 질문

최악의 연속 손실 뒤에도 다시 시작할 자본이 남습니까?

04

Entry. 관찰 가능한 조건만 진입 규칙으로 남깁니다.

해석이 필요한 표현을 지웁니다. 같은 데이터가 같은 결정을 만들지 않으면 전략이 아닙니다.

ContextRegime input
추세 기울기 · 종가 확정
SetupNo discretion at the trigger
규칙으로 적힌 pullback / invalidation
Order intentFill rule must be named
다음 바 시가 · 결정론적 체결 가정
검토 질문

두 구현자가 같은 캔들에서 같은 진입을 만들 수 있습니까?

05

Exit. 포지션의 모든 끝을 하나의 상태 기계로 적습니다.

손절, 추적, 시간 종료가 한 캔들에서 충돌하면 무엇이 이기는지 미리 정합니다.

Initial protectionPriority 1
ATR stop · 진입 시 고정
Profit protectionDisabled ≠ deleted
켜져 있으면 명시, 꺼져 있으면 꺼진 채로 기록
FallbackPriority 3
시간·구조 종료는 우선순위와 함께
검토 질문

한 바에서 종료 조건이 겹치면 무엇이 우선합니까?

06

Operations. 전략과 운영자의 책임을 분리합니다.

데이터 지연, 재시작, 주문 불일치는 수익률이 아니라 중단 규칙입니다. 확신이 없으면 기본 행동은 멈춤입니다.

FreshnessRuntime gate
Heartbeat stale → block
RecoveryRestart contract
새 주문 전에 reconcile
AuthorityNo automatic promotion
채택과 배포는 사람이 따로 승인
검토 질문

시스템이 확신할 수 없을 때 기본 행동은 멈춤입니까?

03 — Risk contract

잃을 수 있는 만큼만 설계합니다.

거래당 위험과 중단 횟수를 곱하면 세션의 최대 모형 손실이 됩니다. 이 숫자는 주문이 아닙니다. 채택 전에 검토할 경계입니다.

세션 손실 모형 · 단순 계산1.50%Reviewable

현재 경계는 검토 가능한 범위 안에 있습니다.

04 — Evidence

결과가 아니라 구조를 검증합니다.

기준값 주위의 작은 변화에도 결과가 유지되는지 확인합니다. 아래 수치는 검토 방법을 설명하기 위한 예시이며, 실행 결과와 구분합니다.

Perturbation surface · illustrativeGate result · Blocked

연구와 실행의 해시가 같아도, 한 점에만 존재하는 성과는 넘기지 않습니다. 실패한 검증은 빈 결과가 아니라 채택하지 않아야 할 이유입니다.

TestObservedStatus
HMA 42+18.12RWithin band
HMA 50+20.46RBaseline
HMA 58−4.58RBoundary failed

05 — Adoption

승인은 자동화하지 않습니다.

명세를 봉인한 뒤 검증 기록과 사람의 결정을 연결합니다. 실험을 마치는 것과 운영에 채택하는 것은 별도의 단계입니다.

01✓Draft

사람과 도구가 명세를 작성합니다. 초안은 언제든 고칠 수 있습니다.

02✓Frozen

내용과 해시를 봉인합니다. Freeze는 승인이 아닙니다.

03!Evaluated

강건성·패리티·운영 게이트. 실패도 기록이 됩니다.

04Approved

통과한 대상만 사람이 채택합니다. 자동 승격은 없습니다.

05Materialized

승인된 차이만 설정으로 바꿉니다. 배포는 그 다음입니다.

06 — Workbench

명세를 실험하고, 변경을 비교합니다.

Strategy OS에서 지원되는 HMA 예제를 열어 명세를 작성하고, 실험 결과와 변경 전후를 비교할 수 있습니다. 세부 실행 옵션이 필요하면 독립 Workbench에서 로컬 엔진을 사용합니다.

EngineHMA backtest같은 엔진으로 반복 실행
MarketETHUSDT only멀티심볼은 아직 없음
Workflow명세 · 실험 · 비교Strategy OS에서 연결
OutputReport · CSV · Frozen해시로 봉인된 Blueprint
로컬 Workbench 연결 방법

저장소를 복제한 상위 폴더에서 HMA_F 루트로 이동한 뒤 API를 시작합니다.

cd HMA_F
.venv/bin/python -m scripts.lab.workbench_api

07 — Boundary

실험에서 알 수 있는 것과 없는 것.

명세와 실험 기록은 판단의 근거를 남깁니다. 과거 데이터의 결과만으로 미래 수익이나 실제 체결을 보장할 수는 없습니다.

연구에서 확인하는 것

가정과 규칙이 명세에 빠짐없이 적혀 있는가.

같은 조건에서 결과를 재현하고 변경을 설명할 수 있는가.

별도로 판단할 것

운영에 채택할 것인지, 실제 자본을 얼마나 배정할 것인지.

실거래의 체결, 유동성, 운영 환경이 연구 조건과 같은지.