Currency Correlation Tool

Input Price Data

Enter numerical price data only, one value per line. Ensure both series have the same number of data points for the same periods.

Must match the number of data points and correspond to the same time periods as Data Series 1.

${escapeHtml(message)}

`; resultsContainer.style.display = 'block'; } function escapeHtml(unsafe) { if (unsafe === null || typeof unsafe === 'undefined') return ''; return unsafe.toString() .replace(/&/g, "&").replace(//g, ">") .replace(/"/g, """).replace(/'/g, "'"); } if (calculateButton) { calculateButton.addEventListener('click', function() { const series1Name = pair1NameInput.value.trim() || "Asset 1"; const series2Name = pair2NameInput.value.trim() || "Asset 2"; const data1 = parseData(data1Input.value); const data2 = parseData(data2Input.value); resultsOutput.innerHTML = ''; // Clear previous results/errors if (data1.length === 0 || data2.length === 0) { displayError("Please enter valid numerical data for both series."); return; } if (data1.length !== data2.length) { displayError(`Data series must have the same number of data points. Series 1 has ${data1.length}, Series 2 has ${data2.length}.`); return; } if (data1.length < 2) { displayError("Please enter at least 2 data points for each series to calculate correlation."); return; } const result = calculatePearsonCorrelation(data1, data2); if (result.error) { displayError(result.error); } else { const interpretation = getCorrelationInterpretation(result.coefficient); resultsOutput.innerHTML = `
Correlation between: ${escapeHtml(series1Name)} and ${escapeHtml(series2Name)}
Pearson Correlation Coefficient (r): ${result.coefficient.toFixed(4)}
Number of Data Points: ${result.points}
Interpretation: ${escapeHtml(interpretation)}
`; resultsContainer.style.display = 'block'; // Save to localStorage (simple implementation) try { localStorage.setItem('cct_lastData', JSON.stringify({ name1: series1Name, data1Str: data1Input.value, name2: series2Name, data2Str: data2Input.value, resultHtml: resultsOutput.innerHTML })); } catch(e) { console.warn("Could not save data to localStorage:", e); } } }); } // Load from localStorage try { const lastData = JSON.parse(localStorage.getItem('cct_lastData')); if (lastData) { pair1NameInput.value = lastData.name1 || ''; data1Input.value = lastData.data1Str || ''; pair2NameInput.value = lastData.name2 || ''; data2Input.value = lastData.data2Str || ''; if (lastData.resultHtml) { resultsOutput.innerHTML = lastData.resultHtml; // Note: This re-renders HTML, be cautious if complex interactivity was there resultsContainer.style.display = 'block'; } } } catch (e) { console.warn("Could not load data from localStorage:", e); } if (pdfButton) { pdfButton.addEventListener('click', function() { if (resultsContainer.style.display === 'none' || resultsOutput.innerHTML.trim() === '' || resultsOutput.querySelector('.cct-error-message')) { alert("Please calculate a valid correlation first before downloading PDF."); return; } window.print(); }); } // Basic null checks for primary elements const criticalElements = [pair1NameInput, data1Input, pair2NameInput, data2Input, calculateButton, resultsContainer, resultsOutput, pdfButton]; if (criticalElements.some(el => !el)) { console.error("CurrencyCorrelationTool: One or more critical HTML elements are missing."); const appDiv = document.getElementById('currencyCorrelationToolApp'); if(appDiv) appDiv.innerHTML = "

Error: Tool initialization failed. Required elements not found.

"; } });
Scroll to Top