Work프로젝트 / AutoResearch

2026 · Solo project · design, research method, code1인 프로젝트 · 기획 · 연구 설계 · 개발

A system that generates Bitcoin trading strategies and tries hard to reject them.

비트코인 트레이딩 전략을 자동으로 생성하고 검증하는 시스템

AI writes the strategy code. A harness scores it on historical windows the strategy never trained on. The adoption rate is 2%.

AI가 전략 코드를 작성하고, 학습에 사용하지 않은 과거 구간에서 채점합니다. 채택률은 2%입니다.

14,141attempts scored — every rejection kept, with its reason채점한 시도 — 탈락 사유 포함 전량 보관
283adopted — 2% of the total채택 — 전체의 2%
13research lineages running in parallel연구 계열 병렬 운영
8walk-forward validation windows워크포워드 검증 구간

Background배경

Backtests lie in two ways that look identical

백테스트 결과의 신뢰성 문제

Search enough strategies and one will look good by luck. Let a strategy peek at future data and it will look good too. From the equity curve alone, the two are indistinguishable from a real edge. So the object this system works on is not the strategy — it is the procedure that validates a strategy. The generation step is cheap; the rejection step is the product.

탐색 횟수가 늘어나면 우연히 좋은 결과가 나옵니다. 미래 정보를 참조해도 결과는 좋아집니다. 두 경우 모두 수익 곡선만으로는 구분되지 않습니다. 이 시스템이 다루는 대상은 전략이 아니라 전략의 검증 절차입니다. 생성은 값싸고, 기각이 제품입니다.

Architecture구조

Research loop

처리 흐름

Market data6 years of price, funding and flow data
AI writes a strategyOne file, sandboxed, offline
Safety checksBlocks look-ahead and known shortcuts
Tune, then testScored on 8 windows it has never seen
VerdictImproves on the lineage's best? 2% do
시장 데이터6년치 · 펀딩 · 수급
AI가 전략 작성파일 1개 · 샌드박스 · 오프라인
안전성 검사미래 참조 · 꼼수 차단
튜닝 후 테스트처음 보는 8개 구간
개선 여부 판정2% 채택

Rejected attempts are stored with their hypothesis and the reason they failed, and that record is fed back to the AI as input for the next attempt. The loop learns from what didn't work, not just from what did.

기각된 시도는 가설과 탈락 사유를 함께 저장합니다. 다음 시도에서 AI가 이 기록을 입력으로 받습니다. 루프는 성공뿐 아니라 실패에서도 학습합니다.

Deployment path

배포

Adopted strategies move through a practice account (live prices, no orders), then rotating trial slots selected automatically, then a portfolio account that combines several strategies, and finally exchange execution with order limits and a kill switch. At every stage the code that was selected is the code that runs — pinned at selection time and never edited afterwards.

채택된 전략은 연습 계좌(실시간 가격 · 주문 없음) → 자동 선정되는 순환 시험 슬롯 → 여러 전략을 합산하는 포트폴리오 계좌 → 주문 · 한도 · 정지 기능을 갖춘 거래소 집행 순으로 이동합니다. 모든 단계에서 선정 시점의 코드를 고정해 실행하며 이후 수정하지 않습니다.

Scoring rules

채점 규칙

  • Score — return divided by maximum drawdown within the window, aggregated as the median across 8 windows.
  • Position size — set by a risk budget after scoring. The AI never touches it.
  • Cost stress — every candidate is re-run with trading costs doubled.
  • Search penalty — score is discounted in proportion to how many attempts the lineage has made. The pass rate is very low by design.
  • 점수 — 수익을 구간 내 최대 손실로 나눈 값. 8개 구간의 중앙값으로 집계.
  • 포지션 크기 — 채점 이후 리스크 예산에 따라 결정. AI는 관여하지 않음.
  • 비용 스트레스 — 거래비용을 2배로 적용해 재실행.
  • 탐색 보정 — 시도 횟수에 비례해 점수를 차감. 통과율은 매우 낮음.

Product제품

Two views: what is running, and why it was chosen

화면 구성

The console splits into an operating view and a selection-evidence view. Every screen spells out its terms in plain language and states at the top whether the numbers are simulated.

운용 상태를 확인하는 화면과 선정 근거를 확인하는 화면으로 나뉩니다. 각 화면에 표시 내용을 일반 용어로 함께 기재하고, 시뮬레이션 여부도 상단에 명시합니다.

Account console: simulated-account banner, four cards for bankroll, all-time P&L, today's P&L and current position, and a 7-day chart where the strategy line runs ahead of a buy-and-hold line.
Account console.계좌 콘솔. Balance, cumulative and daily P&L, open position, and the strategy's curve against simple buy-and-hold. Sample figures — not a real account.잔고, 누적 손익, 당일 손익, 보유 포지션을 표시하고 단순 보유 곡선과 비교합니다. 샘플 수치이며 실제 계좌가 아닙니다.
Current strategy card: a generation-19 Spot-perp fader with a one-line description, lineage, timeframe, 8 of 8 windows passed, median window Sharpe and leverage cap.
Strategy card.전략 카드. One sentence describing what the strategy does, alongside the metrics used to select it.전략의 동작을 한 문장으로 기술하고, 선정에 사용된 지표를 함께 표시합니다.
Leaderboard of 13 research lineages, each with a validation-window equity sparkline, generation count, score, median window Sharpe, windows passed and time since last adoption.
Research leaderboard.연구 리더보드. Every lineage's equity curve, score and windows passed on the same scale.계열별 수익 곡선, 점수, 통과 구간 수를 같은 기준으로 나열합니다.
Iteration feed: each attempt marked failed or adopted, with the AI's full hypothesis and the score it lost to the incumbent by.
Iteration feed.반복 피드. Each attempt's hypothesis, score, and how it compared to the incumbent.각 시도의 가설과 점수, 기존 기록과의 비교 결과를 표시합니다.

Decisions설계 결정

Design decisions that shaped the system

주요 설계 결정

Scoring채점

Score on risk-adjusted return, not return

위험 조정 수익 기준으로 채점

Return over maximum drawdown, taken as the median across 8 windows. A strategy that excels in only a few windows scores poorly — which is the point.

최대 손실 대비 수익률을 사용하고, 8개 구간의 중앙값으로 집계합니다. 일부 구간에서만 높은 성과를 낸 전략은 점수가 낮습니다.

Scope범위

Position size is not a search variable

포지션 크기를 탐색 대상에서 제외

Under a return-based score, size always converges to the cap. It is decided after scoring, from a risk budget, and the AI cannot reach it.

수익 기준 점수에서는 포지션 크기가 항상 상한으로 수렴합니다. 크기는 채점 이후 리스크 기준으로 별도 결정합니다.

Trust신뢰

Test code and live code must be the same code

테스트 코드와 배포 코드의 동일성 검증

The live trading code is replayed against historical data and must reproduce the same decisions. Any divergence blocks deployment.

실거래 코드를 과거 데이터로 재실행해 동일한 판단이 나오는지 확인합니다. 불일치 시 배포하지 않습니다.

Language표기

Plain terms on every screen

용어를 풀어서 표기

Each metric is labelled in ordinary language next to its name, and every screen says whether it is showing simulated numbers.

각 화면에 표시 내용을 일반 용어로 함께 기재합니다. 시뮬레이션 여부도 화면 상단에 명시합니다.

Role역할Planning · research design · development기획 · 연구 설계 · 개발
StackPython · pandas · SQLite · FastAPI · Optuna
Size규모153 modules · 122 test files모듈 153개 · 테스트 파일 122개