UNPKG

monte-carlo-simulator

Version:

Business decision framework with Monte Carlo risk analysis - instant via npx

97 lines (92 loc) 3.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.globalARRInjector = exports.ARRBusinessContextInjector = void 0; /** * Handles ARR-based business context injection for strategic simulations * Provides standard business intelligence functions without industry-specific logic */ class ARRBusinessContextInjector { /** * Check if parameters already include ARR */ hasARRParameter(parameterKeys) { return parameterKeys.includes('annualRecurringRevenue'); } /** * Get ARR parameter definition for strategic simulations */ getARRParameterDefinition(category = 'Strategic Investment') { return { key: 'annualRecurringRevenue', label: 'Annual Recurring Revenue (ARR)', type: 'number', default: 5000000, min: 100000, max: 1000000000, step: 50000, description: `Company's annual recurring revenue for ${category} investment planning` }; } /** * Get parameter group for ARR context */ getARRParameterGroup() { return { name: 'Business Context', description: 'Company financial context for strategic decision-making', parameters: ['annualRecurringRevenue', 'budgetPercent'] }; } /** * Generate business context injection code */ getBusinessContextInjectionCode(parameterKeys) { const hasARR = this.hasARRParameter(parameterKeys); if (!hasARR) { return `// No business context injection - ARR not provided`; } return ` // Business Context Injection const arrBudget = annualRecurringRevenue * (budgetPercent || 10) / 100 const monthlyBudget = arrBudget / 12 const quarterlyBudget = arrBudget / 4 // Business Intelligence Functions const calculateROI = (investment, returns, timeframe = 1) => { if (investment <= 0) return 0 return ((returns - investment) / investment) * 100 / timeframe } const calculatePaybackPeriod = (investment, monthlyReturns) => { if (monthlyReturns <= 0) return 999 return investment / monthlyReturns } const calculateRunway = (currentCash, monthlyBurnRate) => { if (monthlyBurnRate <= 0) return 999 return currentCash / monthlyBurnRate } const calculateNPV = (cashFlows, discountRate) => { return cashFlows.reduce((npv, cashFlow, year) => { return npv + cashFlow / Math.pow(1 + discountRate, year) }, 0) } const calculateCAC = (marketingSpend, customersAcquired) => { if (customersAcquired <= 0) return 0 return marketingSpend / customersAcquired } `; } /** * Create business context for a strategic simulation */ createBusinessContext(arr, budgetPercent = 10) { const arrBudget = arr * (budgetPercent / 100); return { arrBudget, monthlyBudget: arrBudget / 12, quarterlyBudget: arrBudget / 4 }; } } exports.ARRBusinessContextInjector = ARRBusinessContextInjector; // Global instance for easy access exports.globalARRInjector = new ARRBusinessContextInjector(); //# sourceMappingURL=ARRBusinessContext.js.map