Fine Art Investment - Key Factors Checklist

Fine Art Investment - Key Factors Checklist

This tool helps you document and consider key factors for art investment. It provides a qualitative score, NOT a monetary valuation. Expert appraisal is essential for actual valuation.

  • 1. Artist & Artwork
  • 2. Provenance & Market
  • 3. Your Notes & Acquisition
  • 4. Assessment Summary

Artist & Artwork Details

Provenance, Authenticity & Market Factors




Your Personal Notes & Acquisition Details (Optional)

₹

Assessment Summary

Provenance Strength: ${inputs.provenanceStrengthText || 'N/A'}

Market Demand: ${inputs.marketDemandText || 'N/A'}

Liquidity Perception: ${inputs.liquidityNotes || 'N/A'}

Authenticity Docs Checked: ${inputs.authCert ? 'Cert. of Auth., ' : ''} ${inputs.authInvoice ? 'Invoice, ' : ''} ${inputs.authExpert ? 'Expert Opinion, ' : ''} ${inputs.authCatalogue ? 'Catalogue Raisonné' : ''} ${!(inputs.authCert || inputs.authInvoice || inputs.authExpert || inputs.authCatalogue) ? 'None specified' : ''}

${inputs.purchasePrice !== null ? `

Your Acquisition Price: ${formatCurrencyFA(inputs.purchasePrice)} on ${inputs.purchaseDate || 'N/A'}

` : ''} `; } const factorScoreEl = document.getElementById('factorScoreFA'); const scoreCategoryEl = document.getElementById('scoreCategoryFA'); const scoreDescriptionEl = document.getElementById('scoreDescriptionFA'); const summaryOutputEl = document.getElementById('faSummaryOutput'); const downloadBtnEl = document.getElementById('downloadPdfButtonFA'); if(factorScoreEl) factorScoreEl.textContent = `${totalScore} / ${scorableFieldsFA.length * 4}`; if(scoreCategoryEl) scoreCategoryEl.textContent = scoreCategory; if(scoreDescriptionEl) scoreDescriptionEl.textContent = scoreDescription; if(summaryOutputEl) summaryOutputEl.style.display = 'block'; if(downloadBtnEl) downloadBtnEl.style.display = 'inline-block'; faPdfData = { inputs, assessment: { totalScore, scoreCategory, scoreDescription } }; } function openTabFA(evt, tabName) { const currentActiveTabEl = document.querySelector('.fa-tabs li.active'); if (evt && currentActiveTabEl) { const currentTabContentId = currentActiveTabEl.id.replace('Link', 'Content'); if (!validateFATabInputs(currentTabContentId)) { // Basic validation on leaving tab // return; // Optional: prevent navigation } } let i, tabcontent, tablinks; tabcontent = document.getElementsByClassName("fa-tab-content"); for (i = 0; i < tabcontent.length; i++) { if(tabcontent[i]) tabcontent[i].style.display = "none"; } const tabList = document.querySelector(".fa-tabs"); if (!tabList) { console.error("Tab list '.fa-tabs' not found."); return; } tablinks = tabList.getElementsByTagName("li"); for (i = 0; i < tablinks.length; i++) { if(tablinks[i]) tablinks[i].className = tablinks[i].className.replace(" active", ""); } const currentTabContentEl = document.getElementById(tabName); const tabLinkId = "tabLink" + tabName.replace('tabContent',''); const currentTabLinkEl = document.getElementById(tabLinkId); if(currentTabContentEl) currentTabContentEl.style.display = "block"; if(currentTabLinkEl) currentTabLinkEl.className += " active"; if (tabName === 'tabContentSummaryFA') { generateAssessmentFA(); } } function navigateToTabFA(tabName) { const currentActiveTab = document.querySelector('.fa-tabs li.active'); if (currentActiveTab) { const currentTabContentId = currentActiveTab.id.replace('Link', 'Content'); if (!validateFATabInputs(currentTabContentId)) { // Basic validation on leaving tab // return; } } let tabLinkId = "tabLink" + tabName.replace('tabContent',''); const tabLinkElement = document.getElementById(tabLinkId); if (tabLinkElement) { openTabFA({currentTarget: tabLinkElement}, tabName); } } function generatePdfFA() { if (typeof jsPDF === 'undefined' || typeof jsPDF.API === 'undefined' || typeof jsPDF.API.autoTable === 'undefined') { alert("PDF generation library not loaded. Check internet connection."); return; } if (Object.keys(faPdfData).length === 0 || !faPdfData.inputs || !faPdfData.assessment || !faPdfData.assessment.scoreCategory) { alert("Please generate the assessment summary first."); return; } const doc = new jsPDF(); const today = new Date(); const dateStr = `${today.getFullYear()}-${(today.getMonth() + 1).toString().padStart(2, '0')}-${today.getDate().toString().padStart(2, '0')}`; let currentY = 15; const pageMargin = 14; const lineSpacing = 6; // Smaller line spacing for PDF const sectionSpacing = 8; const contentWidth = doc.internal.pageSize.getWidth() - (2 * pageMargin); doc.setFontSize(16); doc.text("Fine Art Investment - Factors Checklist Report", pageMargin, currentY, {align: 'center', maxWidth: contentWidth}); currentY += 8; doc.setFontSize(10); doc.text(`Report Date: ${dateStr}`, pageMargin, currentY); currentY += 7; doc.text("This report summarizes user-inputted factors and a qualitative assessment.", pageMargin, currentY); currentY += sectionSpacing; const { inputs, assessment } = faPdfData; const addSectionToPdf = (title, dataArray) => { if (currentY > 250) { doc.addPage(); currentY = 20; } doc.setFontSize(12); doc.setFont(undefined, 'bold'); doc.text(title, pageMargin, currentY); currentY += lineSpacing + 1; doc.setFontSize(10); doc.setFont(undefined, 'normal'); dataArray.forEach(item => { if (item.value && item.value.toString().trim() !== '' && item.value.toString() !== 'N/A' && item.value.toString() !== '0' && item.value.toString() !== 'false') { if (currentY > 275) { doc.addPage(); currentY = 20; } const labelLines = doc.splitTextToSize(`${item.label}: `, contentWidth * 0.4); let valueText = item.value.toString(); if (item.label.includes("Price") && typeof item.value === 'number') valueText = formatCurrencyFA(item.value); const valueLines = doc.splitTextToSize(valueText, contentWidth * 0.6); doc.text(labelLines, pageMargin + 2, currentY); doc.text(valueLines, pageMargin + 2 + (contentWidth * 0.4) + 5, currentY); // Indent value currentY += (Math.max(labelLines.length, valueLines.length) * (lineSpacing -1) ) + 2; } }); currentY += sectionSpacing / 2; }; addSectionToPdf("Artist & Artwork Details", [ {label: "Artist Name", value: inputs.artistName}, {label: "Artist Reputation", value: inputs.artistReputationText}, {label: "Artwork Title", value: inputs.artworkTitle}, {label: "Medium", value: inputs.artworkMedium}, {label: "Dimensions", value: inputs.artworkDimensions}, {label: "Year of Creation", value: inputs.artworkYear}, {label: "Condition", value: inputs.artworkConditionText}, {label: "Rarity/Uniqueness", value: inputs.artworkRarityText}, {label: "Artwork Notes", value: inputs.artworkNotes} ]); let authDocs = []; if(inputs.authCert) authDocs.push("Certificate of Authenticity"); if(inputs.authInvoice) authDocs.push("Original Invoice"); if(inputs.authExpert) authDocs.push("Expert Opinion"); if(inputs.authCatalogue) authDocs.push("Catalogue Raisonné"); addSectionToPdf("Provenance, Authenticity & Market Factors", [ {label: "Provenance Strength", value: inputs.provenanceStrengthText}, {label: "Authenticity Docs", value: authDocs.length > 0 ? authDocs.join(', ') : "None specified"}, {label: "Provenance Notes", value: inputs.provenanceNotes}, {label: "Exhibition/Publication History", value: inputs.exhibitionHistory}, {label: "Market Demand", value: inputs.marketDemandText}, {label: "Perceived Liquidity", value: getSelectedTextFA('liquidityNotesFA')}, // Get text for select {label: "Comparable Sales Notes", value: inputs.comparableSalesNotes} ]); if (inputs.purchasePrice !== null || inputs.purchaseDate || inputs.userGeneralNotes) { addSectionToPdf("Your Notes & Acquisition Details", [ {label: "General Notes/Thesis", value: inputs.userGeneralNotes}, {label: "Acquisition Price", value: inputs.purchasePrice !== null ? formatCurrencyFA(inputs.purchasePrice) : "N/A"}, {label: "Acquisition Date", value: inputs.purchaseDate} ]); } if (currentY > 240) { doc.addPage(); currentY = 20; } doc.setFontSize(13); doc.setFont(undefined, 'bold'); doc.text("Qualitative Assessment Summary:", pageMargin, currentY); currentY += lineSpacing + 2; doc.setFontSize(11); doc.text(`Factor Score: ${assessment.totalScore} / ${scorableFieldsFA.length * 4}`, pageMargin + 2, currentY); currentY += lineSpacing; doc.setFont(undefined, 'bold'); doc.text(`Assessment Category: ${assessment.scoreCategory}`, pageMargin + 2, currentY); currentY += lineSpacing + 1; doc.setFont(undefined, 'normal'); doc.setFontSize(10); const descLines = doc.splitTextToSize(assessment.scoreDescription, contentWidth - 4); // Small indent for desc doc.text(descLines, pageMargin + 2, currentY); doc.save(`Fine_Art_Factors_Checklist_${dateStr}.pdf`); }
Scroll to Top