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%입니다.
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
처리 흐름
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.
운용 상태를 확인하는 화면과 선정 근거를 확인하는 화면으로 나뉩니다. 각 화면에 표시 내용을 일반 용어로 함께 기재하고, 시뮬레이션 여부도 상단에 명시합니다.




Decisions설계 결정
Design decisions that shaped the system
주요 설계 결정
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개 구간의 중앙값으로 집계합니다. 일부 구간에서만 높은 성과를 낸 전략은 점수가 낮습니다.
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.
수익 기준 점수에서는 포지션 크기가 항상 상한으로 수렴합니다. 크기는 채점 이후 리스크 기준으로 별도 결정합니다.
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.
실거래 코드를 과거 데이터로 재실행해 동일한 판단이 나오는지 확인합니다. 불일치 시 배포하지 않습니다.
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.
각 화면에 표시 내용을 일반 용어로 함께 기재합니다. 시뮬레이션 여부도 화면 상단에 명시합니다.