Skip to content

Latest commit

 

History

History
874 lines (633 loc) · 31 KB

File metadata and controls

874 lines (633 loc) · 31 KB

AlgoTrading Research MCP Server PoC

자연어만으로 알고리즘 트레이딩 전략 생성부터 검증까지

Python FastMCP License

◉ 빠른 시작◉ 자연어 예시◉ 도구 목록◉ 아키텍처


[서울대학교 빅데이터 핀테크 고급전문가 과정 X 교보증권] 캡스톤 프로젝트로 진행된 프로젝트입니다.
하단의 5명의 학생이 진행한 프로젝트입니다.


👥 Authors & Contributors

Copyright © 2026 Individual Contributors. All Rights Reserved.

김상훈
김상훈
@shkim207
박정원
박정원
@p-garden
심지용
심지용
@Jiyong2580
천인범
천인범
@bigdatafintech0819
황현상
황현상
@hyunsanghwang

최종 업데이트: 2026.01.08.


◈ 무엇이 가능한가요?

자연어로 전략을 만드는 시대가 왔습니다. AlgoTrading Research MCP Server는 다음을 제공합니다:

전략 생성: 자연어로 계량 전략을 즉시 생성, 검증된 템플릿 기반
📊 백테스트: 다중 자산, 분할 진입, 부분 청산, 페어 트레이딩 등 고급 기능 지원
🎯 전략 최적화: 과적합 방지를 위한 강건한 검증 시스템
🔄 전략 생애주기 관리: 생성, 수정, 등록, 삭제, 복사를 자연어로 완전 제어
⚙️ 과적합 방지: Walk-Forward, CPCV, MRCV 교차검증으로 과최적화 방지
📈 포트폴리오 전략: 여러 전략을 조합한 메타전략 구축 및 백테스트
🔐 보안: 로컬 호스팅, 데이터 외부 유출 없음
고성능 코어: 비동기 처리, Parquet 캐싱으로 5~10배 빠른 데이터 로드
🤖 AI 네이티브: Claude, GPT 등 MCP 호환 AI와 즉시 연동
💡 토큰 최적화: Proxy 패턴으로 82% 토큰 절감 (26개 → 8개 툴)


◉ 목차


◈ 빠른 시작

2분 안에 시작하기:

필수 요구사항

  • Python 3.12+
  • uv (권장) 또는 pip

1️⃣ 서버 실행

# 로컬 실행
python main.py  # http://localhost:8000

# 백그라운드 실행
python main.py & ngrok http 8000 

원격 접속 (ngrok):

# 서버를 백그라운드로 실행
python main.py &

# ngrok으로 터널링
ngrok http 8000  # https://xxxx.ngrok-free.app

2️⃣ AI 클라이언트 연결

Claude Desktop (권장):

설정 → Connectors → https://xxxx.ngrok-free.app/mcp 추가

3️⃣ 자연어로 시작하기

이제 AI와 대화하듯 전략을 만들 수 있습니다:

"KOSDAQ150 선물로 RSI 14일 기준 과매도/과매수 평균 회귀 전략을 만들어서 2024년 백테스트해줘"


◈ 자연어로 전략 만들기

이 MCP 서버는 자연어 인터페이스를 위해 설계되었습니다. AI 어시스턴트에게 복잡한 금융 분석을 지시하세요.

◆ 간단한 전략 생성 및 백테스트

"RSI(2) 기반 평균 회귀 전략을 만들어줘:
- 자산: KOSDAQ150 선물
- 진입: RSI < 30
- 청산: RSI > 70
- 2024년 전체 기간 백테스트하고 샤프 비율과 MDD 알려줘"

◆ 고급 전략 - 분할 진입과 부분 청산

"다음과 같은 피라미딩 전략을 구현해줘:

1. 기본 설정
   - 자산: KOSPI200 선물
   - 타임프레임: 5분봉
   
2. 진입 로직 (분할 진입)
   - 1차 진입: MACD 골든크로스 + RSI < 50, 포지션 30%
   - 2차 진입: 1차 진입 후 가격 2% 상승 시, 추가 30%
   - 3차 진입: 2차 진입 후 가격 3% 추가 상승 시, 마지막 40%
   
3. 청산 로직 (부분 청산)
   - 50% 익절: 평균 진입가 대비 5% 상승
   - 30% 익절: 평균 진입가 대비 8% 상승
   - 20% 손절: 평균 진입가 대비 3% 하락
   
4. 백테스트: 2024년 1월 ~ 12월
5. 결과: 거래 횟수, 평균 보유 기간, 승률, 손익비, 샤프 비율 리포트"

◆ 페어 트레이딩 전략

"KOSPI200과 KOSDAQ150 선물 간 페어 트레이딩 전략 만들어줘:

1. 공적분 검정으로 두 자산이 장기 균형 관계인지 확인 (2023년 데이터)
2. Z-score 계산 (20일 롤링 윈도우)
3. 진입 조건:
   - Z-score > 2: KOSPI200 숏 + KOSDAQ150 롱
   - Z-score < -2: KOSPI200 롱 + KOSDAQ150 숏
4. 청산: Z-score가 0에 근접 (±0.5 이내)
5. 2024년 백테스트하고 각 자산별 수익률과 전체 포트폴리오 샤프 비율 보고"

◆ 멀티 전략 포트폴리오 (메타전략)

"여러 전략을 결합한 메타전략 만들어줘:

1. 구성 전략:
   - rsi2_mean_reversion (RSI 역추세)
   - macd_obv_intraday (MACD + OBV)
   - vwap_breakout (VWAP 돌파)
   
2. 포트폴리오 최적화:
   - 방법: Sharpe Ratio 최대화
   - 제약: 각 전략 최소 10%, 최대 50% 비중
   - 리밸런싱: 월간
   
3. 백테스트 기간: 2023-2024년
4. 벤치마크: 동일 비중 포트폴리오 대비 성과 비교"

◆ 파라미터 최적화 워크플로우

"RSI 전략의 최적 파라미터를 찾아줘:

1. 파라미터 그리드:
   - rsi_period: [2, 5, 10, 14, 20]
   - rsi_lower: [20, 25, 30]
   - rsi_upper: [70, 75, 80]
   - stop_loss: [1%, 2%, 3%]
   
2. 최적화 방법: Walk-Forward Analysis
   - 인샘플: 6개월
   - 아웃샘플: 3개월
   
3. 평가 지표: Sharpe Ratio
4. 과최적화 검증: PBO (Probability of Backtest Overfitting) 계산
5. 최종 선정: PBO < 50%, 아웃샘플 샤프 > 1.0인 파라미터 세트
6. HTML 리포트 생성 및 결과 요약"

◈ 시연 영상

실제 사용 사례를 영상으로 확인하세요. 자연어로 전략을 생성하고 백테스트하는 전 과정을 보여드립니다.

◆ 1. 전략 생성

자연어 프롬프트로 즉시 전략 코드를 생성하고 검증하는 과정:

영상 내용: RSI 기반 평균 회귀 전략 생성, 코드 검증, 자동 등록

🎬 [전략 생성 시연 영상]

2.mp4

자연어 → 전략 코드 → 자동 검증 → 등록


◆ 2. 전략 백테스트

등록된 전략을 실제 데이터로 백테스트하고 성과를 분석:

영상 내용: 전략 백테스트 실행, 수익률/MDD/샤프 비율 확인

🎬 [전략 백테스트 시연 영상]

2.mp4

백테스트 실행 → 성과 지표 → 리포트까지 즉시 확인


◆ 3. 전략 최적화

Walk-Forward 검증으로 최적 파라미터를 탐색하고 과적합을 방지:

영상 내용: 파라미터 그리드 설정, Walk-Forward 최적화, 최적 파라미터 선정 -> 등록

🎬 [전략 최적화 시연 영상]

2.mp4

파라미터 탐색 → Train/Test 검증 → 강건한 파라미터 선정 → 등록


◆ 4. 메타전략 백테스트

여러 전략을 조합한 포트폴리오 메타전략 구축 및 백테스트:

영상 내용: 다중 전략 선택, 포트폴리오 가중치 최적화, 리밸런싱, 통합 성과 분석

🎬 [메타전략 백테스트 시연 영상]

2.mp4

NCO 전략으로 메타전략 백테스트 진행


◉ 도구 아키텍처

이 서버는 Proxy 패턴을 사용하여 토큰 효율성을 극대화합니다.

토큰 최적화:

  • 26개 개별 도구 → 8개 통합 도구 (82% 절감: 31.7k → 5.7k tokens)
  • 내부 실제 도구: 29개 (기능 유지)
  • get/call 패턴: 카테고리별 조회 + 통합 실행

◆ MCP 외부 인터페이스 (8개)

📋 카테고리별 도구 정보 조회 (7개)

Tool 설명 반환 내용
get_strategy_creation_tools 전략 생성 도구 정보 4개 도구 (요구사항, 가이드, 검증, 저장)
get_strategy_management_tools 전략 관리 도구 정보 5개 도구 (조회, 수정, 인증, 삭제, 복사)
get_meta_strategy_creation_tools 메타전략 생성 도구 정보 4개 도구 (요구사항, 가이드, 검증, 저장)
get_meta_strategy_management_tools 메타전략 관리 도구 정보 5개 도구 (조회, 수정, 인증, 삭제, 복사)
get_backtest_strategy_tools 전략 백테스트 도구 정보 3개 도구 (백테스트, 상태, 자산목록)
get_backtest_meta_strategy_tools 메타전략 백테스트 도구 정보 3개 도구 (백테스트, 상태, 전략목록)
get_optimization_tools 최적화 도구 정보 5개 도구 (가이드, 그리드서치, CV 등)

⚡ 통합 실행 (1개)

Tool 설명 핵심 파라미터
call_algotrading_research_tool 모든 도구 통합 실행 tool_name, params (dict)

◆ 내부 실제 도구 (29개)

전략 생성 (4개)
  • confirm_strategy_requirements - [1/4] 요구사항 분석 및 확인
  • get_strategy_guide - [2/4] 전략 코드 작성 가이드
  • validate_strategy_implementation - [3/4] 작성 코드 검증
  • save_strategy - [4/4] 사용자 승인 후 저장
전략 관리 (5개)
  • get_strategies_info - 전략 정보 조회 (목록/상세/코드/성과)
  • update_strategy - 기존 전략 코드 수정
  • certify_strategy - uncertificated → certificated
  • delete_strategy - 전략 삭제
  • copy_strategy - 전략 복사
메타전략 생성 (4개)
  • confirm_meta_strategy_requirements - [1/4] 요구사항 분석
  • get_meta_strategy_guide - [2/4] 메타전략 가이드
  • validate_meta_strategy_implementation - [3/4] 코드 검증
  • save_meta_strategy - [4/4] 저장
메타전략 관리 (5개)
  • get_meta_strategies_info - 메타전략 정보 조회
  • update_meta_strategy - 메타전략 수정
  • certify_meta_strategy - 인증
  • delete_meta_strategy - 삭제
  • copy_meta_strategy - 복사
전략 백테스트 (3개)
  • backtest_strategy - 전략 백테스트 실행
  • get_backtest_status - 백테스트 상태 조회
  • list_available_assets - 사용 가능 자산 목록
메타전략 백테스트 (3개)
  • backtest_meta_strategy - 메타전략 백테스트
  • get_meta_backtest_status - 상태 조회
  • list_available_strategy_data - 사용 가능 전략 목록
최적화 (5개)
  • get_search_space_guide - Search Space 가이드
  • grid_search - 그리드 서치
  • get_grid_search_status - 그리드 서치 상태
  • cross_validation - 교차 검증 (WF/CPCV/MRCV)
  • get_cv_status - 교차 검증 상태

지원 교차검증 방법:

  • none: Grid Search (단순 그리드 탐색)
  • walk_forward: Walk-Forward Analysis (시간 기반 분할)
  • cpcv: Combinatorial Purged Cross-Validation (조합론적 정화 교차검증)
  • multiple_randomized: Multiple Randomized Cross-Validation (다중 랜덤 교차검증)

🚀 사용 방법 (Usage)

1단계: 카테고리 도구 정보 확인

# 전략 생성 도구 목록 조회
tools = get_strategy_creation_tools()
# → 4개 도구 정보 반환 (이름, 설명, 파라미터 스키마)

2단계: 원하는 도구 실행

# 통합 실행 도구로 실제 작업 수행
result = call_algotrading_research_tool(
    tool_name="get_strategy_guide",
    params={}
)

🗣️ 자연어 명령 예시

User: "전략 생성에 사용할 수 있는 도구들을 보여줘" AI: get_strategy_creation_tools() 호출

User: "get_strategy_guide로 전략 작성 가이드를 가져와줘" AI: call_algotrading_research_tool(tool_name="get_strategy_guide", params={}) 호출


◈ 전략 (Strategy) 시스템

기본 구조

모든 전략은 Strategy 베이스 클래스를 상속받아 구현합니다:

from src.strategy import Strategy, EntryOrder, ExitOrder
import pandas_ta as ta

class MyStrategy(Strategy):
    def __init__(self):
        super().__init__(
            name="my_strategy",
            description="내 전략 설명",
            assets=["KOSDAQ150F"],
            default_params={
                "rsi_period": 14,
                "rsi_lower": 30,
                "rsi_upper": 70
            },
            default_timeframe="5m",
            filter="short-term"
        )
  
    def common(self) -> dict:
        """사전 계산 - 한 번만 실행"""
        asset = self.assets[0]
        df = self.trade_df[asset]
  
        # RSI 계산 (pandas_ta 사용)
        rsi = ta.rsi(df['close'], length=self.params['rsi_period'])
        self.common_cache['rsi'] = rsi
  
        return self.common_cache
  
    def on_bar(self) -> Tuple[List[ExitOrder], List[EntryOrder]]:
        """매 봉마다 호출 - 주문 생성"""
        exits = []
        entries = []
  
        asset = self.assets[0]
        current_bar = self.trade_df[asset].iloc[self.current_idx]
        current_rsi = self.common_cache['rsi'].iloc[self.current_idx]
  
        # 청산 로직
        for pos in self.positions.all:
            if current_rsi > self.params['rsi_upper']:
                exits.append(ExitOrder(
                    pos.position_id,
                    pos.current_size,
                    current_bar['close'],
                    "rsi_overbought"
                ))
  
        # 진입 로직
        if current_rsi < self.params['rsi_lower']:
            if len(self.positions.all) == 0:
                entries.append(EntryOrder(
                    direction="long",
                    asset=asset,
                    size=1.0,
                    price=current_bar['close'],
                    reason="rsi_oversold"
                ))
  
        return exits, entries

# 전략 인스턴스 생성 (필수)
strategy = MyStrategy()

핵심 기능

common() 메서드

  • 백테스트 시작 시 한 번만 실행
  • 모든 기술적 지표 사전 계산
  • self.common_cache에 저장하여 on_bar()에서 접근

on_bar() 메서드

  • 매 봉(bar)마다 호출
  • 청산 주문(ExitOrder)과 진입 주문(EntryOrder) 반환
  • self.current_idx로 현재 봉 인덱스 접근
  • self.positions로 현재 포지션 정보 접근

◉ 고급 기능

  • ✨ 다중 자산 포지션 관리
  • ✨ 분할 진입 (Pyramiding)
  • ✨ 부분 청산 (Partial Exit)
  • ✨ 멀티 단계 익절/손절
  • ✨ 트레일링 스탑
  • ✨ 페어 트레이딩
  • ✨ 시간 기반 조건부 청산

◈ 메타전략 (MetaStrategy) 시스템

메타전략은 여러 전략의 수익률을 조합하여 포트폴리오를 구성합니다.

기본 구조

from src.strategy import MetaStrategy, MetaEntryOrder, MetaExitOrder

class MyMetaStrategy(MetaStrategy):
    def __init__(self):
        super().__init__(
            name="my_meta_strategy",
            description="멀티 전략 포트폴리오",
            strategy_names=[
                "rsi2_mean_reversion",
                "macd_obv_intraday",
                "vwap_breakout"
            ],
            default_params={
                "rebalance_frequency": "monthly",
                "risk_measure": "sharpe"
            }
        )
  
    def common(self) -> dict:
        """전략별 수익률 데이터 준비"""
        # self.strategies_df에 각 전략 수익률 자동 로드됨
        return self.common_cache
  
    def on_bar(self) -> Tuple[List[MetaExitOrder], List[MetaEntryOrder]]:
        """메타전략 리밸런싱 로직"""
        exits = []
        entries = []
  
        # 월초 리밸런싱
        if self._is_month_start(self.current_idx):
            # 모든 포지션 청산
            for pos in self.positions.all:
                exits.append(MetaExitOrder(
                    pos.position_id,
                    pos.current_size,
                    reason="rebalancing"
                ))
      
            # 새로운 비중으로 재진입
            weights = self._calculate_weights()  # 샤프 비율 기반 등
            for strategy_name, weight in weights.items():
                entries.append(MetaEntryOrder(
                    strategy_name=strategy_name,
                    weight=weight,
                    reason="monthly_rebalance"
                ))
  
        return exits, entries

# 메타전략 인스턴스 생성
meta_strategy = MyMetaStrategy()

◈ 파라미터 최적화 및 교차검증

전략의 수치 파라미터를 자동으로 탐색하고, 교차검증을 통해 과적합을 방지하며 강건한 파라미터를 선정합니다.

개요

교차검증 방식:

CV 방식 설명 사용 시점
Walk-Forward Rolling/Expanding Window 방식 시계열 특성 유지, 기본 검증
CPCV 모든 Train/Test 조합 평가 + PBO 과적합 확률 정량화 필요 시
MRCV 시간/자산 서브샘플링 다양한 시장 환경 검증
Grid Search 단순 그리드 서치 (CV 없음) 빠른 탐색, 검증 불필요 시

주요 기능:

  • PBO (Probability of Backtest Overfitting): CSCV 방법론 기반 과적합 확률 (0~1)
  • 복합 점수 랭킹: 수익률 50% + Sharpe 50% 가중 평균
  • 강건성 분석: 이웃 파라미터 기반 안정성 평가
  • HTML 보고서: CV 메서드별 상세 분석 보고서 자동 생성

optimize_strategy 파라미터

파라미터 타입 기본값 설명
strategy_name str 필수 최적화할 전략 이름
search_space Dict 필수 검색할 파라미터 공간
assets List[str] None 백테스트 자산 (None=전략 기본값)
start_date str None 시작일 (YYYY-MM-DD)
end_date str None 종료일 (YYYY-MM-DD)
objective str "composite_score" 최적화 목표: "composite_score", "total_return_%", "sharpe_ratio"
max_combinations int 30 최대 파라미터 조합 수 (초과 시 랜덤 샘플링)
cv_method str "walk_forward" CV 방식: "walk_forward", "cpcv", "multiple_randomized", "none"
target_periods int 4 워크포워드 구간 수 (walk_forward)
n_splits int 5 CV 분할 수 (cpcv)
n_test_splits int 2 테스트 분할 수 (cpcv)
n_subsamples int 30 서브샘플 수 (multiple_randomized)
window_size_days int None 서브샘플 윈도우 크기 (multiple_randomized)
train_test_ratio float 4.0 Train:Test 비율 (4.0 = 4:1)
purge_gap_days int 0 Train/Test 경계 제거 일수
embargo_days int 0 Test 이후 제외 일수
max_workers int 5 병렬 백테스트 워커 수

search_space 형식

# 값 리스트 방식 (권장)
search_space = {
    "k": {"values": [0.3, 0.5, 0.7, 0.9]},
    "lookback": {"values": [10, 20, 30]},
    "rsi_length": {"values": [14, 21, 28]}
}
# 총 조합: 4 × 3 × 3 = 36개

# range 방식 (정수/실수)
search_space = {
    "length": {"range": [10, 30], "type": "int", "step": 5},  # [10, 15, 20, 25, 30]
    "threshold": {"range": [0.5, 1.5], "type": "float", "step": 0.25}  # [0.5, 0.75, 1.0, 1.25, 1.5]
}

자연어 사용 예시

"rsi2_mean_reversion 전략을 Walk-Forward 방식으로 최적화해줘.
파라미터 범위:
- rsi_period: 2, 5, 10, 14
- rsi_lower: 25, 30, 35
- rsi_upper: 65, 70, 75
목표: Sharpe Ratio 최대화
기간: 2023-2024년"

교차검증 방법 상세

Walk-Forward Analysis (기본값)

시간 순서를 유지하며 학습과 검증을 반복:

Train ─────▶ Test ─────▶
         Train ─────▶ Test ─────▶
                  Train ─────▶ Test ─────▶

장점:

  • 실전과 유사한 시간 흐름 반영
  • Look-ahead bias 방지

CPCV (Combinatorial Purged Cross-Validation)

다양한 시간대 조합으로 검증:

[Train─Test] [Train─Test] [Train─Test] ...
조합론적으로 모든 경우의 수 검증

장점:

  • 강건성(robustness) 극대화
  • 과최적화 탐지

MRCV (Multiple Randomized Cross-Validation)

랜덤 샘플링으로 다양한 시나리오 검증:

Random Split 1: [Train ─── Test]
Random Split 2:    [Train ─── Test]
Random Split 3: [Train ──── Test]
...

장점:

  • 다양한 시장 상황 반영
  • 통계적 신뢰도 향상

PBO (Probability of Backtest Overfitting)

과최적화 확률을 정량적으로 평가:

  • PBO < 50%: 과최적화 위험 낮음 ✅
  • PBO ≥ 50%: 과최적화 가능성 높음 ⚠️

◈ 아키텍처

MCP/
├── ◆  main.py                    # FastMCP 서버 진입점 & 설정
├── ◆  pyproject.toml             # 프로젝트 의존성 관리 (uv)
├── ◆  LICENSE                    # 독점 라이센스
├── ◆  README.md                  # 이 문서
│
├── ◆  src/                       # 핵심 소스 코드
│   ├── ⚙  strategy/              # 전략 시스템
│   │   ├── ▪  strategy.py            # Strategy 베이스 클래스
│   │   ├── ▪  meta_strategy.py       # MetaStrategy 베이스 클래스
│   │   ├── ▪  registry.py            # 전략 레지스트리 (file + temporary)
│   │   └── ▪  meta_registry.py       # 메타전략 레지스트리
│   │
│   ├── ⚙  core/                  # 핵심 백테스팅 엔진
│   │   ├── ▪  backtester.py          # 전략 백테스팅 엔진
│   │   ├── ▪  meta_backtester.py     # 메타전략 백테스팅 엔진
│   │   ├── ▪  optimize_engine.py     # 파라미터 최적화 (WF, CPCV, MRCV)
│   │   ├── ▪  skfolio_optimization.py # skfolio 통합 + CV 시각화
│   │   ├── ▪  data_loader.py         # 데이터 로드 + Parquet 캐시
│   │   ├── ▪  position.py            # Position, PositionsInfo 클래스
│   │   ├── ▪  meta_positions.py      # MetaPosition, MetaPositionsInfo
│   │   └── ▪  metrics.py             # 성과 지표 계산 (Sharpe, MDD 등)
│   │
│   ├── ⚙  tools/                 # MCP 도구 구현
│   │   ├── ▪  data_tools.py                    # 데이터 조회
│   │   ├── ▪  strategy_guide_tools.py          # 전략 가이드
│   │   ├── ▪  strategy_management_tools.py     # 전략 CRUD
│   │   ├── ▪  strategy_validation_tools.py     # 전략 검증
│   │   ├── ▪  backtest_tools.py                # 전략 백테스팅
│   │   ├── ▪  optimize_tools.py                # 파라미터 최적화
│   │   ├── ▪  meta_strategy_guide_tools.py     # 메타전략 가이드
│   │   ├── ▪  meta_strategy_management_tools.py # 메타전략 CRUD
│   │   └── ▪  meta_backtest_tools.py           # 메타전략 백테스팅
│   │
│   ├── ◆  config/                # 시스템 설정
│   │   └── settings.py               # MARKET_SPECS, DATA_SOURCES, 경로
│   │
│   ├── ◆  resources/             # 리소스 및 가이드
│   │   ├── strategy_guide_resources.py      # 전략 템플릿 가이드
│   │   └── meta_strategy_guide_resources.py # 메타전략 템플릿 가이드
│   │
│   └── ◆  utils/                 # 유틸리티
│       └── timeframe.py              # 타임프레임 리샘플링 (1m, 5m, 1h, 1d)
│
├── ◆  user/                      # 사용자 작업 공간
│   ├── files/
│   │   ├── strategies/               # 사용자 전략 파일 (.py)
│   │   └── meta_strategies/          # 사용자 메타전략 파일 (.py)
│   ├── results/
│   │   ├── backtests/                # 백테스트 결과 (HTML, CSV)
│   │   └── optimization/             # 최적화 결과 (HTML, JSON)
│   ├── strategy_registry.json        # temporary 전략 레지스트리
│   └── meta_strategy_registry.json   # temporary 메타전략 레지스트리
│
├── ◆  data/                      # 데이터 저장소
│   ├── assets/                       # OHLCV 원본 데이터 (.xlsx, .csv)
│   │   └── parquet/                  # Parquet 캐시 (자동 생성)
│   ├── strategies/                   # 전략 백테스트 결과 데이터
│   └── meta_strategies/              # 메타전략 데이터
│
│
└── ◆  docs/                      # 문서
    ├── optimize_strategy_guide.md
    ├── ON_BAR_REFACTORING_REPORT.md
    └── ...

핵심 설계 원칙

모듈형 아키텍처: 각 컴포넌트가 독립적으로 동작하며 유지보수 용이
보안 우선: 로컬 호스팅, 외부 API 의존성 없음, 데이터 유출 방지
비동기 성능: FastMCP의 async-first 설계로 동시 처리 최적화
타입 안전성: 전체 타입 어노테이션과 mypy 검증
확장 가능: 플러그인 기반 아키텍처로 새 전략/도구 추가 용이
📊 데이터 효율성: Parquet 캐싱으로 5~10배 빠른 데이터 로드
💡 토큰 최적화: Proxy 패턴으로 82% 토큰 절감 (31.7k → 5.7k tokens)


◈ 고급 설정

환경 변수

서버 동작을 커스터마이즈할 수 있습니다:

변수 설명 기본값 예시
MCP_TRANSPORT 전송 방법 streamable-http stdio
MCP_HOST 서버 호스트 0.0.0.0 127.0.0.1
MCP_PORT 서버 포트 8000 3000
MCP_PATH HTTP 엔드포인트 경로 /mcp /api/v1/mcp
LOG_LEVEL 로깅 상세도 WARNING DEBUG

시장 설정 (MARKET_SPECS)

src/config/settings.py에서 각 자산의 거래 조건을 설정:

MARKET_SPECS = {
    "KOSDAQ150F": {
        "tick_size": 0.05,        # 최소 가격 단위
        "commission_rate": 0.00003, # 수수료율 (0.003%)
        "slippage_ticks": 1         # 슬리피지 (틱)
    },
    # ... 다른 자산
}

◈ 라이센스

Copyright © 2026 Individual Contributors. All Rights Reserved.

이 소프트웨어는 독점 소유입니다. 다음에 의해 공동 소유됩니다:

개인:

제한사항

  • 무단 복제, 배포, 사용 엄격히 금지
  • 명시적 서면 허가 없이 재생산, 수정, 배포 불가
  • 역공학 또는 디컴파일 금지
  • 무단 사용 시 민형사상 처벌 대상

연락처

라이센스 문의:

위 저작자들에게 직접 연락

전체 조건은 LICENSE 파일을 참조하세요.


Python FastMCP pandas-ta skfolio