Skip to content

bourbonkk/TradeMonster

Repository files navigation

TradeMonster - Strategy Verification System

투자 전략을 가설 수준에서 정의하고, 과거 데이터로 반복 검증하며, 결과를 웹 UI에서 비교/분석할 수 있는 전략 리서치 플랫폼.

Overview

TradeMonster는 단순한 백테스팅 스크립트가 아니라, 다양한 투자 방법론(추세추종, 눌림목 매매 등)을 체계적으로 연구하고 검증할 수 있는 시스템입니다.

핵심 기능

  • 데이터 수집 — OHLCV 데이터를 수집하고 TimescaleDB에 저장
  • 전략 엔진 — 플러그인 구조로 전략을 정의하고 관리
  • 백테스트 엔진 — 전략 + 기간 + 종목 + 파라미터를 조합하여 과거 데이터로 검증
  • 성과 분석 — 수익률, CAGR, MDD, 샤프지수, 승률, 손익비 등 핵심 지표 계산
  • 웹 UI — 전략 관리, 백테스트 실행, 결과 시각화, 전략 비교를 하나의 인터페이스에서

Architecture

Frontend (React + Vite + TypeScript)
         │ REST API
Backend (FastAPI + Python)
         │
    ┌────┴────┐
    │ Services │
    ├──────────┤
    │ Data     │ → yfinance → TimescaleDB
    │ Strategy │ → Plugin Registry (BaseStrategy)
    │ Backtest │ → Vectorized Engine (pandas)
    │ Metrics  │ → Performance Calculator
    └──────────┘
         │
TimescaleDB (Docker)

Tech Stack

Layer Technology
Backend Python 3.13, FastAPI, SQLAlchemy 2.0, pandas, numpy
Frontend React 18, Vite, TypeScript, Tailwind CSS, Recharts, Lightweight Charts
Database TimescaleDB (PostgreSQL)
Data Source yfinance
Package Manager uv (Python), npm (Node)

Project Structure

TradeMonster/
├── backend/
│   ├── app/
│   │   ├── main.py              # FastAPI entry point
│   │   ├── config.py            # Settings
│   │   ├── database.py          # DB connection
│   │   ├── api/                 # REST endpoints
│   │   ├── models/              # SQLAlchemy models
│   │   ├── schemas/             # Pydantic schemas
│   │   ├── services/            # Business logic
│   │   └── strategies/          # Strategy implementations
│   ├── tests/
│   └── pyproject.toml
├── frontend/
│   ├── src/
│   │   ├── routes/              # Page components
│   │   ├── components/          # Reusable UI
│   │   ├── lib/                 # API client, utils
│   │   └── types/               # TypeScript types
│   └── package.json
├── sql/
│   └── init.sql                 # DB schema
└── docker-compose.yaml          # TimescaleDB

Getting Started

Prerequisites

  • Python 3.13+
  • Node.js 20+
  • Docker & Docker Compose
  • uv (Python package manager)

1. Database

docker-compose up -d

2. Backend

cd backend
uv sync
cp ../.env.example ../.env   # Edit with your settings
uv run python -m app.main

API server runs at http://localhost:8000. Docs at http://localhost:8000/docs.

3. Frontend

cd frontend
npm install
npm run dev

Web UI runs at http://localhost:5173.

Built-in Strategies

Trend Following (추세추종)

이동평균선 정배열/역배열을 기반으로 추세 방향을 판단하고, 추세가 확인되면 진입하여 추세가 깨질 때까지 보유하는 전략.

Parameters:

  • fast_period (기본: 20) — 단기 이동평균
  • slow_period (기본: 50) — 장기 이동평균
  • trend_period (기본: 200) — 추세 판단 이동평균
  • atr_multiplier (기본: 2.0) — ATR 기반 손절 배수

Pullback (눌림목 매매)

상승 추세에서 단기 조정(눌림)이 발생할 때 매수하여, 추세 재개 시 수익을 실현하는 전략.

Parameters:

  • trend_period (기본: 50) — 추세 판단 이동평균
  • pullback_period (기본: 10) — 눌림 판단 기간
  • rsi_period (기본: 14) — RSI 기간
  • rsi_oversold (기본: 30) — RSI 과매도 기준
  • atr_multiplier (기본: 1.5) — ATR 기반 손절 배수

Performance Metrics

Metric Description
Total Return 전체 기간 누적 수익률
CAGR 연복리 수익률
Max Drawdown 최대 낙폭 (고점 대비 최대 하락률)
Sharpe Ratio 위험 대비 수익 (무위험이자율 조정)
Win Rate 수익 거래 비율
Profit Factor 총 이익 / 총 손실
Total Trades 전체 거래 횟수

API Endpoints

Method Path Description
GET /api/assets 자산 목록
POST /api/assets 자산 등록
POST /api/data/collect 데이터 수집 실행
GET /api/strategies 전략 목록
GET /api/strategies/{id} 전략 상세
POST /api/backtests 백테스트 실행
GET /api/backtests/{id} 백테스트 결과
GET /api/backtests 실행 이력
POST /api/results/compare 결과 비교

Adding a New Strategy

  1. backend/app/strategies/ 에 새 파일 생성
  2. BaseStrategy 를 상속하여 구현
  3. 서버 재시작 시 자동 등록
from app.strategies.base import BaseStrategy, StrategyParameter

class MyStrategy(BaseStrategy):
    name = "My Strategy"
    description = "전략 설명"
    version = "1.0.0"
    parameters = [
        StrategyParameter(name="period", type="int", default=20, description="기간"),
    ]

    def generate_signals(self, data, parameters):
        # 매수/매도 시그널 생성 로직
        ...
        return signals

License

MIT

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Contributors