Dual Momentum Strategy Illustrator
Manually input past returns to see a simplified dual momentum allocation decision.
** VERY IMPORTANT - PLEASE READ **
- This tool is for educational and illustrative purposes ONLY. It demonstrates a simplified strategy based on YOUR manually entered data.
- It does **NOT** use live or historical market data, perform backtesting, or provide investment advice.
- Past performance is not indicative of future results. Momentum strategies can underperform and have specific risks.
- The asset names and return figures are for you to define based on your research for a particular lookback period.
- Always consult with a qualified financial advisor before making any investment decisions.
Input Data (for your chosen lookback period, e.g., last 12 months)
Asset Definitions
Returns Data (for the lookback period described above)
%
%
%
Dual Momentum Strategy Decision
Relative Momentum Check (Equities chosen):
${primaryName} Return (${this.formatPercent(primaryReturn)})
vs. ${alternativeName} Return (${this.formatPercent(alternativeReturn)})
Result: Invest in ${relativeMomentumPrimaryWins ? primaryName : alternativeName}
Strategy Suggests Allocating To:
${decisionAsset}
`; this.elements.rationaleDisplay.innerHTML = rationaleHtml; this.elements.resultsSection.style.display = 'block'; }, generatePDF: async function() { if (!window.jspdf || !window.html2canvas || Object.keys(this.resultsData).length === 0) { alert('Please determine the allocation first to generate a PDF.'); return; } await new Promise(resolve => setTimeout(resolve, 50)); const i = this.resultsData.inputs; const d = this.resultsData.decision; // Rationale for PDF needs to be plain text or simple HTML, not directly from DOM if complex CSS let pdfRationale = `Absolute Momentum: ${i.primaryName} (${this.formatPercent(i.primaryReturn)}) vs. Risk-Free (${this.formatPercent(i.riskFreeReturn)}) -> ${(i.primaryReturn > i.riskFreeReturn) ? 'PASS' : 'FAIL'}. `; if (i.primaryReturn > i.riskFreeReturn) { pdfRationale += `Relative Momentum: ${i.primaryName} (${this.formatPercent(i.primaryReturn)}) vs. ${i.alternativeName} (${this.formatPercent(i.alternativeReturn)}) -> Invest in ${(i.primaryReturn > i.alternativeReturn) ? i.primaryName : i.alternativeName}.`; } else { pdfRationale += `Result: Switch to ${i.safeName}.`; } const pdfExportContainer = document.createElement('div'); pdfExportContainer.classList.add('dm-pdf-export-content'); pdfExportContainer.style.width = '800px'; let pdfHtml = `Dual Momentum Strategy Analysis
`; pdfHtml += `Disclaimer: Illustrative, educational tool. Based on manual inputs. NOT investment advice. Consult professionals.
`;
pdfHtml += `Inputs Summary
`;
pdfHtml += `
`; pdfHtml += `
`;
pdfHtml += `Lookback Period: ${i.lookbackPeriodDesc || 'N/A'}
`;
pdfHtml += `Primary Risky Asset: ${i.primaryName}
`;
pdfHtml += `Alternative Risky Asset: ${i.alternativeName}
`;
pdfHtml += `Safe/Defensive Asset: ${i.safeName}
`;
pdfHtml += ``; pdfHtml += `
Return of ${i.primaryName}: ${this.formatPercent(i.primaryReturn).replace(' %','')}
`;
pdfHtml += `Return of ${i.alternativeName}: ${this.formatPercent(i.alternativeReturn).replace(' %','')}
`;
pdfHtml += `Return of Risk-Free Asset: ${this.formatPercent(i.riskFreeReturn).replace(' %','')}
`;
pdfHtml += `Strategy Decision
`; pdfHtml += `Allocate to: ${d}
`;
pdfHtml += `Rationale
${pdfRationale.replace(/
/g, ' ')}
