Portfolio Manager

Portfolio P&L Across Stocks, Crypto, and DeFi β€” One Message, Every Day

25 min β†’ 30 sec daily portfolio checkFinance & Trading4 min read

Key Takeaway

One daily Telegram message shows my total portfolio value across US equities, Japanese stocks, French stocks, crypto, and DeFi β€” with P&L, allocation drift, best/worst performers, and benchmark comparisons.

The Problem

My portfolio lives in five different places.

US equities β€” TSLA, NVDA, PLTR, GOOGL β€” on Interactive Brokers. Japanese equities on a separate brokerage. French stocks through a PEA. Crypto on-chain and across two exchanges. DeFi positions scattered across Aave, Morpho, and a few LP pools.

To know my total net worth on any given day, I'd need to log into five platforms, convert three currencies (USD, JPY, EUR), aggregate manually, and then figure out what actually moved. That's not portfolio management. That's accounting homework.

And because it's painful, I don't do it daily. Which means I miss drift. My crypto allocation quietly grows from 30% to 42% during a bull run, and I don't notice until the correction hits and I wonder why my portfolio dropped 15% when the S&P only dropped 3%.

The Solution

The Portfolio Watcher agent on Mr.Chief. It connects to every data source β€” brokerage APIs, blockchain RPC, DeFi protocol queries β€” and produces one unified daily P&L message. Every morning at 8:15 AM Paris time (right after the crypto dashboard), I get the full picture.

One message. All asset classes. All currencies converted to EUR as the base. Allocation percentages. Drift warnings. Benchmark comparisons.

The Process

yamlShow code
# Portfolio Watcher β€” Daily
name: portfolio-daily-pnl
schedule: "0 7 * * 1-5"  # Weekdays 7:15 UTC (after crypto dash)
channel: telegram

task: |
  Generate unified portfolio P&L report.

  POSITIONS:
  US Equities: TSLA (X shares), NVDA (X), PLTR (X), GOOGL (X)
  Japanese Equities: [tickers from config]
  French Equities: [PEA positions from config]
  Crypto: BTC, ETH, SOL + exchange balances
  DeFi: Aave positions, Morpho positions, LP positions

  BASE CURRENCY: EUR

  Report:
  1. Total portfolio value (EUR)
  2. Daily change (€ and %)
  3. Best performer, worst performer
  4. Current allocation vs target allocation
  5. Any position >5% daily move β†’ highlight
  6. Weekly: benchmark comparison (S&P, BTC, Nikkei, CAC 40)

The data aggregation:

pythonShow code
async def unified_portfolio():
    # Pull from all sources in parallel
    us_equities = await alpha_vantage.get_quotes(["TSLA", "NVDA", "PLTR", "GOOGL"])
    jp_equities = await fetch_jp_positions()
    fr_equities = await fetch_pea_positions()
    crypto_spot = await cmc_api.get_quotes(["BTC", "ETH", "SOL"])
    crypto_exchange = await exchange_api.get_balances()
    defi_positions = await defillama.get_user_positions(wallet_address)

    # Convert everything to EUR
    fx_rates = await get_fx_rates(["USD/EUR", "JPY/EUR"])

    all_positions = normalize_and_convert(
        us_equities, jp_equities, fr_equities,
        crypto_spot, crypto_exchange, defi_positions,
        base_currency="EUR", fx_rates=fx_rates
    )

    # Calculate allocation
    total_value = sum(p["value_eur"] for p in all_positions)
    allocations = {
        "US Equities": sum_by_class("us_equity") / total_value,
        "JP Equities": sum_by_class("jp_equity") / total_value,
        "FR Equities": sum_by_class("fr_equity") / total_value,
        "Crypto": sum_by_class("crypto") / total_value,
        "DeFi": sum_by_class("defi") / total_value,
    }

    # Drift detection
    targets = {"US Equities": 0.35, "JP Equities": 0.10,
               "FR Equities": 0.15, "Crypto": 0.25, "DeFi": 0.15}
    drift = {k: allocations[k] - targets[k] for k in targets}

    return format_report(all_positions, allocations, drift, total_value)

The daily message:

View details
πŸ’Ό PORTFOLIO β€” Mar 12, 2026

Total: €1,247,800 | Day: +€8,420 (+0.68%)

πŸ“Š BY CLASS:
  US Equities   €441,200  (35.4%)  target: 35%  βœ…
  JP Equities   €118,900  (9.5%)   target: 10%  βœ…
  FR Equities   €184,600  (14.8%)  target: 15%  βœ…
  Crypto        €328,100  (26.3%)  target: 25%  ⚠️ +1.3%
  DeFi          €175,000  (14.0%)  target: 15%  βœ…

πŸ† Best:  PLTR +3.8% (+€4,200)
πŸ’€ Worst: Toyota -1.2% (-€890)

⚑ >5% Moves: None today

πŸ“ˆ MTD vs Benchmarks:
  Portfolio: +4.2%
  S&P 500:   +2.8%  β–² beating by 1.4%
  BTC:       +6.1%  β–Ό trailing by 1.9%
  Nikkei:    +1.9%  β–² beating by 2.3%
  CAC 40:    +3.1%  β–² beating by 1.1%

The Results

MetricBeforeAfter
Time to check full portfolio25-30 min30 sec
How often I checked2-3x/weekEvery day
Allocation drift detectedAfter the factReal-time
Largest unnoticed driftCrypto hit 42% (target: 25%)Flagged at 27%
Benchmark comparisonMonthly, manualWeekly, automatic
Currency conversion errorsOccasionalZero (automated)
Platforms to log into50

The real value: I caught a 2% allocation drift toward crypto before a 12% correction. Rebalanced early. Saved roughly €15K in drawdown that quarter.

Try It Yourself

  1. Map your positions across all platforms and asset classes
  2. Set up API access for each data source (or manual position entry for locked brokerages)
  3. Define your target allocations and drift thresholds
  4. Choose your base currency β€” everything gets converted automatically
  5. Start with weekday-only delivery; add weekends only if crypto volatility matters to you

You can't manage what you can't see. And if seeing your portfolio requires logging into five apps, you won't see it often enough.


Five brokerages, three currencies, two blockchains. One message.

portfolio-managementautomationequitiescryptoDeFi

Want results like these?

Start free with your own AI team. No credit card required.

Portfolio P&L Across Stocks, Crypto, and DeFi β€” One Message, Every Day β€” Mr.Chief