# ๐Ÿ“ˆ SightRay ์ „๋žต ์—”์ง„ ์š”์•ฝ (`strategy_engine`) --- ## โœ… ์—”์ง„ ๋ชฉ์  ์ „๋žต ์—”์ง„์€ ๋ฆฌ์Šคํฌ ๊ด€๋ฆฌ ์—”์ง„์—์„œ ํ†ต๊ณผ๋œ `tradable ์ข…๋ชฉ๋“ค`์— ๋Œ€ํ•ด, **์‹ค์ œ ํˆฌ์ž ์ „๋žต์„ ๊ตฌ์„ฑํ•˜๊ณ , ์ž๊ธˆ ๋ฐฐ๋ถ„ ๋ฐ ๋งค์ˆ˜ ์‹คํ–‰ ์กฐ๊ฑด์„ ์„ค์ •ํ•˜๋Š” ์—ญํ• **์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. > ๐ŸŽฏ ํ•ต์‹ฌ ๋ชฉํ‘œ: "์ด ์ข…๋ชฉ์„ ์–ผ๋งˆ์—, ์–ผ๋งˆ๋‚˜, ์–ด๋–ค ์กฐ๊ฑด์œผ๋กœ ์‚ด ๊ฒƒ์ธ๊ฐ€?" --- ## ๐Ÿ“ฆ ์ฃผ์š” ๊ธฐ๋Šฅ | ๊ธฐ๋Šฅ | ์„ค๋ช… | |------|------| | **์ „๋žต ํ…œํ”Œ๋ฆฟ ์ ์šฉ** | TP/SL ๊ธฐ์ค€ ์ „๋žต(`basic`), risk_score ๊ธฐ๋ฐ˜ ์ „๋žต(`adjusted`) ์„ ํƒ ์ ์šฉ | | **์ž๊ธˆ ๋ฐฐ๋ถ„ ๋ฐ ์ˆ˜๋Ÿ‰ ๊ณ„์‚ฐ** | total_capital์„ ์ข…๋ชฉ ์ˆ˜ ๋˜๋Š” ์ „๋žต ๊ธฐ์ค€์— ๋”ฐ๋ผ ๋ถ„๋ฐฐ | | **์‹คํ–‰ ๊ฒฐ๊ณผ ์ €์žฅ** | ํฌ์ง€์…˜, ์ „๋žต ์กฐ๊ฑด ํฌํ•จ ์ตœ์ข… ์ „๋žต ํ…Œ์ด๋ธ” ์ƒ์„ฑ | --- ## ๐Ÿ“ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ ```plaintext strategy_engine/ โ”œโ”€โ”€ templates/ โ”‚ โ”œโ”€โ”€ basic_strategy.py # ๊ณ ์ • TP/SL ์ „๋žต โ”‚ โ””โ”€โ”€ risk_adjusted_strategy.py # ๋ฆฌ์Šคํฌ ์ ์ˆ˜ ๊ธฐ๋ฐ˜ ์ „๋žต โ”œโ”€โ”€ selector.py # tradable ์ข…๋ชฉ ์ค‘ ์ „๋žต ์กฐ๊ฑด ํ•„ํ„ฐ๋ง โ”œโ”€โ”€ position_manager.py # ์ž๊ธˆ ๋ฐฐ๋ถ„ ๋ฐ ํฌ์ง€์…˜ ์ˆ˜๋Ÿ‰ ๊ณ„์‚ฐ โ””โ”€โ”€ run_strategy.py # ์ „์ฒด ์ „๋žต ํ๋ฆ„ ์‹คํ–‰ (CLI ์ง€์›) ``` --- ## ๐Ÿง  ์ „๋žต ํ…œํ”Œ๋ฆฟ ๋น„๊ต | ์ „๋žต | ์„ค๋ช… | TP | SL | Action ๊ธฐ์ค€ | |--------|------|----|----|----------------| | `basic` | ๊ณ ์ • ๋น„์œจ ์„ค์ • | +5% | -3% | ๋ชจ๋‘ Buy | | `adjusted` | risk_score ๊ธฐ์ค€ ์กฐ์ • | +3~7% | -2~3% | score < 60 โ†’ ์ œ์™ธ | --- ## ๐Ÿงช ์‹คํ–‰ ํ๋ฆ„ ```plaintext [risk_filtered_result.csv] โ†“ selector.py โ†’ ์ „๋žต ์กฐ๊ฑด ๋งŒ์กฑ ์ข…๋ชฉ ์ถ”์ถœ โ†“ templates/ ์ „๋žต ํ…œํ”Œ๋ฆฟ ์ ์šฉ (TP/SL ์„ค์ •) โ†“ position_manager.py โ†’ ์ž๊ธˆ ๋ฐฐ๋ถ„, ํฌ์ง€์…˜ ์ˆ˜๋Ÿ‰ ๊ฒฐ์ • โ†“ run_strategy.py โ†’ ๊ฒฐ๊ณผ ์ €์žฅ: final_strategy_result.csv ``` --- ## ๐Ÿ“Š ์ตœ์ข… ์ถœ๋ ฅ ์˜ˆ์‹œ | symbol | entry_price | target_price | stop_loss | position_size | capital_allocated | action | |--------|-------------|--------------|-----------|----------------|--------------------|--------| | AAPL | 186.5 | 199.55 | 180.9 | 1340 | 250000 | Buy | | TSLA | 241.3 | โ€” | โ€” | 0 | 0 | None | --- ## โš™๏ธ ์‹คํ–‰ ์˜ˆ์‹œ (CLI) ```bash python run_strategy.py \ --input risk_filtered_result.csv \ --capital 1000000 \ --strategy adjusted \ --output final_strategy_result.csv ``` --- ## ๐Ÿ“Œ ๊ตฌ์„ฑ ํŒŒ์ผ ์š”์•ฝ | ํŒŒ์ผ | ์—ญํ•  | |------|------| | `selector.py` | tradable ์ข…๋ชฉ ์ค‘ ์ „๋žต ์กฐ๊ฑด ๋งŒ์กฑ ์ข…๋ชฉ ํ•„ํ„ฐ๋ง | | `basic_strategy.py` | ๊ณ ์ • ๋น„์œจ ๊ธฐ๋ฐ˜ TP/SL ์„ค์ • ์ „๋žต | | `risk_adjusted_strategy.py` | risk_score์— ๋”ฐ๋ผ ์ „๋žต์„ ์กฐ์ ˆํ•˜๋Š” ํ…œํ”Œ๋ฆฟ | | `position_manager.py` | ์ž๋ณธ ๋ถ„๋ฐฐ ๋ฐ ์‹ค์ œ ๋งค์ˆ˜ ์ˆ˜๋Ÿ‰ ๊ฒฐ์ • | | `run_strategy.py` | ์ „์ฒด ์ „๋žต ์‹คํ–‰ ์ปจํŠธ๋กค๋Ÿฌ + CLI ์ง€์› | --- ## โœ… ์ •๋ฆฌ SightRay ์ „๋žต ์—”์ง„์€ ๋ถ„์„/๋ฆฌ์Šคํฌ ๋‹จ๊ณ„๋ฅผ ํ†ต๊ณผํ•œ ์ข…๋ชฉ์— ๋Œ€ํ•ด **์‹คํ–‰ ์ „๋žต์„ ์ž๋™ ๊ตฌ์„ฑ**ํ•˜๋ฉฐ, **์ „๋žต ํ…œํ”Œ๋ฆฟ ๊ธฐ๋ฐ˜ + ์ž๊ธˆ ๋ฐฐ๋ถ„ + ๋งค์ˆ˜ ์กฐ๊ฑด ์„ค์ •**์˜ ์™„์ „ํ•œ ์‹คํ–‰ ๊ตฌ์กฐ๋ฅผ ๊ฐ–์ถ˜ ์—”์ง„์ž…๋‹ˆ๋‹ค.