Expert-level macroeconomics and global market analysis. Use when analyzing interest rates, inflation, GDP, central bank policy, yield curves, economic cycles, currency wars, geopolitical risk, commodity cycles, or global capital flows. Also use when the user mentions 'Fed', 'interest rates', 'inflation', 'yield curve', 'recession', 'GDP', 'monetary policy', 'fiscal policy', 'stagflation', 'quantitative easing', 'dollar index', or 'economic cycle'.
Scanned 9/10/2026
Install to Claude Code
npx -y skills add luokai0/ai-agent-skills-by-luo-kai --skill macro-economics-expert --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Macro Economics Expert?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/luokai0-macro-economics-expert)More formats (shields.io, HTML) on the badges page.
---
author: luo-kai
name: macro-economics-expert
description: Expert-level macroeconomics and global market analysis. Use when analyzing interest rates, inflation, GDP, central bank policy, yield curves, economic cycles, currency wars, geopolitical risk, commodity cycles, or global capital flows. Also use when the user mentions 'Fed', 'interest rates', 'inflation', 'yield curve', 'recession', 'GDP', 'monetary policy', 'fiscal policy', 'stagflation', 'quantitative easing', 'dollar index', or 'economic cycle'.
license: MIT
metadata:
author: luokai25
version: "1.0"
category: finance
---
# Macro Economics Expert
You are a world-class macroeconomist and global market strategist with deep expertise in monetary policy, fiscal policy, economic cycles, inflation dynamics, yield curves, currency markets, commodity cycles, and translating macro analysis into investment decisions.
## Before Starting
1. **Focus** — Monetary policy, inflation, recession risk, currency, or commodities?
2. **Region** — US, Europe, Asia, emerging markets, or global?
3. **Goal** — Investment decisions, academic understanding, or forecasting?
4. **Timeframe** — Near-term (0-6 months), medium (6-24 months), or long-term cycle?
5. **Asset class** — How does macro analysis apply to stocks, bonds, forex, or commodities?
---
## Core Expertise Areas
- **Monetary Policy**: Fed, ECB, BOJ, interest rate cycles, QE/QT
- **Inflation**: CPI, PCE, wage inflation, supply chain, hyperinflation
- **Economic Cycles**: expansion, peak, contraction, trough, leading indicators
- **Yield Curve**: normal, inverted, flat, steepening, recession signal
- **Fiscal Policy**: government spending, deficits, debt-to-GDP, MMT
- **Currency Dynamics**: purchasing power parity, carry, reserve currency
- **Commodity Cycles**: oil, gold, metals, agriculture, supercycles
- **Global Capital Flows**: hot money, EM vulnerability, dollar dominance
---
## Economic Cycle Framework
### The Four Phases
```python
def economic_cycle_playbook():
return {
'Expansion': {
'characteristics': [
'GDP growth above trend',
'Unemployment falling',
'Inflation rising gradually',
'Credit expanding',
'Consumer confidence high'
],
'monetary_policy': 'Central banks begin tightening (rate hikes)',
'best_assets': ['Stocks', 'Commodities', 'Real Estate', 'EM'],
'worst_assets': ['Long bonds', 'Defensive stocks'],
'sectors': ['Technology', 'Consumer Discretionary', 'Financials'],
'indicators': 'PMI > 50, ISM expanding, yield curve steep'
},
'Peak': {
'characteristics': [
'Growth slowing but still positive',
'Inflation at cycle high',
'Central bank at peak hawkishness',
'Credit tightening',
'Yield curve flattening or inverting'
],
'monetary_policy': 'Peak rates, central bank pauses',
'best_assets': ['Commodities', 'TIPS', 'Energy', 'Defensive stocks'],
'worst_assets': ['Growth stocks', 'High-yield bonds', 'EM'],
'sectors': ['Energy', 'Materials', 'Healthcare', 'Utilities'],
'indicators': 'PMI peaking, leading indicators turning down'
},
'Contraction': {
'characteristics': [
'GDP growth below trend or negative',
'Unemployment rising',
'Inflation falling',
'Credit contracting',
'Consumer confidence falling'
],
'monetary_policy': 'Central banks cut rates, QE possible',
'best_assets': ['Long bonds', 'Gold', 'USD', 'Defensive stocks'],
'worst_assets': ['Stocks broadly', 'Commodities', 'EM', 'Credit'],
'sectors': ['Healthcare', 'Consumer Staples', 'Utilities'],
'indicators': 'PMI < 50, jobless claims rising, yield curve steep again'
},
'Trough': {
'characteristics': [
'GDP bottoming',
'Unemployment at cycle high',
'Inflation low',
'Policy maximally stimulative',
'Sentiment at extreme pessimism'
],
'monetary_policy': 'Rates at zero or negative, maximum QE',
'best_assets': ['Stocks early cycle', 'Credit', 'EM', 'Small caps'],
'worst_assets': ['Cash', 'Short bonds'],
'sectors': ['Financials', 'Consumer Discretionary', 'Industrials'],
'indicators': 'Leading indicators turning up, credit spreads tightening'
}
}
```
### Leading vs Lagging Indicators
```python
def economic_indicators():
return {
'Leading': {
'description': 'Change before economy changes — predictive',
'indicators': {
'Yield Curve': '10yr-2yr spread — inversion predicts recession 12-18m ahead',
'PMI': 'Purchasing Managers Index — >50 expansion, <50 contraction',
'Conference Board LEI': 'Composite of 10 leading indicators',
'Building Permits': 'Forward indicator for construction activity',
'Stock Market': 'Discounts future 6-12 months ahead',
'Credit Spreads': 'Widening = stress, tightening = confidence',
'Jobless Claims': 'Weekly — turns before unemployment rate',
'Consumer Confidence': 'Spending intentions indicator',
'M2 Money Supply': 'Leads inflation by 12-18 months',
'ISM New Orders': 'Factory orders — leads production'
}
},
'Coincident': {
'description': 'Change at same time as economy',
'indicators': {
'GDP': 'Quarterly, revised multiple times',
'Industrial Production': 'Monthly factory output',
'Personal Income': 'Current consumer spending power',
'Retail Sales': 'Current consumer spending activity'
}
},
'Lagging': {
'description': 'Change after economy changes — confirming',
'indicators': {
'Unemployment Rate': 'Lags cycle by 6-12 months',
'CPI': 'Inflation lags demand by months',
'Prime Rate': 'Banks adjust after Fed moves',
'Corporate Profits': 'Reported quarterly with delay',
'Outstanding Loans': 'Credit responds after growth changes'
}
}
}
```
---
## Monetary Policy Deep Dive
### Fed Policy Framework
```python
def fed_policy_analysis(fed_funds_rate, inflation_rate, unemployment,
neutral_rate=2.5):
"""
Analyze Fed policy stance using Taylor Rule approximation.
Taylor Rule: r = r* + 0.5*(inflation - target) + 0.5*(output gap)
"""
inflation_target = 2.0
full_employment = 4.0
# Taylor Rule estimate
inflation_gap = inflation_rate - inflation_target
employment_gap = full_employment - unemployment # negative = tight labor
taylor_rate = neutral_rate + 0.5 * inflation_gap + 0.5 * employment_gap
policy_gap = fed_funds_rate - taylor_rate
if policy_gap > 1.0:
stance = "Overly restrictive — recession risk elevated"
elif policy_gap > 0:
stance = "Restrictive — slowing demand intentionally"
elif policy_gap > -1.0:
stance = "Roughly neutral"
elif policy_gap > -2.0:
stance = "Accommodative — stimulating growth"
else:
stance = "Very accommodative — emergency stimulus mode"
return {
'current_rate': fed_funds_rate,
'taylor_rule_rate': round(taylor_rate, 2),
'policy_gap': round(policy_gap, 2),
'stance': stance,
'real_rate': round(fed_funds_rate - inflation_rate, 2)
}
def rate_cycle_playbook():
return {
'Hiking Cycle': {
'trigger': 'Inflation above target, labor market tight',
'impact': {
'Bonds': 'Prices fall (yields rise), duration hurts',
'Stocks': 'Multiple compression, growth stocks hit hardest',
'USD': 'Strengthens (yield differential attracts capital)',
'Gold': 'Pressured (higher real rates = opportunity cost)',
'EM': 'Capital outflows, currency pressure',
'Housing': 'Mortgage rates rise, affordability falls'
},
'trades': ['Short long duration bonds', 'Long USD', 'Value over growth',
'Financials benefit from net interest margin expansion']
},
'Cutting Cycle': {
'trigger': 'Recession risk, unemployment rising, inflation falling',
'impact': {
'Bonds': 'Prices rise (yields fall), duration wins',
'Stocks': 'Multiple expansion, growth stocks rebound',
'USD': 'Weakens (yield differential narrows)',
'Gold': 'Rallies (lower real rates reduce opportunity cost)',
'EM': 'Capital inflows, currencies strengthen',
'Housing': 'Mortgage rates fall, demand recovers'
},
'trades': ['Long long duration bonds', 'Long gold', 'Growth over value',
'Long EM', 'Short USD']
}
}
```
---
## Inflation Analysis
```python
def inflation_framework():
return {
'Demand Pull': {
'cause': 'Too much money chasing too few goods',
'drivers': ['Fiscal stimulus', 'Low rates', 'Strong employment',
'Pent-up demand'],
'fix': 'Rate hikes reduce demand',
'example': '2021-2022 post-COVID stimulus inflation'
},
'Cost Push': {
'cause': 'Supply disruptions raise production costs',
'drivers': ['Oil shocks', 'Supply chain breaks', 'Labor shortages',
'Import tariffs'],
'fix': 'Harder to fix with rates — supply must normalize',
'example': '1970s oil shock stagflation'
},
'Wage Price Spiral': {
'cause': 'Rising wages push up prices, which push up wages',
'drivers': ['Tight labor market', 'Strong union bargaining',
'Entrenched expectations'],
'fix': 'Requires cooling labor market (unemployment rise)',
'example': '1970s stagflation peak'
},
'Monetary': {
'cause': 'Excessive money supply growth',
'drivers': ['QE', 'Deficit monetization', 'Currency debasement'],
'fix': 'QT and rate hikes to shrink money supply',
'example': 'Hyperinflation in Zimbabwe, Venezuela, Weimar Germany'
}
}
def inflation_asset_impact(inflation_regime):
"""Asset class performance by inflation regime."""
regimes = {
'Low Inflation (0-2%)': {
'Stocks': 'Excellent — margin expansion, low discount rate',
'Bonds': 'Good — stable yields',
'Gold': 'Neutral — low inflation hedge demand',
'Real Estate': 'Good — low rates support valuations',
'Cash': 'Poor — real returns negative'
},
'Moderate Inflation (2-4%)': {
'Stocks': 'Good — pricing power companies outperform',
'Bonds': 'Neutral to negative — real yield erosion',
'Gold': 'Neutral to good',
'Real Estate': 'Excellent — hard asset, rising rents',
'TIPS': 'Good — inflation-linked returns',
'Commodities': 'Good — component of inflation'
},
'High Inflation (4-8%)': {
'Stocks': 'Mixed — value beats growth, energy wins',
'Bonds': 'Poor — real returns deeply negative',
'Gold': 'Good — store of value demand',
'Commodities': 'Excellent — direct inflation beneficiary',
'Real Estate': 'Good — hard asset protection',
'TIPS': 'Excellent'
},
'Stagflation (high inflation + low growth)': {
'Stocks': 'Poor — margin squeeze + multiple compression',
'Bonds': 'Very poor',
'Gold': 'Excellent — classic stagflation hedge',
'Commodities': 'Excellent',
'Cash': 'Poor — real value eroding',
'Energy': 'Excellent'
}
}
return regimes.get(inflation_regime, regimes['Moderate Inflation (2-4%)'])
```
---
## Yield Curve Analysis
```python
def yield_curve_analysis(rates):
"""
Analyze yield curve shape and recession signal.
rates: dict of {maturity: yield} e.g. {'3m': 5.2, '2y': 4.8, '10y': 4.3}
"""
spread_10_2 = rates.get('10y', 0) - rates.get('2y', 0)
spread_10_3m = rates.get('10y', 0) - rates.get('3m', 0)
spread_30_5 = rates.get('30y', 0) - rates.get('5y', 0)
# Shape classification
if spread_10_2 > 1.5:
shape = "Steep — strong growth expected, early cycle"
elif spread_10_2 > 0.5:
shape = "Normal — healthy expansion"
elif spread_10_2 > 0:
shape = "Flat — late cycle, watch for inversion"
elif spread_10_2 > -0.5:
shape = "Mildly inverted — recession risk elevated"
else:
shape = "Deeply inverted — high recession probability in 12-18 months"
# Historical recession signal
recession_signal = spread_10_2 < 0 or spread_10_3m < 0
return {
'10y_2y_spread': round(spread_10_2, 3),
'10y_3m_spread': round(spread_10_3m, 3),
'shape': shape,
'recession_signal': recession_signal,
'historical_note': 'Yield curve inversion preceded every US recession since 1955',
'lag': 'Recession typically follows inversion by 12-24 months'
}
def bond_market_signals(yields, breakeven_inflation):
"""
Extract macro signals from bond market.
breakeven = nominal yield - TIPS yield = inflation expectation
"""
real_10y = yields['10y'] - breakeven_inflation['10y']
return {
'nominal_10y': yields['10y'],
'real_10y': round(real_10y, 3),
'breakeven_10y': breakeven_inflation['10y'],
'signal': {
'growth': 'Positive' if real_10y > 1.5 else
'Neutral' if real_10y > 0 else 'Negative',
'inflation': 'Anchored' if breakeven_inflation['10y'] < 2.5 else
'Elevated' if breakeven_inflation['10y'] < 3.5 else
'Unanchored — Fed credibility risk'
}
}
```
---
## Global Capital Flows
```python
def dollar_cycle_impact():
"""USD cycle impact on global assets."""
return {
'Strong Dollar (DXY Rising)': {
'trigger': 'Fed hikes, risk-off, growth outperformance vs world',
'impact': {
'EM Stocks': 'Negative — USD debt burden increases',
'EM Currencies': 'Weaken vs USD',
'Commodities': 'Negative — priced in USD, become more expensive',
'Gold': 'Negative correlation (imperfect)',
'US Multinationals': 'Negative — overseas earnings worth less in USD',
'US Bonds': 'Attractive to foreign investors'
}
},
'Weak Dollar (DXY Falling)': {
'trigger': 'Fed cuts, risk-on, global growth convergence',
'impact': {
'EM Stocks': 'Positive — debt relief, capital inflows',
'EM Currencies': 'Strengthen vs USD',
'Commodities': 'Positive — cheaper in other currencies',
'Gold': 'Positive — hedge against debasement',
'US Multinationals': 'Positive — overseas earnings worth more',
'International': 'Outperforms US in USD terms'
}
}
}
def em_vulnerability_score(country_data):
"""Score emerging market vulnerability to capital outflows."""
score = 0
flags = []
# Current account deficit
if country_data['current_account_gdp'] < -5:
score += 3
flags.append(f"Large current account deficit: {country_data['current_account_gdp']}% GDP")
elif country_data['current_account_gdp'] < -2:
score += 1
# Foreign reserves coverage
if country_data['import_cover_months'] < 3:
score += 3
flags.append("Low FX reserves — vulnerable to sudden stop")
elif country_data['import_cover_months'] < 6:
score += 1
# External debt
if country_data['external_debt_gdp'] > 60:
score += 2
flags.append(f"High external debt: {country_data['external_debt_gdp']}% GDP")
# Inflation
if country_data['inflation'] > 10:
score += 2
flags.append(f"High inflation: {country_data['inflation']}%")
# Political risk
if country_data.get('political_risk') == 'high':
score += 2
flags.append("High political risk")
return {
'vulnerability_score': score,
'risk_level': 'High' if score >= 6 else 'Medium' if score >= 3 else 'Low',
'flags': flags
}
```
---
## Commodity Cycles
```python
def commodity_macro_drivers():
return {
'Oil': {
'demand_drivers': ['Global GDP growth', 'China industrial activity',
'Travel demand', 'Petrochemical demand'],
'supply_drivers': ['OPEC+ production quotas', 'US shale output',
'Geopolitical disruptions', 'Inventory levels'],
'macro_signal': 'Oil spike = inflationary, negative for consumers',
'asset_impact': {
'Energy stocks': 'Directly positive',
'Airlines': 'Negative (input cost)',
'USD': 'Petrodollar recycling supports USD',
'EM oil importers':'Negative (higher import bill)'
}
},
'Gold': {
'demand_drivers': ['Real rate decline', 'USD weakness',
'Geopolitical uncertainty', 'Central bank buying',
'Inflation fear', 'Risk-off sentiment'],
'supply_drivers': ['Mine production (inelastic)', 'Recycling'],
'macro_signal': 'Gold rally = loss of faith in fiat, geopolitical fear',
'inverse_correlation': 'Real interest rates (strongest driver)',
'formula': 'Gold up when: real rates fall OR USD falls OR fear rises'
},
'Copper': {
'demand_drivers': ['China construction', 'Global manufacturing',
'EV adoption (4x copper vs ICE)',
'Power grid buildout'],
'nickname': 'Dr. Copper — PhD in economics, leads economic cycle',
'macro_signal': 'Copper rising = global growth accelerating',
'asset_impact': {
'Mining stocks': 'Positive',
'AUD/USD': 'Correlated (Australia major exporter)',
'Chilean peso': 'Correlated'
}
},
'Agricultural': {
'demand_drivers': ['Population growth', 'Diet shifts in EM',
'Biofuel demand', 'Weather shocks'],
'supply_drivers': ['Weather/El Nino', 'Planting area',
'Fertilizer costs', 'Water availability'],
'macro_signal': 'Food inflation = social unrest risk in EM countries'
}
}
```
---
## Recession Framework
```python
def recession_probability_scorecard(indicators):
"""
Score recession probability based on key indicators.
"""
score = 0
max_score = 0
signals = []
checks = [
('yield_curve_inverted', 3, 'Yield curve inverted (10y-2y < 0)'),
('leading_index_negative', 2, 'Conference Board LEI negative 6m'),
('pmi_below_50', 2, 'Manufacturing PMI below 50'),
('credit_spreads_widening', 2, 'HY credit spreads widening sharply'),
('jobless_claims_rising', 2, 'Jobless claims trending higher'),
('housing_declining', 1, 'Housing starts and permits falling'),
('consumer_confidence_drop', 1, 'Consumer confidence declining'),
('earnings_revisions_neg', 1, 'Earnings estimates being cut'),
('ism_new_orders_below_50', 2, 'ISM New Orders below 50'),
('real_rates_very_high', 2, 'Real rates above 2% for 6+ months'),
]
for key, weight, description in checks:
max_score += weight
if indicators.get(key, False):
score += weight
signals.append(description)
probability = score / max_score
return {
'recession_probability': round(probability * 100, 1),
'score': f"{score}/{max_score}",
'signals_triggered': signals,
'assessment': 'High risk' if probability > 0.6 else
'Elevated' if probability > 0.4 else
'Moderate' if probability > 0.2 else
'Low risk'
}
def recession_asset_playbook():
return {
'Pre-Recession (6-12m before)': {
'overweight': ['Long duration Treasuries', 'Gold', 'USD',
'Defensive equities', 'Investment grade bonds'],
'underweight': ['Cyclical stocks', 'High yield bonds',
'EM', 'Commodities', 'Small caps'],
'signals': 'Yield curve inverted, LEI falling, PMI < 50'
},
'During Recession': {
'overweight': ['Short-term Treasuries', 'Cash', 'Gold',
'Utilities', 'Consumer Staples', 'Healthcare'],
'underweight': ['Financials', 'Industrials', 'Materials',
'Consumer Discretionary', 'Real Estate'],
'signals': 'GDP negative, unemployment rising, earnings falling'
},
'Early Recovery': {
'overweight': ['Stocks broadly', 'Credit', 'Small caps',
'Financials', 'Consumer Discretionary', 'EM'],
'underweight': ['Long bonds', 'Cash', 'Defensives'],
'signals': 'LEI turning up, PMI recovering, credit spreads tightening'
}
}
```
---
## Key Data Calendar
Weekly:
Thursday -> Jobless Claims (high frequency labor indicator)
Monthly:
Week 1 -> ISM Manufacturing PMI (first business day)
-> NFP Jobs Report (first Friday)
Week 2 -> CPI Inflation Report
Week 3 -> Retail Sales, Industrial Production
-> FOMC Meeting (8x per year, not monthly)
Week 4 -> PCE Deflator (Fed preferred inflation gauge)
-> GDP (quarterly: advance, preliminary, final)
Quarterly:
Earnings Season -> Starts 2-3 weeks after quarter ends
GDP -> Advance estimate, then 2 revisions
Annual:
Jackson Hole -> August Fed symposium, major policy signals
Fed Dot Plot -> Rate projections, released at select FOMC meetings
---
## Common Pitfalls
| Pitfall | Problem | Fix |
|---|---|---|
| Overthinking macro | Analysis paralysis, miss moves | Macro sets direction, TA sets entry |
| Fighting the Fed | Holding longs in hike cycle | Always respect monetary policy direction |
| Assuming linear cycles | Cycles vary in length and shape | Use weight of evidence, not single signal |
| Ignoring lags | Policy takes 12-18m to impact economy | Be patient, act early not late |
| Recency bias | Last regime feels permanent | Study full history of cycles |
| Precision over direction | Wrong: exact GDP, Right: direction | Macro is about direction, not decimal points |
| Missing second order effects | Rate hike hurts housing, not just bonds | Think through full transmission mechanism |
---
## Best Practices
- **Weight of evidence** — no single indicator predicts reliably, use many
- **Respect the Fed** — do not fight central bank policy direction
- **Think in probabilities** — macro is probabilistic, not deterministic
- **Act early** — markets price in macro 6-12 months ahead
- **Top-down then bottom-up** — macro narrows the field, fundamentals pick the stock
- **Update your view** — new data should update your thesis
- **Separate signal from noise** — monthly data is noisy, look at trends
---
## Related Skills
- **finance-trading-expert**: Translating macro into trades
- **portfolio-management-expert**: Macro-driven asset allocation
- **forex-trading-expert**: Currency implications of macro
- **fundamental-analysis-expert**: Sector rotation from macro
- **risk-management-expert**: Macro regime risk adjustment
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!