Alternative Investment Strategy Builder
No Strategy Generated
Complete the input tabs to build your alternative investment strategy.
Choose the asset classes to include in your portfolio.
For: ${investorName} (${risk.charAt(0).toUpperCase() + risk.slice(1)} Profile, ${horizon.charAt(0).toUpperCase() + horizon.slice(1)}-Term Horizon)
${chartHtml} `; initialMessage.classList.add('hidden'); resultsContainer.classList.remove('hidden'); pdfButtonContainer.classList.remove('hidden'); }; downloadPdfBtn.addEventListener('click', () => { if (!lastStrategyData) return; const { jsPDF } = window.jspdf; const { investorName, horizon, risk, allocation } = lastStrategyData; const doc = new jsPDF({ orientation: 'p', unit: 'pt', format: 'a4' }); const pageW = doc.internal.pageSize.getWidth(); const margin = 50; let y = 0; // PDF Header doc.setFillColor('#fefce8'); // yellow-50 doc.rect(0, 0, pageW, 70, 'F'); doc.setFont('helvetica', 'bold'); doc.setFontSize(22); doc.setTextColor('#713f12'); // yellow-900 doc.text('Alternative Investment Strategy Brief', margin, 45); y = 100; // Investor Profile Section doc.setFont('helvetica', 'bold'); doc.setFontSize(14); doc.setTextColor('#1f2937'); doc.text('Investor Profile Summary', margin, y); y += 20; const profileBody = [ ['Investor/Fund Name', investorName], ['Risk Appetite', risk.charAt(0).toUpperCase() + risk.slice(1)], ['Investment Horizon', `${horizon.charAt(0).toUpperCase() + horizon.slice(1)}-Term`], ]; doc.autoTable({ startY: y, head: [['Profile Attribute', 'Specification']], body: profileBody, theme: 'grid', headStyles: { fillColor: '#ca8a04' }, }); y = doc.autoTable.previous.finalY + 30; // Allocation Section doc.setFont('helvetica', 'bold'); doc.setFontSize(14); doc.setTextColor('#1f2937'); doc.text('Recommended Strategic Allocation', margin, y); y += 25; // Allocation Chart const chartX = margin + 150; const chartWidth = pageW - margin - chartX - 20; const barHeight = 18; for (const [asset, percent] of Object.entries(allocation)) { doc.setFontSize(10); doc.setTextColor('#374151'); doc.text(asset, margin, y + barHeight / 2 + 4); doc.setFillColor('#f3f4f6'); doc.rect(chartX, y, chartWidth, barHeight, 'F'); const barLength = (percent / 100) * chartWidth; doc.setFillColor(ASSET_CLASSES[asset].pdfColor); doc.rect(chartX, y, barLength, barHeight, 'F'); doc.setFontSize(9); doc.setTextColor('#ffffff'); doc.text(`${percent.toFixed(1)}%`, chartX + 5, y + barHeight / 2 + 3); y += barHeight + 10; } // Footer const date = `Strategy Generated: ${new Date().toLocaleDateString('en-US')}`; doc.setFontSize(9); doc.setTextColor('#9ca3af'); doc.text(date, pageW / 2, doc.internal.pageSize.getHeight() - 20, { align: 'center' }); doc.save(`Alternative_Strategy_${investorName.replace(/\s/g, '_')}.pdf`); }); showTab(0); });