Executive Code: Economic Condition Analysis for all Developed Nations
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Claude-Integrated Economic Risk Assessment</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
min-height: 100vh;
padding: 20px;
}
.container {
max-width: 1400px;
margin: 0 auto;
background: white;
border-radius: 20px;
box-shadow: 0 20px 60px rgba(0,0,0,0.3);
padding: 30px;
}
h1 {
color: #2d3436;
text-align: center;
margin-bottom: 10px;
font-size: 2.5em;
}
.subtitle {
text-align: center;
color: #636e72;
margin-bottom: 30px;
font-size: 1.1em;
}
.claude-integration {
background: linear-gradient(135deg, #e3f2fd 0%, #bbdefb 100%);
border-left: 4px solid #1976d2;
padding: 20px;
margin-bottom: 30px;
border-radius: 8px;
}
.claude-integration h3 {
color: #1565c0;
margin-bottom: 15px;
}
.claude-integration p {
color: #424242;
line-height: 1.6;
margin-bottom: 10px;
}
.claude-integration code {
background: #fff;
padding: 2px 6px;
border-radius: 3px;
font-family: 'Courier New', monospace;
color: #d32f2f;
}
.data-sources {
background: #f5f5f5;
border-radius: 8px;
padding: 20px;
margin-bottom: 30px;
}
.data-sources h3 {
color: #424242;
margin-bottom: 15px;
}
.source-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 15px;
}
.source-item {
background: white;
padding: 12px;
border-radius: 6px;
border-left: 3px solid #4caf50;
}
.source-item strong {
color: #2e7d32;
display: block;
margin-bottom: 5px;
}
.source-item span {
color: #616161;
font-size: 0.9em;
}
.quick-load {
background: linear-gradient(135deg, #fff3e0 0%, #ffe0b2 100%);
border-radius: 8px;
padding: 20px;
margin-bottom: 30px;
}
.quick-load h3 {
color: #e65100;
margin-bottom: 15px;
}
.scenario-buttons {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 10px;
margin-top: 15px;
}
.scenario-btn {
background: white;
border: 2px solid #ff9800;
padding: 12px;
border-radius: 6px;
cursor: pointer;
transition: all 0.3s;
text-align: center;
font-weight: 500;
color: #e65100;
}
.scenario-btn:hover {
background: #ff9800;
color: white;
}
.results-container {
margin-top: 40px;
}
.probability-cards {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 20px;
margin-bottom: 30px;
}
.probability-card {
background: white;
border-radius: 15px;
padding: 25px;
box-shadow: 0 5px 20px rgba(0,0,0,0.1);
text-align: center;
position: relative;
overflow: hidden;
}
.probability-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 5px;
}
.recession-card::before {
background: linear-gradient(90deg, #f39c12, #e74c3c);
}
.depression-card::before {
background: linear-gradient(90deg, #c0392b, #8e44ad);
}
.stagflation-card::before {
background: linear-gradient(90deg, #e67e22, #d35400);
}
.probability-label {
font-size: 1.2em;
color: #495057;
margin-bottom: 10px;
font-weight: 600;
}
.probability-value {
font-size: 3em;
font-weight: bold;
margin-bottom: 10px;
}
.risk-level {
display: inline-block;
padding: 5px 15px;
border-radius: 20px;
font-size: 0.9em;
font-weight: 600;
text-transform: uppercase;
margin-bottom: 15px;
}
.risk-low { background: #d4edda; color: #155724; }
.risk-moderate { background: #fff3cd; color: #856404; }
.risk-high { background: #f8d7da; color: #721c24; }
.risk-very-high { background: #d1ecf1; color: #0c5460; }
.historical-comparisons {
background: linear-gradient(135deg, #fff8e1 0%, #ffe0b2 100%);
border-left: 4px solid #ff9800;
border-radius: 10px;
padding: 20px;
margin-bottom: 30px;
}
.crisis-comparison {
background: white;
border-radius: 10px;
padding: 20px;
margin-bottom: 20px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}
.crisis-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 15px;
}
.similarity-badge {
background: #ff9800;
color: white;
padding: 5px 15px;
border-radius: 20px;
font-weight: 600;
}
</style>
</head>
<body>
<div class="container">
<h1>🔮 Economic Risk Assessment Tool</h1>
<p class="subtitle">Powered by Claude AI Research & Analysis</p>
<div class="claude-integration">
<h3>🤖 How to Use with Claude</h3>
<p><strong>Simply ask Claude:</strong></p>
<p>"Assess economic conditions for [Country Name]"</p>
<p>Claude will research current economic data and provide a pre-configured analysis. Example queries:</p>
<ul style="margin-left: 20px; margin-top: 10px;">
<li>"Assess economic conditions for Germany"</li>
<li>"What's the recession risk for the United Kingdom?"</li>
<li>"Analyze Japan's economic outlook"</li>
<li>"Compare economic risks between France and Italy"</li>
</ul>
</div>
<div class="data-sources">
<h3>📊 Claude's Data Sources</h3>
<p style="color: #616161; margin-bottom: 15px;">Claude gathers data from these reliable sources:</p>
<div class="source-grid">
<div class="source-item">
<strong>FRED</strong>
<span>US Federal Reserve Economic Data</span>
</div>
<div class="source-item">
<strong>OECD</strong>
<span>International Economic Indicators</span>
</div>
<div class="source-item">
<strong>World Bank</strong>
<span>Global Development Data</span>
</div>
<div class="source-item">
<strong>IMF</strong>
<span>Global Economic Outlook</span>
</div>
<div class="source-item">
<strong>National Statistics</strong>
<span>BLS, ONS, Eurostat, etc.</span>
</div>
<div class="source-item">
<strong>Central Banks</strong>
<span>Fed, ECB, BoE Data</span>
</div>
<div class="source-item">
<strong>S&P Global</strong>
<span>PMI & Market Data</span>
</div>
<div class="source-item">
<strong>Conference Board</strong>
<span>Leading Indicators</span>
</div>
</div>
</div>
<div class="quick-load">
<h3>⚡ Quick Analysis Scenarios</h3>
<p style="color: #616161; margin-bottom: 10px;">Load pre-configured scenarios to explore the tool:</p>
<div class="scenario-buttons">
<button class="scenario-btn" onclick="loadScenario('stable')">Stable Economy</button>
<button class="scenario-btn" onclick="loadScenario('early_warning')">Early Warning Signs</button>
<button class="scenario-btn" onclick="loadScenario('recession')">Recession Conditions</button>
<button class="scenario-btn" onclick="loadScenario('stagflation')">Stagflation Risk</button>
<button class="scenario-btn" onclick="loadScenario('crisis')">Financial Crisis</button>
</div>
</div>
<div id="results" class="results-container"></div>
</div>
<script>
// Historical Crisis Database
const HISTORICAL_CRISES = {
greatDepression: {
name: "Great Depression (1929-1939)",
period: "1929-1939",
indicators: { unemployment: 25.0, gdp_growth: -26.5, stock_decline: -89, inflation: -10.0, credit_spread: 800, manufacturing_pmi: 35, consumer_confidence: 25 },
description: "The worst economic downturn in modern history. Began with the stock market crash of October 1929 and lasted throughout the 1930s.",
lessons: "Demonstrated the importance of deposit insurance, monetary policy response, and fiscal intervention."
},
oilCrisis1973: {
name: "1973 Oil Crisis & Stagflation",
period: "1973-1975",
indicators: { unemployment: 9.0, gdp_growth: -3.2, inflation: 12.3, oil_price_change: 300, manufacturing_pmi: 42, productivity: -1.0, wage_growth: 8.0 },
description: "Arab oil embargo led to quadrupling of oil prices, triggering stagflation.",
lessons: "Revealed vulnerabilities to supply shocks and limits of traditional Keynesian policy."
},
financialCrisis2008: {
name: "Great Financial Crisis (2008-2009)",
period: "2008-2009",
indicators: { unemployment: 10.0, gdp_growth: -4.3, stock_decline: -57, credit_spread: 650, banking_stress: 9.5, housing_starts: -75, consumer_confidence: 25 },
description: "Subprime mortgage collapse triggered global financial system meltdown.",
lessons: "Interconnected financial system can amplify shocks globally. Systemic risk requires systemic response."
}
};
const SCENARIOS = {
stable: {
name: "Stable Economy (Low Risk)",
data: {
unemployment: 3.5, unemployment_change: -0.1, gdp_growth: 3.0, manufacturing_pmi: 52,
inflation: 2.2, consumer_confidence: 105, yield_10y: 4.0, yield_3m: 3.5,
credit_spread: 120, productivity: 2.5, oil_price_change: 5
}
},
early_warning: {
name: "Early Warning Signs (Moderate Risk)",
data: {
unemployment: 4.2, unemployment_change: 0.3, gdp_growth: 1.5, manufacturing_pmi: 48,
inflation: 3.8, consumer_confidence: 85, yield_10y: 3.8, yield_3m: 4.2,
credit_spread: 180, productivity: 1.2, oil_price_change: 20
}
},
recession: {
name: "Recession Conditions (High Risk)",
data: {
unemployment: 6.5, unemployment_change: 0.8, gdp_growth: -1.5, manufacturing_pmi: 42,
inflation: 2.5, consumer_confidence: 68, yield_10y: 3.5, yield_3m: 4.5,
credit_spread: 280, productivity: 0.5, oil_price_change: 15
}
},
stagflation: {
name: "Stagflation Risk (High Inflation + Weak Growth)",
data: {
unemployment: 7.0, unemployment_change: 0.4, gdp_growth: 0.5, manufacturing_pmi: 45,
inflation: 8.5, consumer_confidence: 72, yield_10y: 5.0, yield_3m: 5.5,
credit_spread: 200, productivity: 0.2, oil_price_change: 65, wage_growth: 6.0
}
},
crisis: {
name: "Financial Crisis (Severe Risk)",
data: {
unemployment: 9.5, unemployment_change: 1.2, gdp_growth: -3.5, manufacturing_pmi: 38,
inflation: 1.5, consumer_confidence: 45, yield_10y: 3.0, yield_3m: 4.0,
credit_spread: 450, productivity: -0.5, oil_price_change: -20, banking_stress: 7.5
}
}
};
function loadScenario(scenarioKey) {
const scenario = SCENARIOS[scenarioKey];
const inputs = scenario.data;
const models = calculateModelSignals(inputs);
const recessionProb = calculateRecessionProbability(inputs, models);
const depressionProb = calculateDepressionProbability(inputs, models, recessionProb);
const stagflationProb = calculateStagflationProbability(inputs, models);
const comparisons = compareToHistoricalCrises(inputs);
displayResults(scenario.name, recessionProb, depressionProb, stagflationProb, models, comparisons);
}
function calculateModelSignals(inputs) {
const models = {};
models.sahm = {
name: 'Sahm Rule',
triggered: (inputs.unemployment_change || 0) >= 0.5,
signal: (inputs.unemployment_change || 0) >= 0.5 ? 'Triggered' :
(inputs.unemployment_change || 0) >= 0.3 ? 'Warning' : 'Clear'
};
const yieldSpread = (inputs.yield_10y || 4) - (inputs.yield_3m || 4);
models.yieldCurve = {
name: 'Yield Curve',
triggered: yieldSpread < 0,
signal: yieldSpread < -1 ? 'Deeply Inverted' : yieldSpread < 0 ? 'Inverted' : 'Normal'
};
models.pmi = {
name: 'Manufacturing PMI',
triggered: (inputs.manufacturing_pmi || 50) < 45,
signal: (inputs.manufacturing_pmi || 50) < 42 ? 'Deep Contraction' :
(inputs.manufacturing_pmi || 50) < 50 ? 'Contraction' : 'Expansion'
};
return models;
}
function calculateRecessionProbability(inputs, models) {
let prob = 5;
if (models.sahm.triggered) prob += 25;
if (models.yieldCurve.triggered) prob += 25;
if (models.pmi.triggered) prob += 15;
if ((inputs.consumer_confidence || 100) < 80) prob += 15;
if ((inputs.gdp_growth || 2) < 0) prob += 20;
return Math.min(prob, 95);
}
function calculateDepressionProbability(inputs, models, recessionProb) {
if (recessionProb < 50) return 0.5;
let prob = 0.5;
if ((inputs.unemployment || 4) > 10) prob += 25;
if ((inputs.gdp_growth || 0) < -5) prob += 25;
if ((inputs.credit_spread || 150) > 400) prob += 20;
return Math.min(prob, 60);
}
function calculateStagflationProbability(inputs, models) {
let prob = 2;
if ((inputs.inflation || 2) > 5) prob += 20;
if ((inputs.unemployment || 4) > 5) prob += 15;
if ((inputs.gdp_growth || 2) < 2) prob += 15;
if ((inputs.oil_price_change || 0) > 30) prob += 20;
if ((inputs.productivity || 2) < 1) prob += 15;
return Math.min(prob, 80);
}
function compareToHistoricalCrises(inputs) {
const similarities = [];
Object.values(HISTORICAL_CRISES).forEach(crisis => {
let score = 0;
let matches = [];
if (crisis.indicators.unemployment && Math.abs((inputs.unemployment || 4) - crisis.indicators.unemployment) < 3) {
score += 20;
matches.push(`Unemployment: ${(inputs.unemployment || 4).toFixed(1)}% vs ${crisis.indicators.unemployment}%`);
}
if (crisis.indicators.gdp_growth && Math.abs((inputs.gdp_growth || 2) - crisis.indicators.gdp_growth) < 2) {
score += 25;
matches.push(`GDP Growth: ${(inputs.gdp_growth || 2).toFixed(1)}% vs ${crisis.indicators.gdp_growth}%`);
}
if (crisis.indicators.inflation && Math.abs((inputs.inflation || 2) - crisis.indicators.inflation) < 3) {
score += 20;
matches.push(`Inflation: ${(inputs.inflation || 2).toFixed(1)}% vs ${crisis.indicators.inflation}%`);
}
if (score >= 30) {
similarities.push({ ...crisis, score, matches });
}
});
return similarities.sort((a, b) => b.score - a.score);
}
function displayResults(scenarioName, recession, depression, stagflation, models, comparisons) {
const container = document.getElementById('results');
let html = `<h2 style="color: #2d3436; margin-bottom: 20px;">Analysis: ${scenarioName}</h2>`;
html += '<div class="probability-cards">';
html += `
<div class="probability-card recession-card">
<div class="probability-label">Recession Risk</div>
<div class="probability-value" style="color: ${recession < 15 ? '#28a745' : recession < 30 ? '#ffc107' : recession < 50 ? '#fd7e14' : '#dc3545'}">${recession.toFixed(1)}%</div>
<div class="risk-level ${recession < 15 ? 'risk-low' : recession < 30 ? 'risk-moderate' : recession < 50 ? 'risk-high' : 'risk-very-high'}">
${recession < 15 ? 'Low Risk' : recession < 30 ? 'Moderate' : recession < 50 ? 'High Risk' : 'Very High'}
</div>
</div>
<div class="probability-card depression-card">
<div class="probability-label">Depression Risk</div>
<div class="probability-value" style="color: ${depression < 5 ? '#28a745' : '#ffc107'}">${depression.toFixed(1)}%</div>
<div class="risk-level ${depression < 5 ? 'risk-low' : 'risk-moderate'}">
${depression < 5 ? 'Low Risk' : 'Moderate'}
</div>
</div>
<div class="probability-card stagflation-card">
<div class="probability-label">Stagflation Risk</div>
<div class="probability-value" style="color: ${stagflation < 15 ? '#28a745' : stagflation < 30 ? '#ffc107' : '#fd7e14'}">${stagflation.toFixed(1)}%</div>
<div class="risk-level ${stagflation < 15 ? 'risk-low' : stagflation < 30 ? 'risk-moderate' : 'risk-high'}">
${stagflation < 15 ? 'Low Risk' : stagflation < 30 ? 'Moderate' : 'High Risk'}
</div>
</div>
`;
html += '</div>';
if (comparisons.length > 0) {
html += '<div class="historical-comparisons"><h3>Historical Parallels</h3>';
comparisons.forEach(comp => {
html += `
<div class="crisis-comparison">
<div class="crisis-header">
<strong>${comp.name}</strong>
<span class="similarity-badge">${comp.score}% Match</span>
</div>
<div style="margin: 10px 0;">
${comp.matches.map(m => `<div style="color: #616161; font-size: 0.9em;">• ${m}</div>`).join('')}
</div>
<div style="background: #f5f5f5; padding: 10px; border-radius: 5px; margin-top: 10px;">
<strong>Lesson:</strong> ${comp.lessons}
</div>
</div>
`;
});
html += '</div>';
}
container.innerHTML = html;
}
// Auto-load stable scenario on page load
window.addEventListener('load', () => {
loadScenario('stable');
});
</script>
</body>
</html>