document.addEventListener('DOMContentLoaded', function() {
// Set last update time
const now = new Date();
document.getElementById('last-update').textContent = now.toLocaleString();
// Mock data for commodity matrix
const commodities = [
{ input: "Fab construction", proxy: "Copper", symbol: "HG", risk: "High", sensitivity: "0.78" },
{ input: "Advanced packaging", proxy: "Silver", symbol: "SI", risk: "Medium", sensitivity: "0.65" },
{ input: "Power consumption", proxy: "Natural Gas", symbol: "NG", risk: "Critical", sensitivity: "0.92" },
{ input: "Cleanroom materials", proxy: "Aluminum", symbol: "AL", risk: "Low", sensitivity: "0.45" },
{ input: "Export controls", proxy: "Industrial Metals", symbol: "INDU", risk: "High", sensitivity: "0.81" },
{ input: "Wafer production", proxy: "Silicon Metal", symbol: "SI-F", risk: "Medium", sensitivity: "0.58" },
{ input: "Chip testing", proxy: "Gold", symbol: "GC", risk: "Low", sensitivity: "0.32" }
];
// Populate commodity matrix
const matrixTable = document.getElementById('commodity-matrix');
commodities.forEach(commodity => {
const row = document.createElement('tr');
row.className = 'border-b border-gray-700 hover:bg-gray-700';
row.innerHTML = `
${commodity.input} |
${commodity.proxy} |
${commodity.symbol} |
${commodity.risk}
|
|
`;
matrixTable.appendChild(row);
});
// Mock trade signals
const signals = [
{
commodity: "Copper (HG)",
direction: "Bullish",
confidence: "High",
rationale: "Capex acceleration + flat price structure",
date: "2 hours ago"
},
{
commodity: "Natural Gas (NG)",
direction: "Volatility",
confidence: "Medium",
rationale: "Rising energy stress + Taiwan power issues",
date: "1 day ago"
},
{
commodity: "Silver (SI)",
direction: "Bearish",
confidence: "Low",
rationale: "Advanced packaging demand slowing",
date: "3 days ago"
}
];
// Populate trade signals
const signalsContainer = document.getElementById('trade-signals');
signals.forEach(signal => {
const signalEl = document.createElement('div');
signalEl.className = 'bg-gray-700 p-4 rounded-lg';
signalEl.innerHTML = `
${signal.commodity} - ${signal.direction}
${signal.rationale}
${signal.confidence} confidence
${signal.date}
`;
signalsContainer.appendChild(signalEl);
});
// Update active signals count
document.getElementById('active-signals').textContent = signals.length;
// Update critical alerts count
const criticalAlerts = commodities.filter(c => c.risk === 'Critical').length;
document.getElementById('critical-alerts').textContent = criticalAlerts;
// Set market state
document.getElementById('market-state').textContent =
criticalAlerts > 2 ? 'Elevated' : criticalAlerts > 0 ? 'Watch' : 'Neutral';
if (criticalAlerts > 2) {
document.getElementById('market-state').classList.add('text-red-500');
} else if (criticalAlerts > 0) {
document.getElementById('market-state').classList.add('text-yellow-500');
} else {
document.getElementById('market-state').classList.add('text-green-500');
}
});