Rust Trading Development
SKILL.md
Skill: Rust Trading Development
When to use this skill
- Adding or modifying trading strategies
- Modifying the RiskManager or order validation
- Financial calculations (prices, quantities, P&L)
- Working with technical indicators
Templates available
| Template | Usage |
|---|---|
| (none yet) | Add trading-specific templates as needed |
Critical rules
Monetary precision (MANDATORY)
// ❌ FORBIDDEN
let price: f64 = 123.45;
let total = price * quantity;
// ✅ CORRECT
use rust_decimal::Decimal;
let price = Decimal::from_str("123.45").unwrap();
let total = price * quantity;
Why: Rounding errors in f64 can cause real financial losses.
Risk management
Every new strategy MUST respect the flow:
Analyst (generates TradeProposal)
→ RiskManager (validates)
→ Executor (executes if approved)
The RiskManager applies the validation chain:
- BuyingPowerValidator
- CircuitBreakerValidator
- PDTValidator
- PositionSizeValidator
- SectorCorrelationValidator
- SentimentValidator
Mandatory tests
For any trading feature:
- Unit tests for each technical indicator
- Integration tests for complete flows
- Backtests on historical data (if applicable)
Key files
| Path | Content |
|---|---|
src/domain/trading/ |
Trading entities (Order, Position, Trade) |
src/domain/risk/ |
Risk management, validators |
src/application/strategies/ |
Trading strategies |
src/application/analyst.rs |
Analyst agent |
src/application/risk_manager.rs |
RiskManager service |
Available technical indicators
The project uses the ta crate for indicators:
- SMA, EMA (moving averages)
- RSI (Relative Strength Index)
- MACD (Moving Average Convergence Divergence)
- Bollinger Bands
- ADX (Average Directional Index)
- ATR (Average True Range)
Example: Adding a new strategy
- Create the file in
src/application/strategies/ - Implement the
Strategytrait - Add the mode to
StrategyModeenum - Register in
StrategyFactory - Add tests
- Document in
docs/STRATEGIES.md