AI-Inspired Portfolio Allocation Suggester

This tool uses a rule-based approach to suggest a sample asset allocation based on your investor profile. It is NOT financial advice.

Tell Us About Yourself

Suggested Portfolio Allocation

Please complete your investor profile on the first tab and click "Get My Suggested Allocation".

Important Disclaimer:
  • This suggested allocation is generated by a simplified rule-based system based on your questionnaire answers. It is **NOT personalized financial advice** and does not consider your complete financial situation, specific circumstances, existing investments, tax status, or future income/expenses.
  • The asset classes presented are broad categories. The specific investments within these classes (e.g., which stocks, bonds, or funds) carry their own unique risks and potential returns.
  • This tool does not use any predictive AI or machine learning models for market forecasting or dynamic optimization.
  • Portfolio allocations should be reviewed regularly and adjusted based on changes in your financial situation, goals, and market conditions.
  • All investments involve risk, including the possible loss of principal. Past performance is not indicative of future results.
It is strongly recommended to consult with a qualified and independent financial advisor before making any investment decisions.

Time Horizon: ${inputs.timeHorizon}

Risk Tolerance: ${inputs.riskTolerance}

Investment Knowledge: ${inputs.knowledge}

Liquidity Need: ${inputs.liquidityNeed}

`; let allocationTableHtml = `Asset ClassSuggested Allocation (%) Domestic Stocks${suggestion.allocation.domesticStocks}% International Stocks${suggestion.allocation.internationalStocks}% Bonds${suggestion.allocation.bonds}% Cash / Cash Equivalents${suggestion.allocation.cash}% ${suggestion.allocation.alternatives > 0 ? `Alternatives${suggestion.allocation.alternatives}%` : ''} `; let rationaleHtml = `
    ${suggestion.rationale.map(r => `
  • ${r.replace(/|<\/strong>/g, "")}
  • `).join('')}
`; // Basic tag stripping for PDF const disclaimer_pdf = `This suggested allocation is generated by a simplified rule-based system based on your questionnaire answers. It is NOT personalized financial advice and does not consider your complete financial situation. The asset classes are broad categories. All investments involve risk. Consult a qualified financial advisor.`; pdfContentEl.innerHTML = `
AI-Inspired Portfolio Allocation Suggestion
Your Investor Profile Summary
${inputsHtml}
Suggested Portfolio: ${suggestion.portfolioName}
${allocationTableHtml}
Rationale for Suggestion
${rationaleHtml}
Important Disclaimer: ${disclaimer_pdf}
`; document.body.appendChild(pdfContentEl); html2canvas(pdfContentEl, { scale: 2, useCORS: true, logging:true, windowWidth: pdfContentEl.scrollWidth, windowHeight: pdfContentEl.scrollHeight }).then(canvas => { const imgData = canvas.toDataURL('image/png'); const pdfWidth = pdf.internal.pageSize.getWidth(); const pdfHeight = pdf.internal.pageSize.getHeight(); let numPages = Math.ceil(canvas.height / ( (pdfHeight - 40) * (canvas.width / (pdfWidth - 40)) ) ); let pageCanvasHeight = (pdfHeight - 40) * (canvas.width / (pdfWidth - 40)); for (let i = 0; i < numPages; i++) { if (i > 0) pdf.addPage(); let sourceY = i * pageCanvasHeight; let sourceHeight = Math.min(pageCanvasHeight, canvas.height - sourceY); const tempCanvas = document.createElement('canvas'); tempCanvas.width = canvas.width; tempCanvas.height = sourceHeight; const ctx = tempCanvas.getContext('2d'); ctx.drawImage(canvas, 0, sourceY, canvas.width, sourceHeight, 0, 0, canvas.width, sourceHeight); const pageImgData = tempCanvas.toDataURL('image/png'); const pageImgHeight = (sourceHeight * (pdfWidth - 40)) / canvas.width; pdf.addImage(pageImgData, 'PNG', 20, 20, pdfWidth - 40, pageImgHeight, undefined, 'FAST'); } pdf.save('Portfolio_Allocation_Suggestion.pdf'); if(document.body.contains(pdfContentEl)) document.body.removeChild(pdfContentEl); }).catch(err => { console.error("AIP PDF Error:", err); alert("Error generating PDF. See console."); if(document.body.contains(pdfContentEl)) document.body.removeChild(pdfContentEl); }); } document.addEventListener('DOMContentLoaded', function() { aip_openTab({}, 'aip_tab_profile'); if (!document.getElementById('aip_goal')) { console.error("Critical input 'aip_goal' not found."); } });
Scroll to Top