Implements IRisk
ClientRisk implementation for portfolio-level risk management.
Provides risk checking logic to prevent signals that violate configured limits:
Multiple ClientStrategy instances share the same ClientRisk instance, allowing cross-strategy risk analysis.
Used internally by strategy execution to validate signals before opening positions.
constructor(params: IRiskParams);
params: IRiskParams
_activePositions: RiskMap | unique symbol
Map of active positions tracked across all strategies.
Key: ${strategyName}:${exchangeName}:${symbol}
Starts as POSITION_NEED_FETCH symbol, gets initialized on first use.
waitForInit: any
Initializes active positions by loading from persistence. Uses singleshot pattern to ensure initialization happens exactly once. Skips persistence in backtest mode.
_updatePositions: any
Persists current active positions to disk.
checkSignal: (params: IRiskCheckArgs) => Promise<boolean>
Checks if a signal should be allowed based on risk limits.
Executes custom validations with access to:
Returns false immediately if any validation throws error. Triggers callbacks (onRejected, onAllowed) based on result.
addSignal(symbol: string, context: {
strategyName: string;
riskName: string;
}): Promise<void>;
Registers a new opened signal. Called by StrategyConnectionService after signal is opened.
removeSignal(symbol: string, context: {
strategyName: string;
riskName: string;
}): Promise<void>;
Removes a closed signal. Called by StrategyConnectionService when signal is closed.