/** * Risk management configuration for trading operations */ import { getNumericEnvVar, validateConfig, createConfigLoader } from './core'; import { riskConfigSchema, RiskConfig } from './types'; /** * Default risk configuration */ const defaultRiskConfig: RiskConfig = { maxDrawdown: 0.05, maxPositionSize: 0.1, maxLeverage: 1, stopLossDefault: 0.02, takeProfitDefault: 0.05 }; /** * Load risk configuration from environment variables */ export function loadRiskConfig(): RiskConfig { const config: RiskConfig = { maxDrawdown: getNumericEnvVar('RISK_MAX_DRAWDOWN', defaultRiskConfig.maxDrawdown), maxPositionSize: getNumericEnvVar('RISK_MAX_POSITION_SIZE', defaultRiskConfig.maxPositionSize), maxLeverage: getNumericEnvVar('RISK_MAX_LEVERAGE', defaultRiskConfig.maxLeverage), stopLossDefault: getNumericEnvVar('RISK_STOP_LOSS_DEFAULT', defaultRiskConfig.stopLossDefault), takeProfitDefault: getNumericEnvVar('RISK_TAKE_PROFIT_DEFAULT', defaultRiskConfig.takeProfitDefault) }; return validateConfig(config, riskConfigSchema); } /** * Creates a dynamic configuration loader for risk management */ export const createRiskConfig = createConfigLoader( 'risk', riskConfigSchema, defaultRiskConfig ); /** * Singleton risk configuration */ export const riskConfig = loadRiskConfig();