Files
auto-stock/CLAUDE.md

4.9 KiB

Auto Stock Trading System — Claude Context Guide

Core Directive: This document defines the strategies, rules, and architecture for the system. All code modifications and analysis must strictly adhere to these guidelines.


1. Project Overview

1.1 Tech Stack

  • Backend: Python 3.11, FastAPI, SQLAlchemy (Async), PostgreSQL, Redis
  • Frontend: React, TypeScript, Vite, Recharts
  • Infrastructure: Docker Compose, Nginx
  • AI Layer: Claude 3.5 Sonnet / Gemini 2.0 Flash (Switch via .env)
  • Integration: KIS REST/WebSocket API, MCP Server (stdio)

1.2 Environment (.env)

  • AI_PROVIDER: gemini or claude
  • KIS_MODE: virtual or real
  • TOKEN_SAVE_MODE: true (Compresses JSON, limits chart data to 30 days)

2. Directory Structure

2.1 Backend (backend/app/)

  • API: api/endpoints/ (Market data, Portfolio, Trades)
  • Core: market_data.py, portfolio.py, trades.py

2.2 Services (backend/app/services/)

  • Strategies: mean_reversion_strategy.py (v2), short_term_strategy.py, kosdaq_scanner.py
  • Analysis: feature_engineering.py, ml_ensemble.py, tensorflow_predictor.py
  • Risk & Utils: risk_management.py, loss_tracker.py, mdd_manager.py
  • Architecture: db_worker.py (Async DB Writer)

2.3 MCP (mcp-server/)

  • stdio_server.py, auto_trade_claude.py, trade_monitor.py

3. Architecture Principles (Critical)

3.1 Separation of Concerns

  • Real-time Layer: Handles API callbacks, Websocket broadcasts, and memory caching. Zero DB I/O allowed.
  • Persistence Layer: Handles DB INSERT/UPDATE operations via background workers.

3.2 Async DB Worker Rule

  • Direct DB Access Ban: Never call AsyncSessionLocal() or commit() inside API callbacks or real-time schedulers.
  • Queue Usage: All data persistence (Trade history, Analysis results) must be sent to db_task_queue in db_worker.py.
  • Worker: The background worker processes the queue and handles safe DB transactions sequentially.

4. Coding Guidelines

4.1 Stability

  • No Breaking Changes: Never alter existing function/class signatures.
  • Versioning: Use _v2, _v3 suffixes for new strategy implementations.

4.2 Optimization

  • JSON Handling: Always use core.json_helpers._dumps() instead of json.dumps.
  • Prompt Engineering: Minimize tokens, use compact formats.

5. Risk Management Rules

5.1 Position Sizing

  • Max Allocation: 3-4% of total capital per stock.
  • Max Count: 20-25 stocks max.
  • Leverage: Max 20% of total capital for Inverse/Leveraged ETFs.

5.2 Stop Loss (SL) & Take Profit (TP)

  • SL Base: -6% (Stable), -10% (Volatile).
  • SL ATR: Entry Price - (2.5 * ATR). (Priority over base SL)
  • TP: Sell 50% at +2R profit.
  • Trailing Stop: High - (1.5 * ATR) for remaining 50%.

5.3 MDD Control

  • MDD -10%: Stop new entries. Reduce position sizes by 30%. Stop Short-term Strategy.
  • MDD -20%: Force reduce all positions by 50%. Liquidate leveraged assets first.

5.4 Filters

  • Price: > 5,000 KRW (Korea), > $4 (US). (Exceptions: ETFs, REITs)
  • Correlation: Max 3 stocks per sector. Reject entry if correlation > 0.7 with portfolio.

6. Strategy A: RSI + Bollinger Mean Reversion v2

6.1 Market Regime (Daily)

  • BULL: KOSPI200 > MA200 AND MA200 Slope > 0.
  • BEAR: KOSPI200 < MA200 AND MA200 Slope < 0.
  • SIDEWAYS: ADX < 20 OR Slope ≈ 0. (Ignore all signals)

6.2 Entry Conditions

  • Bull Market: RSI(14) < 25, Price within BB Lower (-3% to +1.5%), Vol > 20MA.
  • Bear Market: RSI(14) < 30, Price < BB Lower, Vol > 1.5x 20MA, Reversal candle required.
  • Pre-emptive: Daily RSI < 40 AND 60m RSI < 30 AND Breakout MA5.

6.3 Exit Conditions

  • Partial: RSI > 50 OR Price > BB Mid OR Profit > 2*ATR.
  • Full: RSI > 65 OR Price > BB Upper (99%) OR Trailing Stop.

7. Strategy B: Aggressive Growth

7.1 Kosdaq Scanner (Swing)

  • Scope: All Kosdaq (~1600).
  • Filter: Price > 5,000 KRW, Top 20% Volume.
  • Score: 0.5*RSI + 0.3*BB + 0.2*Vol. Pick Top 20.
  • Allocation: 25% of Capital.

7.2 Short-term Strategy (15m)

  • Target: Stocks with Daily RSI < 40.
  • Entry: 15m RSI < 30, Price near BB Lower, MA5 Breakout, Vol > 1.3x.
  • Exit: 15m RSI > 55 OR Profit > 1.5 * ATR(15m).
  • Allocation: Max 25% of Capital. Disable if MDD < -10%.

8. Instructions for Claude

8.1 Critical Checkpoints

  1. Architecture: Ensure all DB writes use db_worker.py.
  2. Safety: Always apply Risk Rules (Section 5) to every trade.
  3. Regime: Do NOT suggest entries in SIDEWAYS regime.
  4. Testing: No real trading without Backtest + Walk-forward validation.

8.2 Response Format

  • Use _dumps() for JSON.
  • Create new files for new features.
  • Do not modify existing signatures.

Last updated: 2026-02-24