@railpath/finance-toolkit
Version:
Production-ready finance library for portfolio construction, risk analytics, quantitative metrics, and ML-based regime detection
22 lines (21 loc) • 998 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.calculateMonteCarloVaR = calculateMonteCarloVaR;
const calculateHistoricalVaR_1 = require("./calculateHistoricalVaR");
/**
* Monte Carlo VaR - Simulates future returns
*/
function calculateMonteCarloVaR(returns, confidenceLevel, simulations) {
const mean = returns.reduce((sum, val) => sum + val, 0) / returns.length;
const variance = returns.reduce((sum, val) => sum + Math.pow(val - mean, 2), 0) / (returns.length - 1);
const stdDev = Math.sqrt(variance);
// Generate simulated returns using Box-Muller transform
const simulatedReturns = [];
for (let i = 0; i < simulations; i++) {
const u1 = Math.random();
const u2 = Math.random();
const z = Math.sqrt(-2 * Math.log(u1)) * Math.cos(2 * Math.PI * u2);
simulatedReturns.push(mean + z * stdDev);
}
return (0, calculateHistoricalVaR_1.calculateHistoricalVaR)(simulatedReturns, confidenceLevel);
}