summaryrefslogtreecommitdiff
path: root/services
AgeCommit message (Collapse)Author
16 hoursfeat: optimize Dockerfiles with multi-stage builds, non-root user, .dockerignoreTheSiahxyz
16 hourschore: pin all service dependencies with upper boundsTheSiahxyz
16 hoursfeat: add config validation, SecretStr for secrets, API security fieldsTheSiahxyz
17 hoursrefactor: remove dead code (SentimentData, CircuitBreaker, TradeRow, unused ↵TheSiahxyz
configs) - Remove SentimentData class and tests (superseded by SentimentAggregator) - Remove CircuitBreaker, CircuitState, retry_with_backoff and tests (never used) - Remove TradeRow ORM model and tests (no DB methods reference it) - Remove unused config fields: circuit_breaker_*, selector_candidates_time, selector_filter_time
17 hoursstyle: fix lint and formatting issues across news collector and sharedTheSiahxyz
17 hoursfeat: integrate stock selector into strategy engine schedulerTheSiahxyz
17 hoursfeat: implement 3-stage stock selector (sentiment → technical → LLM)TheSiahxyz
Adds SentimentCandidateSource (DB scores), LLMCandidateSource (Claude news analysis), and StockSelector orchestrating candidate merge, RSI/EMA20/volume technical filter, and LLM final 2-3 pick selection with Redis publish and DB persistence.
17 hoursfeat: implement news-collector main scheduler with all collectorsTheSiahxyz
17 hoursfeat: implement Truth Social and Federal Reserve collectorsTheSiahxyz
17 hoursfeat: implement Reddit social sentiment collectorTheSiahxyz
17 hoursfeat: implement SEC EDGAR 8-K filing collectorTheSiahxyz
17 hoursfeat: implement CNN Fear & Greed Index collectorTheSiahxyz
17 hoursfeat: implement RSS news collector (Yahoo, Google News, MarketWatch)TheSiahxyz
17 hoursfeat: implement Finnhub news collector with VADER sentimentTheSiahxyz
17 hoursfeat: scaffold news-collector service with BaseCollectorTheSiahxyz
21 hoursrefactor: purge all remaining crypto/Binance referencesTheSiahxyz
- Replace BTCUSDT/SOLUSDT/ETHUSDT with AAPL/MSFT in all test files - Update backtester default symbol to AAPL - Update strategy-engine default symbols to US stocks - Update project description and CLI help text - Remove empty superpowers docs directory - Zero crypto references remaining in codebase
21 hoursrefactor: remove all crypto/Binance code, update to US stock symbolsTheSiahxyz
21 hoursrefactor: complete US stock migrationTheSiahxyz
- Data collector: Alpaca REST polling (replaces Binance WebSocket) - Order executor: Alpaca submit_order (replaces ccxt) - Claude stock screener: daily MOC candidate analysis - Remove ccxt/websockets dependencies - Default universe: AAPL, MSFT, GOOGL, AMZN, TSLA + 28 more - 399 tests passing, lint clean
21 hoursrefactor: update data-collector and order-executor for Alpaca APITheSiahxyz
21 hoursrefactor: migrate to US stocks with Alpaca APITheSiahxyz
- Replace Binance/ccxt with Alpaca REST client (paper + live) - Add MOC (Market on Close) strategy for overnight gap trading - Wire sentiment into strategy engine main loop - Add EMA + bullish candle entry filters to Asian RSI - Remove crypto-specific exchange factory - Update config: Alpaca keys replace Binance keys - 399 tests passing, lint clean
21 hoursfeat(strategy): add Market on Close (MOC) strategy for US stocksTheSiahxyz
21 hoursrefactor: replace Binance/ccxt with Alpaca API client for US stocksTheSiahxyz
21 hoursfeat: wire sentiment into engine + add EMA/bullish candle entry filtersTheSiahxyz
22 hoursfeat: add market sentiment filters (Fear & Greed, CryptoPanic, CryptoQuant)TheSiahxyz
- SentimentProvider: fetches Fear & Greed Index (free, no key), CryptoPanic news sentiment (free key), CryptoQuant exchange netflow (free key) - SentimentData: aggregated should_buy/should_block logic - Fear < 30 = buy opportunity, Greed > 80 = block buying - Negative news < -0.5 = block buying - Exchange outflow = bullish, inflow = bearish - Integrated into Asian Session RSI strategy as entry filter - All providers optional — disabled when API key missing - 14 sentiment tests + 386 total tests passing
22 hoursfeat(strategy): add Asian Session RSI strategy for SOL/USDT scalpingTheSiahxyz
Simple time-based + RSI strategy for small capital day trading: - Trading window: KST 9:00-11:00 (UTC 0:00-2:00) - Entry: RSI(14) < 25 + volume above average - Exit: +1.5% TP, -0.7% SL, or session end time exit - Risk: max 3 trades/day, pause after 2 consecutive losses - Config: ~$75 per trade (10% of 100만원 capital)
22 hoursfeat(strategy): Phase 3 complete — individual strategy upgradesTheSiahxyz
- RSI: bullish/bearish divergence detection (conviction 0.9) - MACD: signal-line crossover + zero-line distance conviction - Grid: trend break exit + out-of-range guard - Bollinger: squeeze detection + breakout signals + %B conviction - EMA Crossover: pullback entry mode (wait for EMA retest) - VWAP: daily reset + 1σ/2σ deviation bands + band-based conviction - Volume Profile: HVN/LVN node detection for stronger signals - Combined: adaptive weighting based on sub-strategy win rates - 363 tests passing
22 hoursfeat(strategy): add RSI divergence detection and MACD signal-line crossoverTheSiahxyz
22 hoursfeat(strategy): add EMA pullback entry and VWAP daily reset with deviation bandsTheSiahxyz
22 hoursfeat(strategy): add Volume Profile HVN/LVN and Combined adaptive weightingTheSiahxyz
22 hoursfeat(strategy): add Grid trend guard and Bollinger squeeze detectionTheSiahxyz
22 hoursfeat(risk): add drawdown-based position reduction and consecutive loss pauseTheSiahxyz
22 hoursfeat(risk): add portfolio exposure, correlation risk, and VaR checksTheSiahxyz
37 hoursfeat(strategy): Phase 2 complete — strategy infrastructure upgradeTheSiahxyz
- Technical indicators library (ATR, ADX, RSI, MACD, Bollinger, Stochastic, OBV) - Signal model: conviction score, stop_loss, take_profit fields - BaseStrategy: ADX regime filter, volume confirmation, ATR-based stops - All 8 strategies upgraded with filters, conviction scoring, ATR stops - Combined strategy uses conviction-weighted scoring - 334 tests passing
37 hoursfeat(strategy): apply filters, conviction scoring, and ATR stops to all ↵TheSiahxyz
strategies
37 hoursfeat(strategy): add ADX regime filter, volume confirmation, and ATR stops to ↵TheSiahxyz
BaseStrategy
37 hoursfeat(strategy): add technical indicators library (ATR, ADX, RSI, MACD, ↵TheSiahxyz
Bollinger, Stochastic, OBV)
37 hoursfeat(shared): add conviction, stop_loss, take_profit to Signal modelTheSiahxyz
37 hoursfeat(backtester): Phase 1 complete — realistic backtesting engineTheSiahxyz
- Slippage modeling (configurable per-trade, buy higher/sell lower) - Trading fee deduction (maker/taker configurable) - Stop-loss and take-profit auto-execution per position - Short selling support (allow_short flag) - Walk-forward analysis engine (in-sample/out-of-sample, efficiency ratio) - Daily equity curve Sharpe/Sortino with risk-free rate adjustment - Recovery factor, consecutive win/loss streaks, fee-aware PnL - 312 tests passing
37 hoursfeat(backtester): add slippage, fees, stop-loss/take-profit, and short sellingTheSiahxyz
37 hoursfeat(backtester): add walk-forward analysis engineTheSiahxyz
37 hoursfeat(backtester): improve metrics with daily Sharpe, recovery factor, ↵TheSiahxyz
consecutive stats
37 hoursfix: resolve final 3 issues for production readinessTheSiahxyz
- Fix API strategies endpoint path resolution (use STRATEGIES_DIR env var) - Add DATABASE_URL env var override in alembic env.py - Move risk config fields to shared Settings base class - Remove duplicate fields from ExecutorConfig
37 hoursfix: lint cleanup after medium priority tasksTheSiahxyz
37 hoursfeat(broker): add Redis consumer groups for reliable message processingTheSiahxyz
37 hourstest: add CLI command tests and API router testsTheSiahxyz
37 hoursfeat(portfolio): track realized PnL on sell ordersTheSiahxyz
38 hoursfix: lint cleanup after critical and high priority fixesTheSiahxyz
38 hoursfix: WS factory, backtester config, CI docker builds, health port docsTheSiahxyz
38 hoursfix: snapshot delay, env fields, alembic creds, API healthcheck and error ↵TheSiahxyz
handling
38 hoursfix(strategy-engine): process multiple symbols concurrently with asyncio.gatherTheSiahxyz