787 lines
19 KiB
Markdown
787 lines
19 KiB
Markdown
# GitHub Issues for Investment Platform
|
|
|
|
This file contains all 47 issues to be created. Run the creation script or create manually.
|
|
|
|
---
|
|
|
|
## Phase 1: Database Foundation
|
|
|
|
### Issue 1: Database setup - SQLAlchemy + PostgreSQL/SQLite
|
|
**Labels:** enhancement, database, priority-high
|
|
|
|
Create database/db.py with:
|
|
- SQLAlchemy engine configuration
|
|
- PostgreSQL for production, SQLite for development
|
|
- Session management (get_db, get_db_session)
|
|
- Connection pooling
|
|
- Environment variable configuration (DATABASE_URL)
|
|
|
|
**Acceptance Criteria:**
|
|
- Can connect to both PostgreSQL and SQLite
|
|
- Session management works correctly
|
|
- Environment variables properly loaded
|
|
|
|
---
|
|
|
|
### Issue 2: User model - profiles, tax jurisdiction, API keys
|
|
**Labels:** enhancement, database, priority-high
|
|
**Depends on:** #1
|
|
|
|
Create database/models/user.py with:
|
|
- id, email, name, hashed_password
|
|
- tax_jurisdiction (AU, US, etc.)
|
|
- timezone (default: Australia/Sydney)
|
|
- api_key for programmatic access
|
|
- is_active, is_verified flags
|
|
- created_at, updated_at timestamps
|
|
|
|
**Acceptance Criteria:**
|
|
- Can create, read, update, delete users
|
|
- Tax jurisdiction defaults to AU
|
|
|
|
---
|
|
|
|
### Issue 3: Portfolio model - live, paper, backtest types
|
|
**Labels:** enhancement, database, priority-high
|
|
**Depends on:** #1, #2
|
|
|
|
Create database/models/portfolio.py with:
|
|
- PortfolioType enum (live, paper, backtest)
|
|
- BrokerType enum (alpaca, ibkr, paper)
|
|
- initial_capital, current_cash, currency
|
|
- strategy_name, strategy_config (JSON)
|
|
- CGT tracking fields
|
|
- Relationship to User
|
|
|
|
**Acceptance Criteria:**
|
|
- Can create multiple portfolios per user
|
|
- Supports all three portfolio types
|
|
|
|
---
|
|
|
|
### Issue 4: Settings model - risk profiles, alert preferences
|
|
**Labels:** enhancement, database, priority-high
|
|
**Depends on:** #1, #2
|
|
|
|
Create database/models/settings.py with:
|
|
- RiskProfile enum (conservative, moderate, aggressive)
|
|
- max_position_pct, max_daily_loss_pct, default_stop_loss_pct
|
|
- position_sizing_method (fixed_fractional, kelly, risk_parity)
|
|
- Alert preferences (email, slack, sms with contact info)
|
|
- Trading hours
|
|
- LLM preferences
|
|
|
|
**Acceptance Criteria:**
|
|
- One-to-one relationship with User
|
|
- All risk parameters have sensible defaults
|
|
|
|
---
|
|
|
|
### Issue 5: Trade model - execution history with CGT tracking
|
|
**Labels:** enhancement, database, priority-high
|
|
**Depends on:** #1, #3
|
|
|
|
Create database/models/trade.py with:
|
|
- symbol, side (buy/sell), quantity, price, total_value
|
|
- order_type, status (pending, filled, cancelled)
|
|
- signal_source, signal_confidence
|
|
- CGT fields: acquisition_date, cost_basis_per_unit, cost_basis_total
|
|
- holding_period_days, cgt_discount_eligible (>12 months)
|
|
- cgt_gross_gain, cgt_gross_loss, cgt_net_gain
|
|
- tax_year (Australian FY July-June)
|
|
- fx_rate_to_aud for foreign assets
|
|
|
|
**Acceptance Criteria:**
|
|
- Full CGT calculation support
|
|
- Tax year correctly calculated (July-June)
|
|
- 50% discount eligibility tracked
|
|
|
|
---
|
|
|
|
### Issue 6: Alembic migrations setup
|
|
**Labels:** enhancement, database, priority-high
|
|
**Depends on:** #1-5
|
|
|
|
Setup Alembic for database migrations:
|
|
- Initialize Alembic configuration
|
|
- Create initial migration for all models
|
|
- Add upgrade/downgrade scripts
|
|
- Document migration workflow in README
|
|
|
|
**Acceptance Criteria:**
|
|
- Can run migrations up and down
|
|
- Initial migration creates all tables
|
|
|
|
---
|
|
|
|
## Phase 2: Data Layer
|
|
|
|
### Issue 7: FRED API integration - interest rates, M2, GDP, CPI
|
|
**Labels:** enhancement, data, priority-high
|
|
|
|
Create spektiv/dataflows/fred.py with:
|
|
- FRED API client (fredapi package)
|
|
- Series: DFF (Fed Funds), DGS10 (10Y Treasury), M2SL (M2), GDP, CPIAUCSL
|
|
- VIX from CBOE
|
|
- Date range filtering
|
|
- Error handling and retries
|
|
|
|
**Acceptance Criteria:**
|
|
- Can fetch all specified series
|
|
- Proper date formatting
|
|
- Rate limit handling
|
|
|
|
---
|
|
|
|
### Issue 8: Multi-timeframe aggregation - weekly/monthly OHLCV
|
|
**Labels:** enhancement, data, priority-high
|
|
|
|
Create spektiv/dataflows/multi_timeframe.py with:
|
|
- Aggregate daily OHLCV to weekly
|
|
- Aggregate daily OHLCV to monthly
|
|
- Preserve volume correctly
|
|
- Handle partial periods
|
|
|
|
**Acceptance Criteria:**
|
|
- Weekly aggregation (Mon-Fri)
|
|
- Monthly aggregation
|
|
- Works with yfinance data
|
|
|
|
---
|
|
|
|
### Issue 9: Benchmark data - SPY, sector ETFs
|
|
**Labels:** enhancement, data, priority-high
|
|
|
|
Create spektiv/dataflows/benchmark.py with:
|
|
- SPY for broad market
|
|
- Sector ETFs (XLF, XLK, XLE, XLV, etc.)
|
|
- Relative strength calculation
|
|
- Correlation calculation
|
|
|
|
**Acceptance Criteria:**
|
|
- Can calculate relative strength vs SPY
|
|
- Can calculate rolling correlations
|
|
|
|
---
|
|
|
|
### Issue 10: Interface routing - add new data vendors
|
|
**Labels:** enhancement, data, priority-high
|
|
**Depends on:** #7-9
|
|
|
|
Update spektiv/dataflows/interface.py:
|
|
- Add FRED to VENDOR_METHODS
|
|
- Add multi_timeframe routing
|
|
- Add benchmark routing
|
|
- Update TOOLS_CATEGORIES
|
|
|
|
**Acceptance Criteria:**
|
|
- New vendors accessible via route_to_vendor
|
|
- Fallback chains work correctly
|
|
|
|
---
|
|
|
|
### Issue 11: Data caching layer - FRED rate limits
|
|
**Labels:** enhancement, data, priority-medium
|
|
**Depends on:** #7
|
|
|
|
Add caching for FRED data:
|
|
- File-based cache for FRED responses
|
|
- Cache invalidation strategy (daily for most series)
|
|
- Memory cache for frequently accessed data
|
|
|
|
**Acceptance Criteria:**
|
|
- Reduces API calls
|
|
- Cache respects rate limits
|
|
|
|
---
|
|
|
|
## Phase 3: New Analysts
|
|
|
|
### Issue 12: Momentum Analyst - multi-TF momentum, ROC, ADX
|
|
**Labels:** enhancement, agents, priority-high
|
|
**Depends on:** #8
|
|
|
|
Create spektiv/agents/analysts/momentum_analyst.py with:
|
|
- Multi-timeframe momentum (daily, weekly, monthly)
|
|
- Rate of Change (ROC) calculation
|
|
- ADX (Average Directional Index)
|
|
- Relative strength vs benchmark
|
|
- Volume-weighted momentum
|
|
|
|
**Acceptance Criteria:**
|
|
- Produces structured report like other analysts
|
|
- Integrates with debate workflow
|
|
|
|
---
|
|
|
|
### Issue 13: Macro Analyst - FRED interpretation, regime detection
|
|
**Labels:** enhancement, agents, priority-high
|
|
**Depends on:** #7
|
|
|
|
Create spektiv/agents/analysts/macro_analyst.py with:
|
|
- Interpret FRED data for market regime
|
|
- Interest rate environment (rising/falling/stable)
|
|
- Inflation/deflation signals
|
|
- Risk-on/risk-off assessment
|
|
- Economic cycle positioning
|
|
|
|
**Acceptance Criteria:**
|
|
- Produces structured macro report
|
|
- Identifies current market regime
|
|
|
|
---
|
|
|
|
### Issue 14: Correlation Analyst - cross-asset, sector rotation
|
|
**Labels:** enhancement, agents, priority-high
|
|
**Depends on:** #9
|
|
|
|
Create spektiv/agents/analysts/correlation_analyst.py with:
|
|
- Cross-asset correlation analysis
|
|
- Sector rotation signals
|
|
- Safe haven flows (gold, bonds)
|
|
- Currency correlations (if applicable)
|
|
- Divergence detection
|
|
|
|
**Acceptance Criteria:**
|
|
- Produces correlation report
|
|
- Identifies unusual correlations
|
|
|
|
---
|
|
|
|
### Issue 15: Position Sizing Manager - Kelly, risk parity, ATR
|
|
**Labels:** enhancement, agents, priority-high
|
|
|
|
Create spektiv/agents/managers/position_sizing_manager.py with:
|
|
- Kelly criterion calculation
|
|
- Risk parity sizing
|
|
- Fixed fractional sizing
|
|
- ATR-based sizing
|
|
- Maximum position limits
|
|
|
|
**Acceptance Criteria:**
|
|
- Given signal and confidence, outputs position size
|
|
- Respects risk limits from settings
|
|
|
|
---
|
|
|
|
### Issue 16: Analyst integration - add to graph/setup.py workflow
|
|
**Labels:** enhancement, agents, priority-high
|
|
**Depends on:** #12-15
|
|
|
|
Update spektiv/graph/setup.py:
|
|
- Add new analysts to analyst team
|
|
- Update debate workflow to include new insights
|
|
- Ensure position sizing manager is called
|
|
|
|
**Acceptance Criteria:**
|
|
- All new analysts contribute to analysis
|
|
- Backward compatible with existing workflow
|
|
|
|
---
|
|
|
|
## Phase 4: Memory System
|
|
|
|
### Issue 17: Layered memory - recency, relevancy, importance scoring
|
|
**Labels:** enhancement, memory, priority-medium
|
|
**Depends on:** #5
|
|
|
|
Create spektiv/memory/layered_memory.py with:
|
|
- Recency scoring (exponential decay)
|
|
- Relevancy scoring (similarity to current situation)
|
|
- Importance scoring (based on P&L impact)
|
|
- Memory retrieval with composite score
|
|
|
|
**Acceptance Criteria:**
|
|
- FinMem pattern implemented
|
|
- Can retrieve top-k relevant memories
|
|
|
|
---
|
|
|
|
### Issue 18: Trade history memory - outcomes, agent reasoning
|
|
**Labels:** enhancement, memory, priority-medium
|
|
**Depends on:** #5, #17
|
|
|
|
Create spektiv/memory/trade_history.py with:
|
|
- Store trade outcomes with full context
|
|
- Link to agent reasoning at time of trade
|
|
- Track what worked vs what didn't
|
|
- Pattern recognition for similar setups
|
|
|
|
**Acceptance Criteria:**
|
|
- Full trade context preserved
|
|
- Can query by symbol, timeframe, outcome
|
|
|
|
---
|
|
|
|
### Issue 19: Risk profiles memory - user preferences over time
|
|
**Labels:** enhancement, memory, priority-medium
|
|
**Depends on:** #4, #17
|
|
|
|
Create spektiv/memory/risk_profiles.py with:
|
|
- User risk preferences over time
|
|
- Portfolio behavior patterns
|
|
- Drawdown tolerance history
|
|
- Position sizing history
|
|
|
|
**Acceptance Criteria:**
|
|
- Tracks risk behavior evolution
|
|
- Informs position sizing
|
|
|
|
---
|
|
|
|
### Issue 20: Memory integration - retrieval in agent prompts
|
|
**Labels:** enhancement, memory, priority-medium
|
|
**Depends on:** #17-19
|
|
|
|
Integrate memory into agents:
|
|
- Add memory retrieval to analyst prompts
|
|
- Include relevant past trades in context
|
|
- Update trader agent with memory
|
|
|
|
**Acceptance Criteria:**
|
|
- Agents reference relevant past trades
|
|
- Memory influences recommendations
|
|
|
|
---
|
|
|
|
## Phase 5: Execution Layer
|
|
|
|
### Issue 21: Broker base interface - abstract broker class
|
|
**Labels:** enhancement, execution, priority-high
|
|
|
|
Create execution/brokers/base.py with:
|
|
- Abstract Broker class
|
|
- Methods: connect, disconnect, submit_order, cancel_order
|
|
- Methods: get_positions, get_account, get_order_status
|
|
- Error handling patterns
|
|
|
|
**Acceptance Criteria:**
|
|
- Clear interface contract
|
|
- All brokers implement same interface
|
|
|
|
---
|
|
|
|
### Issue 22: Broker router - route by asset class
|
|
**Labels:** enhancement, execution, priority-high
|
|
**Depends on:** #21
|
|
|
|
Create execution/brokers/broker_router.py with:
|
|
- Route by exchange (NYSE, NASDAQ -> Alpaca)
|
|
- Route by asset type (futures -> IBKR)
|
|
- Route by symbol suffix (.AX -> IBKR)
|
|
- Fallback handling
|
|
|
|
**Acceptance Criteria:**
|
|
- Correct routing for all asset classes
|
|
- Clear routing rules
|
|
|
|
---
|
|
|
|
### Issue 23: Alpaca broker - US stocks, ETFs, crypto
|
|
**Labels:** enhancement, execution, priority-high
|
|
**Depends on:** #21, #22
|
|
|
|
Create execution/brokers/alpaca_broker.py with:
|
|
- Alpaca API integration (alpaca-py)
|
|
- Paper and live modes
|
|
- US stocks, ETFs
|
|
- Crypto trading
|
|
- Order submission and tracking
|
|
|
|
**Acceptance Criteria:**
|
|
- Can place orders via Alpaca API
|
|
- Supports paper trading mode
|
|
|
|
---
|
|
|
|
### Issue 24: IBKR broker - futures, ASX equities
|
|
**Labels:** enhancement, execution, priority-high
|
|
**Depends on:** #21, #22
|
|
|
|
Create execution/brokers/ibkr_broker.py with:
|
|
- Interactive Brokers API (ib_insync)
|
|
- Futures contracts (GC, SI, ES)
|
|
- Australian equities (ASX)
|
|
- Order submission and tracking
|
|
|
|
**Acceptance Criteria:**
|
|
- Can place orders via IBKR
|
|
- Supports futures and ASX
|
|
|
|
---
|
|
|
|
### Issue 25: Paper broker - simulation mode
|
|
**Labels:** enhancement, execution, priority-high
|
|
**Depends on:** #21, #22
|
|
|
|
Create execution/brokers/paper_broker.py with:
|
|
- Simulated order execution
|
|
- Realistic fill simulation
|
|
- Position tracking
|
|
- P&L calculation
|
|
- No real money at risk
|
|
|
|
**Acceptance Criteria:**
|
|
- Full trading simulation
|
|
- Tracks positions and P&L
|
|
|
|
---
|
|
|
|
### Issue 26: Order types and manager - market, limit, stop, trailing
|
|
**Labels:** enhancement, execution, priority-high
|
|
**Depends on:** #21
|
|
|
|
Create execution/orders/:
|
|
- order_types.py - Order, OrderType, OrderStatus enums
|
|
- order_manager.py - Order lifecycle management
|
|
- Support: market, limit, stop, stop_limit, trailing_stop
|
|
|
|
**Acceptance Criteria:**
|
|
- All order types supported
|
|
- Order state machine correct
|
|
|
|
---
|
|
|
|
### Issue 27: Risk controls - position limits, loss limits
|
|
**Labels:** enhancement, execution, priority-high
|
|
**Depends on:** #4
|
|
|
|
Create execution/risk_controls/:
|
|
- position_limits.py - Max position size, concentration
|
|
- loss_limits.py - Daily loss limit, drawdown limit
|
|
- Pre-trade validation
|
|
|
|
**Acceptance Criteria:**
|
|
- Orders rejected if limits exceeded
|
|
- Clear rejection messages
|
|
|
|
---
|
|
|
|
## Phase 6: Portfolio Management
|
|
|
|
### Issue 28: Portfolio state - holdings, cash, mark-to-market
|
|
**Labels:** enhancement, portfolio, priority-high
|
|
**Depends on:** #3, #5
|
|
|
|
Create portfolio/portfolio_state.py with:
|
|
- Current holdings
|
|
- Cash balance
|
|
- Total portfolio value (mark-to-market)
|
|
- Real-time pricing
|
|
|
|
**Acceptance Criteria:**
|
|
- Accurate portfolio valuation
|
|
- Handles multiple currencies
|
|
|
|
---
|
|
|
|
### Issue 29: Position tracker - open/closed, cost basis, tax lots
|
|
**Labels:** enhancement, portfolio, priority-high
|
|
**Depends on:** #5, #28
|
|
|
|
Create portfolio/position_tracker.py with:
|
|
- Open positions with cost basis
|
|
- Closed positions with realized P&L
|
|
- Tax lot tracking (FIFO, LIFO, specific ID)
|
|
- Average cost calculation
|
|
|
|
**Acceptance Criteria:**
|
|
- Correct cost basis tracking
|
|
- Tax lot matching works
|
|
|
|
---
|
|
|
|
### Issue 30: Performance metrics - Sharpe, drawdown, returns
|
|
**Labels:** enhancement, portfolio, priority-high
|
|
**Depends on:** #28, #29
|
|
|
|
Create portfolio/performance.py with:
|
|
- Daily, monthly, yearly returns
|
|
- Sharpe ratio
|
|
- Maximum drawdown
|
|
- Win rate, profit factor
|
|
- Benchmark comparison
|
|
|
|
**Acceptance Criteria:**
|
|
- Industry-standard calculations
|
|
- Matches known benchmarks
|
|
|
|
---
|
|
|
|
### Issue 31: Australian CGT calculator - 50% discount, tax reports
|
|
**Labels:** enhancement, portfolio, priority-high
|
|
**Depends on:** #5, #29
|
|
|
|
Create portfolio/tax_calculator.py with:
|
|
- Australian CGT calculations
|
|
- 50% discount for assets held >12 months
|
|
- Tax year reports (July-June)
|
|
- Currency conversion for foreign assets
|
|
- Capital loss tracking
|
|
|
|
**Acceptance Criteria:**
|
|
- Correct CGT calculations
|
|
- Tax year correctly determined
|
|
- Report format suitable for tax return
|
|
|
|
---
|
|
|
|
## Phase 7: Simulation & Strategy
|
|
|
|
### Issue 32: Scenario runner - parallel portfolio simulations
|
|
**Labels:** enhancement, simulation, priority-high
|
|
**Depends on:** #25, #28
|
|
|
|
Create simulation/scenario_runner.py with:
|
|
- Run multiple portfolios in parallel
|
|
- Same market data, different strategies
|
|
- Paper trading infrastructure
|
|
- Result collection
|
|
|
|
**Acceptance Criteria:**
|
|
- Can run 5+ parallel simulations
|
|
- Results properly isolated
|
|
|
|
---
|
|
|
|
### Issue 33: Strategy comparator - performance comparison, stats
|
|
**Labels:** enhancement, simulation, priority-high
|
|
**Depends on:** #30, #32
|
|
|
|
Create simulation/strategy_comparator.py with:
|
|
- Compare performance across scenarios
|
|
- Statistical significance testing
|
|
- Risk-adjusted return comparison
|
|
- Ranking and scoring
|
|
|
|
**Acceptance Criteria:**
|
|
- Clear comparison output
|
|
- Statistical confidence levels
|
|
|
|
---
|
|
|
|
### Issue 34: Economic conditions - regime tagging, evaluation
|
|
**Labels:** enhancement, simulation, priority-high
|
|
**Depends on:** #7, #32
|
|
|
|
Create simulation/economic_conditions.py with:
|
|
- Tag scenarios by economic regime
|
|
- Bull/bear/sideways market detection
|
|
- Evaluate strategy performance by condition
|
|
- Regime-specific recommendations
|
|
|
|
**Acceptance Criteria:**
|
|
- Correct regime identification
|
|
- Performance breakdown by regime
|
|
|
|
---
|
|
|
|
### Issue 35: Signal to order converter
|
|
**Labels:** enhancement, strategy, priority-high
|
|
**Depends on:** #26
|
|
|
|
Create strategy/signal_to_order.py with:
|
|
- Convert BUY/SELL signals to orders
|
|
- Apply position sizing
|
|
- Set stop loss and take profit
|
|
- Order validation
|
|
|
|
**Acceptance Criteria:**
|
|
- Signals converted to valid orders
|
|
- Risk parameters applied
|
|
|
|
---
|
|
|
|
### Issue 36: Strategy executor - end-to-end orchestration
|
|
**Labels:** enhancement, strategy, priority-high
|
|
**Depends on:** #32-35
|
|
|
|
Create strategy/strategy_executor.py with:
|
|
- End-to-end orchestration
|
|
- Signal generation -> Order -> Execution
|
|
- Error handling and retries
|
|
- Logging and monitoring
|
|
|
|
**Acceptance Criteria:**
|
|
- Full trade lifecycle managed
|
|
- Robust error handling
|
|
|
|
---
|
|
|
|
## Phase 8: Alerts
|
|
|
|
### Issue 37: Alert manager - orchestration and routing
|
|
**Labels:** enhancement, alerts, priority-medium
|
|
**Depends on:** #4
|
|
|
|
Create alerts/alert_manager.py with:
|
|
- Alert orchestration
|
|
- Route to appropriate channels
|
|
- Priority levels (info, warning, critical)
|
|
- Throttling to prevent spam
|
|
|
|
**Acceptance Criteria:**
|
|
- Alerts routed correctly
|
|
- Critical alerts always delivered
|
|
|
|
---
|
|
|
|
### Issue 38: Email channel - SMTP/SendGrid
|
|
**Labels:** enhancement, alerts, priority-medium
|
|
**Depends on:** #37
|
|
|
|
Create alerts/channels/email_channel.py with:
|
|
- SMTP support
|
|
- SendGrid API support
|
|
- HTML email templates
|
|
- Delivery confirmation
|
|
|
|
**Acceptance Criteria:**
|
|
- Emails delivered reliably
|
|
- Professional formatting
|
|
|
|
---
|
|
|
|
### Issue 39: Slack channel - webhooks
|
|
**Labels:** enhancement, alerts, priority-medium
|
|
**Depends on:** #37
|
|
|
|
Create alerts/channels/slack_channel.py with:
|
|
- Slack webhook integration
|
|
- Rich message formatting
|
|
- Channel routing
|
|
|
|
**Acceptance Criteria:**
|
|
- Messages appear in Slack
|
|
- Formatting correct
|
|
|
|
---
|
|
|
|
### Issue 40: SMS channel - Twilio
|
|
**Labels:** enhancement, alerts, priority-medium
|
|
**Depends on:** #37
|
|
|
|
Create alerts/channels/sms_channel.py with:
|
|
- Twilio API integration
|
|
- SMS formatting
|
|
- Delivery status tracking
|
|
|
|
**Acceptance Criteria:**
|
|
- SMS delivered
|
|
- Critical alerts work
|
|
|
|
---
|
|
|
|
## Phase 9: Backtest
|
|
|
|
### Issue 41: Backtest engine - historical replay, slippage
|
|
**Labels:** enhancement, backtest, priority-medium
|
|
**Depends on:** #25, #28
|
|
|
|
Create backtest/backtest_engine.py with:
|
|
- Historical data replay
|
|
- Slippage modeling
|
|
- Commission modeling
|
|
- Position sizing simulation
|
|
|
|
**Acceptance Criteria:**
|
|
- Realistic backtesting
|
|
- Configurable slippage/commission
|
|
|
|
---
|
|
|
|
### Issue 42: Results analyzer - metrics, trade analysis
|
|
**Labels:** enhancement, backtest, priority-medium
|
|
**Depends on:** #30, #41
|
|
|
|
Create backtest/results_analyzer.py with:
|
|
- Performance metrics
|
|
- Trade-by-trade analysis
|
|
- Equity curve
|
|
- Drawdown analysis
|
|
|
|
**Acceptance Criteria:**
|
|
- Comprehensive analysis
|
|
- Visual outputs
|
|
|
|
---
|
|
|
|
### Issue 43: Report generator - PDF/HTML reports
|
|
**Labels:** enhancement, backtest, priority-low
|
|
**Depends on:** #42
|
|
|
|
Create backtest/report_generator.py with:
|
|
- PDF report generation
|
|
- HTML report generation
|
|
- Charts and graphs
|
|
- Summary statistics
|
|
|
|
**Acceptance Criteria:**
|
|
- Professional reports
|
|
- Exportable
|
|
|
|
---
|
|
|
|
## Phase 10: API & Docs
|
|
|
|
### Issue 44: FastAPI application setup
|
|
**Labels:** enhancement, api, priority-low
|
|
**Depends on:** #1-6
|
|
|
|
Create api/app.py with:
|
|
- FastAPI application
|
|
- CORS configuration
|
|
- Error handling
|
|
- Health check endpoint
|
|
|
|
**Acceptance Criteria:**
|
|
- API starts and responds
|
|
- Health check works
|
|
|
|
---
|
|
|
|
### Issue 45: API routes - users, portfolios, trades, signals
|
|
**Labels:** enhancement, api, priority-low
|
|
**Depends on:** #44
|
|
|
|
Create api/routes/:
|
|
- users.py - User CRUD
|
|
- portfolios.py - Portfolio CRUD
|
|
- trades.py - Trade history
|
|
- signals.py - Signal retrieval
|
|
|
|
**Acceptance Criteria:**
|
|
- All CRUD operations work
|
|
- Proper error responses
|
|
|
|
---
|
|
|
|
### Issue 46: API authentication - JWT
|
|
**Labels:** enhancement, api, priority-low
|
|
**Depends on:** #44, #45
|
|
|
|
Add JWT authentication:
|
|
- Login endpoint
|
|
- Token generation
|
|
- Token validation middleware
|
|
- Refresh tokens
|
|
|
|
**Acceptance Criteria:**
|
|
- Secure authentication
|
|
- Token refresh works
|
|
|
|
---
|
|
|
|
### Issue 47: Documentation - user guide, developer docs
|
|
**Labels:** documentation, priority-low
|
|
|
|
Create documentation:
|
|
- User guide (how to use)
|
|
- Developer guide (how to extend)
|
|
- API documentation (OpenAPI)
|
|
- Architecture overview
|
|
|
|
**Acceptance Criteria:**
|
|
- Clear documentation
|
|
- Getting started guide
|