Portfolio Manager
Forex Impact on Our Portfolio β The EUR/USD Move Cost Us β¬47K
Key Takeaway
Our AI agent tracks daily FX impact on a multi-currency portfolio, separating investment returns from currency effects β last month, a 2.3% EUR/USD drop added β¬47K to our USD positions in EUR terms.
The Problem
I hold assets in four currencies. US equities in USD. Japanese stocks in JPY. French equities in EUR. Some crypto denominated in USD, some DeFi yields in stablecoins. My reporting currency is EUR.
Here's what most portfolio trackers don't tell you: when your NVDA position goes up 5% but EUR/USD drops 2%, your EUR-denominated return isn't 5%. It's roughly 7%. The investment made money, and the currency made money. But the reverse is also true β your gains can quietly evaporate if the currency moves against you.
At the board level, this matters enormously. "The portfolio returned 12% this quarter" sounds great until someone asks "How much of that was currency?" If 4% was EUR weakness, the actual investment performance was 8%. Boards deserve to know the difference.
I wasn't tracking this. Nobody was. The brokerage shows returns in the local currency of each position. Converting everything to EUR and decomposing the return into investment vs. currency components β that's a calculation nobody does manually. Too many positions. Too many daily rates. Too much spreadsheet gymnastics.
The Solution
An Alpha Vantage-powered FX tracker combined with our portfolio watcher. The agent pulls daily exchange rates for every currency in the portfolio (EUR/USD, EUR/JPY, EUR/GBP), calculates the currency impact on each position, and produces a monthly report that separates investment returns from FX effects.
It also runs a hedging analysis: given the current FX exposure, should we hedge? What's the cost of hedging (forward premium)? Is the expected FX move large enough to justify the hedge cost?
The Process
FX monitoring config:
yamlShow code
# fx-impact-tracker config
schedule: "0 7 * * *" # daily at 7AM UTC
report_schedule: "0 7 1 * *" # monthly report on 1st
base_currency: EUR
currency_pairs:
- pair: EUR/USD
portfolio_exposure: 1250000 # USD-denominated assets in EUR
- pair: EUR/JPY
portfolio_exposure: 380000 # JPY-denominated assets in EUR
- pair: EUR/GBP
portfolio_exposure: 120000 # GBP-denominated assets in EUR
positions_by_currency:
USD:
- { ticker: "TSLA", value_usd: 420000 }
- { ticker: "NVDA", value_usd: 380000 }
- { ticker: "PLTR", value_usd: 250000 }
- { ticker: "GOOGL", value_usd: 200000 }
- { ticker: "BTC", value_usd: 180000 }
- { ticker: "ETH", value_usd: 140000 }
- { ticker: "USDC_defi", value_usd: 500000 }
JPY:
- { ticker: "7203.T", value_jpy: 45000000 } # Toyota
- { ticker: "6758.T", value_jpy: 18000000 } # Sony
GBP:
- { ticker: "SHEL.L", value_gbp: 100000 } # Shell
hedging:
analyze: true
threshold_exposure_pct: 15 # flag if single currency >15% of portfolio
cost_ceiling_bps: 50 # don't recommend hedge if cost >50bps/year
Daily FX impact calculation:
pythonShow code
def calculate_fx_impact(positions, fx_rates_today, fx_rates_yesterday):
impacts = {}
total_fx_pnl = 0
for currency, holdings in positions.items():
pair = f"EUR/{currency}"
rate_today = fx_rates_today[pair]
rate_yesterday = fx_rates_yesterday[pair]
fx_change_pct = (rate_today - rate_yesterday) / rate_yesterday
# EUR strengthening = negative impact on foreign holdings
# EUR weakening = positive impact on foreign holdings
for position in holdings:
eur_value = position.foreign_value / rate_today
fx_pnl = eur_value * (-fx_change_pct)
impacts[position.ticker] = {
"eur_value": eur_value,
"fx_change": fx_change_pct,
"fx_pnl_eur": fx_pnl
}
total_fx_pnl += fx_pnl
return FXImpactReport(impacts=impacts, total_fx_pnl=total_fx_pnl)
def hedging_analysis(exposures, forward_rates, spot_rates):
recommendations = []
for currency, exposure in exposures.items():
exposure_pct = exposure / total_portfolio_value
if exposure_pct > threshold:
hedge_cost_bps = (forward_rates[currency] - spot_rates[currency]) \
/ spot_rates[currency] * 10000
recommendations.append({
"currency": currency,
"exposure_pct": exposure_pct,
"hedge_cost_annual_bps": hedge_cost_bps,
"recommendation": "hedge" if hedge_cost_bps < cost_ceiling else "accept",
"reasoning": build_reasoning(currency, exposure_pct, hedge_cost_bps)
})
return recommendations
Monthly FX report:
View details
π FX IMPACT REPORT β February 2026
Base currency: EUR
CURRENCY MOVEMENTS (Month)
| Pair | Open | Close | Change | Direction |
|---------|--------|--------|---------|------------------|
| EUR/USD | 1.0820 | 1.0571 | -2.30% | EUR weakened |
| EUR/JPY | 161.40 | 162.85 | +0.90% | EUR strengthened |
| EUR/GBP | 0.8340 | 0.8295 | -0.54% | EUR weakened |
PORTFOLIO FX IMPACT
| Currency | Exposure (EUR) | FX Change | FX P&L (EUR) |
|----------|---------------|-----------|--------------|
| USD | β¬1,250,000 | -2.30% | +β¬47,150 |
| JPY | β¬380,000 | +0.90% | -β¬3,420 |
| GBP | β¬120,000 | -0.54% | +β¬648 |
| **Total** | β | β | **+β¬44,378** |
RETURN DECOMPOSITION
Total portfolio return (Feb): +6.8%
Investment return component: +4.6%
Currency return component: +2.2%
β 32% of this month's return was FX, not investment performance
HEDGING ANALYSIS
| Currency | Exposure % | Hedge Cost | Recommendation |
|----------|-----------|------------|----------------|
| USD | 48.2% | 32 bps/yr | β οΈ HEDGE (over threshold, cost acceptable) |
| JPY | 14.6% | 85 bps/yr | ACCEPT (cost too high, exposure manageable) |
| GBP | 4.6% | 28 bps/yr | ACCEPT (exposure below threshold) |
USD hedging note: At 48% portfolio exposure, a 5% EUR/USD move
equals Β±β¬125K. Forward hedge for 6 months costs ~β¬4K.
Recommend hedging 50% of USD exposure (β¬625K notional).
The Results
| Metric | Before | After |
|---|---|---|
| FX impact awareness | None (hidden in returns) | Daily tracking, monthly report |
| Return decomposition | Not done | Investment vs. currency split |
| Hedging analysis | Ad hoc, annual | Monthly, quantified cost/benefit |
| Time to produce FX report | N/A (wasn't done) | Automated |
| Board reporting quality | "Portfolio returned X%" | "Investment returned Y%, FX added Z%" |
| Surprise FX losses | Discovered quarterly | Flagged daily |
Try It Yourself
Install the alpha-vantage skill on Mr.Chief for FX data. Configure your positions by currency and set your reporting base currency. The agent handles daily tracking and monthly decomposition.
The insight most portfolio managers miss: FX is not noise. On a multi-currency portfolio, currency effects can be 20-40% of your total return in a given month. If you're not measuring it, you're not managing it.
Your investment returns and your currency returns are two different things. Reporting them as one number is a lie of omission. We stopped lying.
Related case studies
Portfolio Manager
The Complete Financial Operating System β All 17 Skills in One Stack
How 17 AI finance skills work as one integrated system: data ingestion, analysis, execution, and reporting. 31 agents across 8 teams running a complete financial operating system on Mr.Chief.
Portfolio Manager
Earnings Preview Report for 5 Holdings β Before the Market Opens
How an AI agent generates earnings preview reports for NVDA, GOOGL, META, TSLA, and PLTR in 10 minutes β consensus estimates, implied moves, and key metrics delivered before Monday open.
Portfolio Manager
Is This Expansion or Slowdown? The Agent Classifies Macro Regimes in Real-Time
AI agent monitors yield curve, PMI, credit spreads, and ISM to classify macro regimes in real-time. Regime shift alert helped avoid an 8% portfolio drawdown.
Want results like these?
Start free with your own AI team. No credit card required.