Market Liquidity Shock Resilience Model

Market Liquidity Shock Resilience Model

Assess your portfolio's ability to withstand a sudden liquidity crisis.

Portfolio Composition

Ticker Shares Price ($) Avg. Daily Vol. ($)

Liquidity Shock Scenario

%
%
x

${formatCurrency(postShockMetrics.value)}

AI Resilience Score

${score} / 100

AI-Powered Recommendation

${recommendation}

Impact Analysis Chart

Detailed Asset Breakdown

${postShockMetrics.positions.map(p => ` `).join('')}
Ticker Post-Shock Value Est. Liquidation Cost Est. Days to Liquidate
${p.ticker} ${formatCurrency(p.value)} ${formatCurrency(p.liquidationCost)} ${p.timeToLiquidate.toFixed(1)} days
TOTALS ${formatCurrency(postShockMetrics.value)} ${formatCurrency(postShockMetrics.liquidationCost)} ${postShockMetrics.timeToLiquidate.toFixed(1)} days
`; renderImpactChart(results); } function renderImpactChart(results) { const ctx = document.getElementById('impactChart')?.getContext('2d'); if (!ctx) return; if (chartInstance) chartInstance.destroy(); const { preShockMetrics, postShockMetrics } = results; const finalValue = postShockMetrics.value - postShockMetrics.liquidationCost; chartInstance = new Chart(ctx, { type: 'bar', data: { labels: ['Portfolio Value'], datasets: [ { label: 'Pre-Shock Value', data: [preShockMetrics.value], backgroundColor: '#6b7280', // gray-500 borderColor: '#4b5563', borderWidth: 1 }, { label: 'Post-Shock Value (Before Costs)', data: [postShockMetrics.value], backgroundColor: '#fca5a5', // red-300 borderColor: '#ef4444', borderWidth: 1 }, { label: 'Post-Shock Value (After Costs)', data: [finalValue], backgroundColor: '#93c5fd', // blue-300 borderColor: '#3b82f6', borderWidth: 1 } ] }, options: { responsive: true, maintainAspectRatio: false, scales: { y: { beginAtZero: true, ticks: { callback: value => '$' + value.toLocaleString() } } }, plugins: { title: { display: true, text: 'Portfolio Value Before and After Liquidity Shock' }, tooltip: { callbacks: { label: c => `${c.dataset.label}: $${c.raw.toLocaleString()}`}} } } }); } // --- PDF Download --- function downloadPDF() { const pdfElement = document.getElementById('pdf-output'); if (!pdfElement) return alert("Could not find content to download."); const originalBg = pdfElement.style.backgroundColor; pdfElement.style.backgroundColor = 'white'; const { jsPDF } = window.jspdf; html2canvas(pdfElement, { scale: 2, useCORS: true, backgroundColor: '#ffffff' }) .then(canvas => { pdfElement.style.backgroundColor = originalBg; const imgData = canvas.toDataURL('image/png'); const pdf = new jsPDF({ orientation: 'p', unit: 'px', format: [canvas.width, canvas.height] }); pdf.addImage(imgData, 'PNG', 0, 0, canvas.width, canvas.height); pdf.save('Market-Liquidity-Resilience-Report.pdf'); }).catch(err => { pdfElement.style.backgroundColor = originalBg; console.error("PDF Generation Error:", err); alert("An error occurred while generating the PDF."); }); }
Scroll to Top