Skip to content

프로젝트 구조

ArBot의 전체 디렉토리 구조와 각 모듈의 역할을 설명합니다.

전체 디렉토리 트리

arbot/
├── docs/                           # 프로젝트 문서
│   ├── PRD.md                      # 제품 요구사항 문서
│   ├── TRD.md                      # 기술 요구사항 문서
│   ├── TASKS.md                    # 개발 태스크 목록
│   └── AGENT_TEAM_PLAN.md          # 에이전트 팀 구성 계획
├── src/
│   └── arbot/                      # 메인 Python 패키지
│       ├── __init__.py
│       ├── main.py                 # 엔트리포인트
│       ├── config.py               # 설정 관리
│       ├── models/                 # 데이터 모델 (Pydantic)
│       ├── connectors/             # 거래소 커넥터
│       ├── detector/               # 기회 탐지
│       ├── execution/              # 주문 실행
│       ├── risk/                   # 리스크 관리
│       ├── backtest/               # 백테스팅
│       ├── rebalancer/             # 리밸런싱
│       ├── storage/                # 데이터 저장소
│       ├── dashboard/              # 대시보드 API
│       └── alerts/                 # 알림
├── dashboard/                      # 프론트엔드 (Next.js)
│   ├── package.json
│   └── src/
├── scripts/                        # 유틸리티 스크립트
│   ├── collect_historical.py       # 히스토리컬 데이터 수집
│   ├── init_db.py                  # DB 초기화
│   └── generate_report.py          # 리포트 생성
├── tests/                          # 테스트
│   ├── unit/
│   ├── integration/
│   └── e2e/
├── docker/                         # Docker 관련
│   ├── Dockerfile
│   ├── docker-compose.yml
│   └── prometheus.yml
├── configs/                        # 설정 파일
│   ├── default.yaml                # 기본 설정
│   ├── exchanges.yaml              # 거래소 설정
│   └── strategies.yaml             # 전략 파라미터
├── pyproject.toml                  # Python 프로젝트 설정
├── .env.example                    # 환경 변수 템플릿
└── .gitignore

핵심 모듈 (src/arbot/)

connectors/ - 거래소 커넥터

거래소 WebSocket 및 REST API 연동을 담당합니다.

파일역할
base.py추상 커넥터 인터페이스 (BaseConnector)
websocket_manager.pyWebSocket 연결 관리 (재연결, 하트비트)
rate_limiter.py거래소별 Rate Limit 관리 (weight, count, token-bucket)
binance.pyBinance 커넥터
okx.pyOKX 커넥터
bybit.pyBybit 커넥터
upbit.pyUpbit 커넥터 (KRW 마켓)
bithumb.pyBithumb 커넥터 (KRW 마켓)
kucoin.pyKuCoin 커넥터
gate.pyGate.io 커넥터
bitget.pyBitget 커넥터

detector/ - 차익거래 기회 탐지

실시간 가격 데이터에서 차익거래 기회를 탐지합니다.

파일역할
base.py탐지 전략 인터페이스
spatial.py거래소 간 가격차(Spatial Arbitrage) 탐지
triangular.py단일 거래소 삼각 차익(Triangular Arbitrage) 탐지
statistical.py공적분 기반 통계적 차익(Statistical Arbitrage) 탐지
spread_calculator.py수수료/슬리피지 반영 순이익 스프레드 계산

execution/ - 주문 실행

탐지된 차익 기회에 대한 주문 실행을 담당합니다.

파일역할
base.py실행 엔진 인터페이스
paper_executor.py페이퍼 트레이딩 (가상 체결)
live_executor.py실전 트레이딩 (실제 주문)
order_manager.py주문 상태 관리
fill_simulator.py체결 시뮬레이션 (오더북 기반)

실행 모드는 backtest, paper, live 3가지로 구분됩니다.

risk/ - 리스크 관리

거래 위험을 관리하고 자산을 보호합니다.

파일역할
manager.py리스크 관리 메인 엔진, 시그널 필터링
position_limits.py코인별/거래소별/전체 포지션 한도 관리
drawdown_monitor.py실시간 드로다운 모니터링
anomaly_detector.pyFlash Crash, 비정상 스프레드 감지
circuit_breaker.py연속 손실/이상 상황 시 자동 거래 중단

backtest/ - 백테스팅

히스토리컬 데이터를 활용한 전략 검증 모듈입니다.

파일역할
engine.py이벤트 드리븐 백테스팅 엔진
data_loader.pyClickHouse에서 히스토리컬 데이터 로딩
simulator.py오더북 기반 시장 시뮬레이션 (슬리피지, 부분 체결)
metrics.pyPnL, Sharpe Ratio, Max Drawdown, Win Rate 계산
report.pyHTML/JSON 백테스트 리포트 생성

rebalancer/ - 거래소 간 자금 리밸런싱

거래소 간 자금 편중을 감지하고 최적 이동 경로를 계산합니다.

파일역할
monitor.py다중 거래소 잔고 실시간 모니터링
optimizer.py최적 자금 이동 경로/금액 계산
network_selector.py전송 네트워크별 수수료/속도 비교, 최적 네트워크 선택
executor.py리밸런싱 실행 (Phase 2: 알림, Phase 3: 자동 실행)

storage/ - 데이터 저장소

데이터베이스 접근 레이어입니다.

파일역할
postgres.pyPostgreSQL 비동기 드라이버 (asyncpg) - 거래 기록, 설정
clickhouse.pyClickHouse 드라이버 - 틱 데이터, 오더북 스냅샷
redis_cache.pyRedis 캐시/Pub-Sub - 실시간 가격, 이벤트 스트림

dashboard/ - 대시보드 API

웹 대시보드를 위한 REST API 및 WebSocket 서버입니다.

파일역할
api.pyREST API (시뮬레이션 결과, PnL, 포트폴리오)
websocket_server.pyWebSocket 서버 (실시간 가격, 시그널 스트리밍)

alerts/ - 알림

Telegram 등을 통한 알림 시스템입니다.

파일역할
telegram.pyTelegram 봇 알림 (기회 탐지, PnL, 에러)
manager.py알림 우선순위, 스로틀링, 중복 방지

models/ - 데이터 모델

Pydantic 기반 데이터 모델입니다.

파일역할
orderbook.py오더북 데이터 모델
trade.py거래/주문 데이터 모델
signal.py차익거래 시그널 모델
balance.py잔고 데이터 모델
config.py설정 데이터 모델

설정 파일 (configs/)

파일역할
default.yaml시스템 기본 설정 (실행 모드, 로그 레벨, 심볼 목록)
exchanges.yaml거래소별 활성화/비활성화, 수수료 설정
strategies.yaml전략 파라미터 (최소 스프레드, Z-Score 임계값 등)

YAML 설정은 환경 변수로 오버라이드할 수 있습니다. Pydantic Settings로 설정 검증이 이루어집니다.

테스트 (tests/)

tests/
├── unit/           # 개별 함수/클래스 단위 테스트
├── integration/    # 모듈 간 상호작용 테스트
└── e2e/            # 전체 파이프라인 통합 테스트

자세한 내용은 테스트 가이드를 참조하세요.

Docker 관련 (docker/)

파일역할
DockerfileArBot 애플리케이션 컨테이너 이미지 빌드
docker-compose.yml전체 인프라 서비스 구성 (PostgreSQL, ClickHouse, Redis, Grafana, Prometheus)
prometheus.ymlPrometheus 스크레이프 설정

자세한 내용은 Docker 배포를 참조하세요.