# 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*