45 lines
1.3 KiB
TypeScript
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();
|