Emotional Decision-Making Impact Simulator

Emotional Decision-Making Impact Simulator

Understand how emotional biases can impact your investment outcomes.

Emotions in Financial Decision-Making

Behavioral finance studies the psychological influences on economic decision-making. Emotions and cognitive biases often lead individuals to make irrational financial choices, deviating from optimal strategies. This simulator explores the hypothetical impact of such biases.

Common Emotional Biases:

  • Fear Of Missing Out (FOMO): The anxiety that an exciting or interesting event may currently be happening elsewhere, often leading to impulsive buying in rising markets.
  • Loss Aversion: The tendency to prefer avoiding losses to acquiring equivalent gains; people are more sensitive to losses than to gains, leading to holding onto losing positions too long or panic selling.
  • Overconfidence Bias: An unwarranted faith in one's intuitive reasoning, judgments, or cognitive abilities, leading to excessive trading or taking on too much risk.
  • Anchoring Bias: The tendency to rely too heavily on the first piece of information offered (the "anchor") when making decisions.
  • Confirmation Bias: The tendency to search for, interpret, favor, and recall information in a way that confirms one's preexisting beliefs or hypotheses.

This simulator will highlight the potential financial consequences of FOMO and Loss Aversion, contrasting them with a disciplined investment approach.

Setup Your Simulation Scenario

Configure the market environment and the behavioral tendencies of two hypothetical investors: one emotional, one disciplined.

Market Parameters:

e.g., 0.5 for 0.5% growth per month.

Random fluctuations around the average return.

Emotional Investor Parameters:

Buys impulsively if price rises this much in a month.

Panic sells if price drops this much in a month.

Chance (in %) an emotional action is taken when triggered.

Disciplined Investor Parameters:

The likelihood they stick to their plan regardless of market swings.

Simulation in Progress

Click "Start Simulation" on the previous tab to begin.

0% Complete

Live Capital Tracking (Last 5 Months)

Month Market Value ($) Emotional Investor ($) Disciplined Investor ($) Emotional Action
No data yet. Run simulation.

Simulation Results & Key Insights

Initial Investment:

$0.00

Final Market Value (Buy & Hold):

$0.00

Emotional Investor Final Capital:

$0.00

Disciplined Investor Final Capital:

$0.00

Insights from Simulation:

Run the simulation to see insights here.

Over the ${simulationResults.periods} months, a simple buy-and-hold strategy in this market scenario would have yielded a final value of ${formatCurrency(finalMarketData.marketValue)}.

`; if (finalMarketData.emotionalCapital < finalMarketData.marketValue) { insightsHtml += `

The Emotional Investor finished with ${formatCurrency(finalMarketData.emotionalCapital)}, losing ${formatCurrency(Math.abs(emotionalDiff))} compared to a disciplined buy-and-hold approach due to emotional decisions.

`; } else { insightsHtml += `

The Emotional Investor finished with ${formatCurrency(finalMarketData.emotionalCapital)}, surprisingly performing ${formatCurrency(emotionalDiff)} better than buy-and-hold. This might occur in highly specific scenarios, but generally, emotional decisions lead to underperformance.

`; } if (finalMarketData.disciplinedCapital >= finalMarketData.marketValue * (simulationResults.disciplinedAdherence / 100) ) { // Check if disciplined performed close to market insightsHtml += `

The Disciplined Investor finished with ${formatCurrency(finalMarketData.disciplinedCapital)}, very closely tracking or outperforming the market's buy-and-hold value, demonstrating the benefit of consistent adherence.

`; } else { insightsHtml += `

The Disciplined Investor finished with ${formatCurrency(finalMarketData.disciplinedCapital)}. Even with high adherence, market volatility and small deviations can impact returns.

`; } insightsHtml += `

Key Takeaways:

`; insightsHtml += `
    `; if (emotionalDiff < -100) { // Significant underperformance insightsHtml += `
  • Emotional Cost: This simulation highlights how frequently reacting to market swings (FOMO and Loss Aversion) can significantly erode your investment capital over time.
  • `; } insightsHtml += `
  • Power of Discipline: Consistently sticking to a predefined investment plan, even through volatile periods, generally leads to better long-term outcomes than reactive emotional trading.
  • `; insightsHtml += `
  • Avoid Market Timing: Trying to perfectly time market entries and exits based on short-term movements, especially when driven by emotion, is often detrimental.
  • `; insightsHtml += `
`; edsInsights.innerHTML = insightsHtml; } // --- Event Listeners --- // Tab navigation tabButtons.forEach((button, index) => { if (button) { button.addEventListener('click', function() { if (!simulationRunning) { updateActiveTab(index); } else { showMessageBox("Please wait for the simulation to complete before changing tabs."); } }); } }); if (nextButton) { nextButton.addEventListener('click', function() { if (!simulationRunning && currentTabIndex < tabButtons.length - 1) { updateActiveTab(currentTabIndex + 1); } else if (simulationRunning) { showMessageBox("Please wait for the simulation to complete before navigating."); } }); } if (prevButton) { prevButton.addEventListener('click', function() { if (!simulationRunning && currentTabIndex > 0) { updateActiveTab(currentTabIndex - 1); } else if (simulationRunning) { showMessageBox("Please wait for the simulation to complete before navigating."); } }); } // Start Simulation Button if (startSimulationButton) { startSimulationButton.addEventListener('click', function() { // Input validation const initialInvestment = parseFloat(initialInvestmentInput.value); const simulationPeriods = parseInt(simulationPeriodsInput.value); const avgMonthlyReturn = parseFloat(avgMonthlyReturnInput.value); const monthlyVolatility = parseFloat(monthlyVolatilityInput.value); const fomoTrigger = parseFloat(fomoTriggerInput.value); const lossAversionTrigger = parseFloat(lossAversionTriggerInput.value); const emotionalTradingFrequency = parseFloat(emotionalTradingFrequencyInput.value); const disciplinedAdherence = parseFloat(disciplinedAdherenceInput.value); if (isNaN(initialInvestment) || initialInvestment <= 0 || isNaN(simulationPeriods) || simulationPeriods < 1 || isNaN(avgMonthlyReturn) || isNaN(monthlyVolatility) || monthlyVolatility < 0 || isNaN(fomoTrigger) || fomoTrigger < 0 || isNaN(lossAversionTrigger) || lossAversionTrigger < 0 || isNaN(emotionalTradingFrequency) || emotionalTradingFrequency < 0 || emotionalTradingFrequency > 100 || isNaN(disciplinedAdherence) || disciplinedAdherence < 0 || disciplinedAdherence > 100) { showMessageBox("Please ensure all input fields have valid numerical values. Percentages should be between 0 and 100."); return; } updateActiveTab(2); // Go to Simulation tab runSimulation(); }); } // PDF Download Button if (downloadPdfButton) { downloadPdfButton.addEventListener('click', async function() { if (!simulationResults.history || simulationResults.history.length === 0) { showMessageBox("Please run the simulation first to generate a report."); return; } const pdfContentContainer = document.createElement('div'); pdfContentContainer.style.padding = '20px'; pdfContentContainer.style.backgroundColor = '#ffffff'; pdfContentContainer.style.fontFamily = 'Inter, sans-serif'; pdfContentContainer.style.fontSize = '12px'; // PDF Title const pdfTitle = document.createElement('h1'); pdfTitle.textContent = "Emotional Decision-Making Impact Simulation Report"; pdfTitle.style.textAlign = 'center'; pdfTitle.style.fontSize = '24px'; pdfTitle.style.marginBottom = '20px'; pdfTitle.style.color = '#1f2937'; pdfContentContainer.appendChild(pdfTitle); // Simulation Summary const finalData = simulationResults.history[simulationResults.history.length - 1]; const summaryHtml = `

Simulation Summary

Initial Investment${formatCurrency(simulationResults.initialInvestment)}
Simulation Duration${simulationResults.periods} Months
Final Market Value (Buy & Hold)${formatCurrency(finalData.marketValue)}
Emotional Investor Final Capital${formatCurrency(finalData.emotionalCapital)}
Disciplined Investor Final Capital${formatCurrency(finalData.disciplinedCapital)}
`; pdfContentContainer.insertAdjacentHTML('beforeend', summaryHtml); // Simulation Parameters const paramsHtml = `

Simulation Parameters

Avg Monthly Market Return${simulationResults.avgMonthlyReturn}%
Monthly Volatility${simulationResults.monthlyVolatility}%
FOMO Trigger${simulationResults.fomoTrigger}% Price Jump
Loss Aversion Trigger${simulationResults.lossAversionTrigger}% Price Drop
Emotional Trading Frequency${simulationResults.emotionalTradingFrequency}%
Disciplined Adherence${simulationResults.disciplinedAdherence}%
`; pdfContentContainer.insertAdjacentHTML('beforeend', paramsHtml); // Detailed History const historyHtml = `

Detailed Simulation History (Every 10th Month)

For brevity, showing data for every 10th month and the final month.

${simulationResults.history.filter((data, index) => index % 10 === 0 || index === simulationResults.history.length - 1) .map(data => ` `).join('')}
Month Market Value ($) Emotional Investor ($) Disciplined Investor ($) Emotional Action
${data.month} ${formatCurrency(data.marketValue)} ${formatCurrency(data.emotionalCapital)} ${formatCurrency(data.disciplinedCapital)} ${data.emotionalAction}
`; pdfContentContainer.insertAdjacentHTML('beforeend', historyHtml); // Insights const insightsHeading = document.createElement('h2'); insightsHeading.style.fontSize = '20px'; insightsHeading.style.fontWeight = '600'; insightsHeading.style.marginTop = '20px'; insightsHeading.style.marginBottom = '10px'; insightsHeading.style.color = '#374151'; insightsHeading.textContent = 'Key Insights:'; pdfContentContainer.appendChild(insightsHeading); pdfContentContainer.appendChild(edsInsights.cloneNode(true)); // Clone the insights div pdfContentContainer.style.position = 'absolute'; pdfContentContainer.style.left = '-9999px'; document.body.appendChild(pdfContentContainer); try { const canvas = await html2canvas(pdfContentContainer, { scale: 1.5, useCORS: true, windowWidth: pdfContentContainer.scrollWidth, windowHeight: pdfContentContainer.scrollHeight }); const imgData = canvas.toDataURL('image/jpeg', 0.8); const { jsPDF } = window.jspdf; const pdf = new jsPDF('p', 'mm', 'a4'); const imgWidth = 210; const pageHeight = 297; const imgHeight = canvas.height * imgWidth / canvas.width; let heightLeft = imgHeight; let position = 0; pdf.addImage(imgData, 'JPEG', 0, position, imgWidth, imgHeight, null, 'MEDIUM'); heightLeft -= pageHeight; while (heightLeft >= 0) { position = heightLeft - imgHeight; pdf.addPage(); pdf.addImage(imgData, 'JPEG', 0, position, imgWidth, imgHeight, null, 'MEDIUM'); heightLeft -= pageHeight; } pdf.save('Emotional_Decision_Impact_Report.pdf'); } catch (error) { console.error('Error generating PDF:', error); showMessageBox('Error generating PDF. Please ensure your browser supports canvas rendering and try again.'); } finally { if (pdfContentContainer.parentNode) { pdfContentContainer.parentNode.removeChild(pdfContentContainer); } } }); } // Close message box event listener if (messageBoxCloseButton) { messageBoxCloseButton.addEventListener('click', hideMessageBox); } // --- Initialization --- updateActiveTab(0); // Initialize the first tab as active on load });
Scroll to Top