@railpath/finance-toolkit
Version:
Production-ready finance library for portfolio construction, risk analytics, quantitative metrics, and ML-based regime detection
43 lines (42 loc) • 1.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.calculateVaR = calculateVaR;
const VaROptionsSchema_1 = require("../schemas/VaROptionsSchema");
const calculateHistoricalVaR_1 = require("./calculateHistoricalVaR");
const calculateMonteCarloVaR_1 = require("./calculateMonteCarloVaR");
const calculateParametricVaR_1 = require("./calculateParametricVaR");
/**
* Calculate Value at Risk using historical method
*
* @param returns - Array of historical returns (e.g., daily returns)
* @param options - VaR calculation options
* @returns VaR result with value and metadata
*
* @example
* ```typescript
* const returns = [-0.02, 0.01, -0.015, 0.03, -0.01];
* const var95 = calculateVaR(returns, { confidenceLevel: 0.95 });
* console.log(`95% VaR: ${var95.value}`);
* ```
*/
function calculateVaR(returns, options) {
// Parse und validiere mit Zod (füllt Defaults!)
const validated = VaROptionsSchema_1.VaROptionsSchema.parse(options);
const { confidenceLevel, method, simulations } = validated;
if (returns.length === 0) {
throw new Error('Returns array cannot be empty');
}
if (confidenceLevel <= 0 || confidenceLevel >= 1) {
throw new Error('Confidence level must be between 0 and 1');
}
switch (method) {
case 'historical':
return (0, calculateHistoricalVaR_1.calculateHistoricalVaR)(returns, confidenceLevel);
case 'parametric':
return (0, calculateParametricVaR_1.calculateParametricVaR)(returns, confidenceLevel);
case 'monteCarlo':
return (0, calculateMonteCarloVaR_1.calculateMonteCarloVaR)(returns, confidenceLevel, simulations);
default:
throw new Error(`Unknown VaR method: ${method}`);
}
}