REIT vs. Direct Real Estate Investment Comparison
Investment Comparison Results
CRITICAL NOTES & DISCLAIMERS:
- ILLUSTRATIVE ESTIMATES ONLY: This calculator provides simplified financial projections based on your inputs and assumptions. Actual market conditions, returns, expenses, and tax implications can vary significantly.
- SIMPLIFIED TAXES: Tax calculations (homeowner deductions, REIT dividend taxes) are highly simplified and do not account for individual circumstances, income thresholds, phase-outs, SALT caps, or changes in tax law. They are for broad illustration only.
- AVERAGE RATES ASSUMED: Investment returns, inflation, appreciation, and rent increases are modeled as constant annual averages. Real-world performance is volatile. Sequence of returns risk is not modeled.
- NON-FINANCIAL FACTORS: This tool focuses on financial metrics and does not quantify non-financial aspects like lifestyle preferences, landlord responsibilities, liquidity needs, diversification benefits, or personal satisfaction.
- NOT FINANCIAL ADVICE: This tool is for informational and educational purposes only. It does NOT constitute investment, financial, legal, or tax advice. You MUST consult with qualified professionals before making any investment decisions.
Cumulative Net Cash Flow (Rent - All Costs + Tax Savings): ${formatCurrency(cumulativeNetCashFlowDirectRE)}
Est. Net Financial Position Change: ${formatCurrency(finalNetPositionDirectRE)}
(Net Equity from Sale + Cum. Net Cash Flow - Purchase Closing Costs)`; reitResultsEl.innerHTML = `REIT Investment
Initial Investment: ${formatCurrency(reitInitialInvestment)}
Future Value of REITs (Pre-tax, Est.): ${formatCurrency(futureValueOfReits)}
Total Dividends Received (Pre-tax, Est.): ${formatCurrency(totalDividendsReceivedPreTax)}
Est. Tax on Dividends (Simplified): -${formatCurrency(estimatedTotalDividendTax)}
Est. Net Financial Position Change (Pre-Capital Gains Tax): ${formatCurrency(futureValueOfReits - reitInitialInvestment - estimatedTotalDividendTax)}
(Future Value - Initial Investment - Est. Dividend Tax. Capital gains tax on sale not included.)`; let conclusionHTML = ""; const reitOutcome = futureValueOfReits - reitInitialInvestment - estimatedTotalDividendTax; if (finalNetPositionDirectRE > reitOutcome) { conclusionHTML = `Based on these assumptions, Direct Real Estate appears to result in a better estimated net financial position by approximately ${formatCurrency(finalNetPositionDirectRE - reitOutcome)} after ${periodYears} years.`; } else if (reitOutcome > finalNetPositionDirectRE) { conclusionHTML = `Based on these assumptions, REIT Investment appears to result in a better estimated net financial position by approximately ${formatCurrency(reitOutcome - finalNetPositionDirectRE)} after ${periodYears} years.`; } else { conclusionHTML = `Based on these assumptions, both scenarios result in a similar estimated financial position after ${periodYears} years.`; } overallConclusionEl.innerHTML = conclusionHTML; notesContainerEl.style.display = 'block'; downloadPdfBtn.style.display = 'block'; } function formatCurrency(value) { return `$${(value || 0).toLocaleString(undefined, {minimumFractionDigits:0, maximumFractionDigits:0})}`; } // --- PDF Download --- downloadPdfBtn?.addEventListener('click', function () { const { jsPDF } = window.jspdf; const pdfOutputArea = document.getElementById('rdrPdfOutputArea'); if (!pdfOutputArea || overallConclusionEl.innerHTML === "" || overallConclusionEl.innerHTML.includes("Please run the comparison")) { alert('Please run the comparison first before downloading PDF.'); return; } document.getElementById('rdrNotesContainer').style.display = 'block'; // Ensure notes are visible document.getElementById('rdrInputSummaryForPdf').style.display = 'block'; html2canvas(pdfOutputArea, { scale: 1.2, useCORS: true, backgroundColor: '#ffffff', windowWidth: pdfOutputArea.scrollWidth }) .then(canvas => { const imgData = canvas.toDataURL('image/jpeg', 0.85); const pdf = new jsPDF({ orientation: 'portrait', unit: 'pt', format: 'a4' }); // Portrait for better readability of text const pdfWidth = pdf.internal.pageSize.getWidth(); const pdfHeight = pdf.internal.pageSize.getHeight(); const margin = 30; let contentWidth = pdfWidth - 2 * margin; const canvasWidth = canvas.width; const canvasHeight = canvas.height; const ratio = canvasWidth / canvasHeight; let imgWidth = contentWidth; let imgHeight = imgWidth / ratio; if (imgHeight > pdfHeight - 2 * margin) { imgHeight = pdfHeight - 2 * margin; // Fit to height imgWidth = imgHeight * ratio; if (imgWidth > contentWidth) { // If it became too wide imgWidth = contentWidth; imgHeight = imgWidth / ratio; } } const x = (pdfWidth - imgWidth) / 2; pdf.addImage(imgData, 'JPEG', x, margin, imgWidth, imgHeight, undefined, 'MEDIUM'); pdf.save('REIT_vs_Direct_RealEstate_Comparison.pdf'); }) .catch(err => { console.error("Error generating PDF:", err); alert("Error generating PDF. See console for details."); }); }); function escapeHtml(unsafe) { if (typeof unsafe !== 'string') return unsafe === undefined || unsafe === null ? '' : String(unsafe); return unsafe.replace(/&/g, "&").replace(//g, ">").replace(/"/g, """).replace(/'/g, "'"); } switchTab('generalTab'); });