UNPKG

@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
"use strict"; 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}`); } }