stock-bot/libs/config/src/risk.ts
2025-06-03 12:33:08 -04:00

45 lines
1.3 KiB
TypeScript

/**
* 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<typeof defaultRiskConfig>(
'risk',
riskConfigSchema,
defaultRiskConfig
);
/**
* Singleton risk configuration
*/
export const riskConfig = loadRiskConfig();