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 Strategy trait
-
Add the mode to StrategyMode enum
-
Register in StrategyFactory
-
Add tests
-
Document in docs/STRATEGIES.md