.tp-hero { display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--line); border:1px solid var(--line); margin-bottom:24px; } .tp-hero-cell { background:var(--panel); padding:22px 24px; } .tp-hero-cell .tph-label { font-family:'JetBrains Mono',monospace; font-size:9px; letter-spacing:0.22em; text-transform:uppercase; color:var(--ink-faint); margin-bottom:10px; } .tp-hero-cell .tph-val { font-family:'Instrument Serif',serif; font-size:34px; letter-spacing:-0.02em; line-height:1; margin-bottom:6px; } .tp-hero-cell .tph-sub { font-family:'JetBrains Mono',monospace; font-size:10px; color:var(--ink-dim); } .tp-alloc-bar { height:8px; background:var(--line); border-radius:0; display:flex; overflow:hidden; margin-bottom:24px; } .tp-alloc-seg { height:100%; transition:width 0.6s ease; } .tp-tranche { background:var(--panel); border:1px solid var(--line); margin-bottom:16px; } .tp-tranche-header { padding:18px 22px 16px; border-bottom:1px solid var(--line); display:flex; justify-content:space-between; align-items:flex-start; } .tp-tranche-label { font-family:'JetBrains Mono',monospace; font-size:9px; letter-spacing:0.22em; text-transform:uppercase; margin-bottom:6px; } .tp-tranche-title { font-family:'Instrument Serif',serif; font-size:20px; letter-spacing:-0.01em; margin-bottom:4px; } .tp-tranche-title em { font-style:italic; color:var(--amber); } .tp-tranche-sub { font-size:12px; color:var(--ink-dim); } .tp-pct { font-family:'Instrument Serif',serif; font-size:38px; letter-spacing:-0.02em; line-height:1; } .tp-positions { width:100%; border-collapse:collapse; } .tp-positions thead tr { border-bottom:1px solid var(--line); } .tp-positions th { font-family:'JetBrains Mono',monospace; font-size:9px; letter-spacing:0.18em; text-transform:uppercase; color:var(--ink-faint); padding:10px 22px; text-align:left; font-weight:400; } .tp-positions th.r { text-align:right; } .tp-positions tbody tr { border-bottom:1px solid var(--line-soft); transition:background 0.15s; } .tp-positions tbody tr:last-child { border-bottom:none; } .tp-positions tbody tr:hover { background:var(--panel-light); } .tp-positions td { padding:14px 22px; font-size:13px; } .tp-positions td.r { text-align:right; font-family:'JetBrains Mono',monospace; font-size:11px; } .tp-sym { font-family:'JetBrains Mono',monospace; font-size:12px; font-weight:500; letter-spacing:0.08em; padding:3px 9px; border-radius:2px; display:inline-block; } .tp-name { color:var(--ink); font-size:13px; margin-bottom:2px; } .tp-why { color:var(--ink-dim); font-size:11px; line-height:1.5; } .tp-conf-dots { display:flex; gap:3px; margin-top:5px; } .tp-dot { width:7px; height:7px; border-radius:50%; } .tp-footer { padding:14px 22px; background:var(--bg-soft); border-top:1px solid var(--line); display:flex; gap:32px; font-size:12px; } .tp-footer .stop { color:var(--red); } .tp-footer .target { color:var(--green); } .tp-footer span { color:var(--ink-faint); font-family:'JetBrains Mono',monospace; font-size:9px; letter-spacing:0.15em; text-transform:uppercase; display:block; margin-bottom:3px; } .tp-phase-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border:1px solid var(--line); margin-bottom:24px; } .tp-phase { background:var(--panel); padding:20px 22px; } .tp-phase-dot { width:10px; height:10px; border-radius:50%; display:inline-block; margin-right:8px; } .tp-phase-week { font-family:'JetBrains Mono',monospace; font-size:9px; letter-spacing:0.2em; text-transform:uppercase; color:var(--ink-faint); margin-bottom:6px; } .tp-phase-amt { font-family:'Instrument Serif',serif; font-size:26px; letter-spacing:-0.02em; margin-bottom:8px; } .tp-phase-body { font-size:12px; color:var(--ink-dim); line-height:1.65; } .tp-scenarios { display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border:1px solid var(--line); margin-bottom:24px; } .tp-sc { background:var(--panel); padding:20px 22px; } .tp-sc-label { font-family:'JetBrains Mono',monospace; font-size:9px; letter-spacing:0.2em; text-transform:uppercase; margin-bottom:8px; } .tp-sc-val { font-family:'Instrument Serif',serif; font-size:34px; letter-spacing:-0.02em; line-height:1; margin-bottom:8px; } .tp-sc-body { font-size:12px; color:var(--ink-dim); line-height:1.6; } .tp-trigger-list { background:var(--panel); border:1px solid var(--line); margin-bottom:24px; } .tp-trigger { display:flex; align-items:center; gap:16px; padding:14px 22px; border-bottom:1px solid var(--line-soft); } .tp-trigger:last-child { border-bottom:none; } .tp-trigger-num { font-family:'JetBrains Mono',monospace; font-size:10px; color:var(--amber); min-width:28px; } .tp-trigger-text { font-size:13px; color:var(--ink); flex:1; } .tp-trigger-action { font-family:'JetBrains Mono',monospace; font-size:10px; color:var(--green); text-align:right; } /* ============ MOVING AVERAGE SKILL ============ */ .skills-grid { grid-template-columns: repeat(3, 1fr); } .skill-cell-wide { grid-column: span 3; border-top: 1px solid var(--line); } .ma-rule-row { display:flex; align-items:flex-start; gap:10px; padding:7px 0; border-bottom:1px solid var(--line-soft); font-size:12px; color:var(--ink-dim); line-height:1.5; } .ma-rule-row:last-child { border-bottom:none; padding-bottom:0; } .ma-rule-dot { width:8px; height:8px; border-radius:50%; flex-shrink:0; margin-top:4px; } .ma-rule-text { flex:1; } .ma-holding-cell { background:var(--panel); padding:18px 20px; } .ma-holding-sym { font-family:'JetBrains Mono',monospace; font-size:12px; font-weight:500; letter-spacing:0.1em; margin-bottom:10px; } .ma-row { display:flex; justify-content:space-between; align-items:center; padding:5px 0; border-bottom:1px solid var(--line-soft); font-size:11px; } .ma-row:last-child { border-bottom:none; } .ma-key { font-family:'JetBrains Mono',monospace; font-size:9px; letter-spacing:0.12em; color:var(--ink-faint); } .ma-val { font-family:'JetBrains Mono',monospace; font-size:11px; } .ma-cross-badge { display:inline-flex; align-items:center; gap:6px; padding:6px 12px; border-radius:2px; margin-top:10px; font-family:'JetBrains Mono',monospace; font-size:10px; letter-spacing:0.12em; font-weight:500; } .ma-cross-badge.golden { background:rgba(111,178,133,0.15); border:1px solid rgba(111,178,133,0.3); color:var(--green); } .ma-cross-badge.death { background:rgba(209,102,102,0.15); border:1px solid rgba(209,102,102,0.3); color:var(--red); } .ma-cross-badge.bull { background:rgba(111,178,133,0.10); border:1px solid rgba(111,178,133,0.2); color:var(--green); } .ma-cross-badge.bear { background:rgba(232,168,56,0.12); border:1px solid rgba(232,168,56,0.25); color:var(--amber); } .ma-sparkline { width:100%; height:40px; margin-top:8px; } /* ============ RETIREMENT RULES ============ */ .ret-rule-cell { background:var(--panel); padding:20px 18px; cursor:pointer; transition:background 0.15s; border-bottom:2px solid transparent; position:relative; } .ret-rule-cell:hover { background:var(--panel-light); } .ret-rule-cell.selected { border-bottom-color:var(--amber); background:var(--panel-light); } .ret-rule-icon { font-size:20px; margin-bottom:8px; } .ret-rule-num { font-family:'JetBrains Mono',monospace; font-size:9px; letter-spacing:0.2em; color:var(--ink-faint); text-transform:uppercase; margin-bottom:6px; } .ret-rule-title { font-family:'Instrument Serif',serif; font-size:15px; letter-spacing:-0.01em; line-height:1.2; margin-bottom:6px; color:var(--ink); } .ret-rule-sub { font-size:11px; color:var(--ink-dim); margin-bottom:10px; } .ret-rule-badge { display:inline-block; font-family:'JetBrains Mono',monospace; font-size:9px; letter-spacing:0.12em; padding:3px 8px; border-radius:2px; background:rgba(138,134,128,0.12); color:var(--ink-dim); border:1px solid var(--line); } .ret-rule-badge.ret-active { background:rgba(50,102,173,0.12); color:#5a8fc4; border-color:rgba(50,102,173,0.25); } .ret-rule-badge.ret-amber { background:rgba(232,168,56,0.12); color:var(--amber); border-color:rgba(232,168,56,0.25); } .ret-rule-badge.ret-green { background:rgba(111,178,133,0.12); color:var(--green); border-color:rgba(111,178,133,0.25); } /* ============ AI SIGNAL ENGINE ============ */ .ai-header-badge { display: inline-flex; align-items: center; gap: 8px; font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.2em; color: var(--amber); border: 1px solid rgba(232,168,56,0.3); padding: 4px 12px; border-radius: 2px; } .ai-header-badge::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--amber); box-shadow: 0 0 8px var(--amber); animation: pulse 2s ease-in-out infinite; } /* Skills Grid */ .skills-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--line); border: 1px solid var(--line); margin-bottom: 24px; } .skill-cell { background: var(--panel); padding: 20px 22px; position: relative; transition: background 0.2s; } .skill-cell:hover { background: var(--panel-light); } .skill-cell .sk-label { font-family: 'JetBrains Mono', monospace; font-size: 9px; letter-spacing: 0.25em; color: var(--ink-faint); text-transform: uppercase; margin-bottom: 8px; } .skill-cell .sk-name { font-family: 'Instrument Serif', serif; font-size: 18px; letter-spacing: -0.01em; margin-bottom: 10px; line-height: 1.1; } .skill-cell .sk-name em { font-style: italic; color: var(--amber); } .skill-cell .sk-signal { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.05em; margin-bottom: 6px; } .skill-cell .sk-value { font-family: 'Instrument Serif', serif; font-size: 28px; letter-spacing: -0.02em; line-height: 1; } .skill-cell .sk-bar { height: 3px; background: var(--line); border-radius: 1px; margin-top: 12px; } .skill-cell .sk-bar-fill { height: 100%; border-radius: 1px; transition: width 0.8s ease; } .sig-bull { color: var(--green); } .sig-bear { color: var(--red); } .sig-neu { color: var(--ink-dim); } .sig-caut { color: var(--amber); } /* Indicator rows */ .indicator-row { display: flex; justify-content: space-between; align-items: center; padding: 8px 0; border-bottom: 1px solid var(--line-soft); font-size: 12px; } .indicator-row:last-child { border-bottom: none; } .ind-name { color: var(--ink-dim); font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.1em; } .ind-val { font-family: 'JetBrains Mono', monospace; font-size: 11px; } .ind-sig { font-family: 'JetBrains Mono', monospace; font-size: 9px; letter-spacing: 0.15em; padding: 2px 7px; border-radius: 2px; } .ind-sig.bull { background: rgba(111,178,133,0.15); color: var(--green); } .ind-sig.bear { background: rgba(209,102,102,0.15); color: var(--red); } .ind-sig.neu { background: rgba(138,134,128,0.15); color: var(--ink-dim); } .ind-sig.caut { background: rgba(232,168,56,0.15); color: var(--amber); } /* Agent cards */ .agents-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-bottom: 24px; } .agent-card { background: var(--panel); border: 1px solid var(--line); padding: 22px; position: relative; overflow: hidden; transition: border-color 0.2s; } .agent-card::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px; } .agent-card.momentum::before { background: var(--green); } .agent-card.reversion::before { background: var(--blue); } .agent-card.risk::before { background: var(--amber); } .agent-card.tax::before { background: #a78bfa; } .agent-card.macro::before { background: #64b5f6; } .agent-card:hover { border-color: var(--amber); } .agent-type { font-family: 'JetBrains Mono', monospace; font-size: 9px; letter-spacing: 0.25em; text-transform: uppercase; margin-bottom: 8px; } .agent-name { font-family: 'Instrument Serif', serif; font-size: 20px; letter-spacing: -0.01em; margin-bottom: 14px; } .agent-name em { font-style: italic; color: var(--amber); } .agent-verdict { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; } .verdict-badge { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.15em; padding: 4px 10px; border-radius: 2px; text-transform: uppercase; } .verdict-badge.buy { background: rgba(111,178,133,0.2); color: var(--green); border: 1px solid rgba(111,178,133,0.3); } .verdict-badge.hold { background: rgba(232,168,56,0.15); color: var(--amber); border: 1px solid rgba(232,168,56,0.3); } .verdict-badge.caution{ background: rgba(232,168,56,0.15); color: var(--amber); border: 1px solid rgba(232,168,56,0.3); } .verdict-badge.reduce { background: rgba(209,102,102,0.15); color: var(--red); border: 1px solid rgba(209,102,102,0.3); } .verdict-badge.monitor{ background: rgba(106,141,179,0.15); color: var(--blue); border: 1px solid rgba(106,141,179,0.3); } .agent-reasoning { font-size: 11px; color: var(--ink-dim); line-height: 1.6; margin-bottom: 14px; } .agent-confidence { display: flex; align-items: center; gap: 10px; font-family: 'JetBrains Mono', monospace; font-size: 9px; letter-spacing: 0.15em; color: var(--ink-faint); } .conf-bar { flex: 1; height: 2px; background: var(--line); border-radius: 1px; } .conf-fill { height: 100%; border-radius: 1px; transition: width 0.8s ease; } .agent-ask { margin-top: 12px; padding: 10px 14px; background: var(--bg-soft); border: 1px solid var(--line); border-radius: 2px; font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.1em; color: var(--ink-dim); cursor: pointer; transition: all 0.2s; text-align: center; } .agent-ask:hover { border-color: var(--amber); color: var(--amber); } /* Orchestrator */ .orchestrator-panel { background: linear-gradient(135deg, var(--panel) 0%, var(--bg-soft) 100%); border: 1px solid var(--amber); padding: 28px; margin-bottom: 24px; position: relative; } .orchestrator-panel::before { content: "⬡ ORCHESTRATOR"; position: absolute; top: -10px; left: 24px; background: var(--bg); padding: 0 10px; font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.2em; color: var(--amber); } .orch-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 24px; } .orch-stat .k { font-family: 'JetBrains Mono', monospace; font-size: 9px; letter-spacing: 0.2em; color: var(--ink-faint); text-transform: uppercase; margin-bottom: 8px; } .orch-stat .v { font-family: 'Instrument Serif', serif; font-size: 36px; letter-spacing: -0.02em; line-height: 1; } .orch-verdict { font-family: 'Instrument Serif', serif; font-size: 22px; line-height: 1.3; margin-bottom: 6px; } .orch-verdict em { font-style: italic; color: var(--amber); } /* Scenario Engine */ .scenario-tabs { display: flex; gap: 2px; margin-bottom: 0; border-bottom: 1px solid var(--line); } .scenario-tab { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.15em; text-transform: uppercase; padding: 10px 16px; cursor: pointer; color: var(--ink-dim); border-bottom: 2px solid transparent; transition: all 0.2s; margin-bottom: -1px; } .scenario-tab:hover { color: var(--ink); } .scenario-tab.active { color: var(--amber); border-bottom-color: var(--amber); } .scenario-panel { display: none; padding: 24px; } .scenario-panel.active { display: block; } .scenario-impact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 20px; } .impact-block { padding: 16px 18px; background: var(--bg-soft); border: 1px solid var(--line); } .impact-block .ib-label { font-family: 'JetBrains Mono', monospace; font-size: 9px; letter-spacing: 0.2em; color: var(--ink-faint); text-transform: uppercase; margin-bottom: 8px; } .impact-block .ib-val { font-family: 'Instrument Serif', serif; font-size: 28px; letter-spacing: -0.02em; line-height: 1; margin-bottom: 6px; } .impact-block .ib-desc { font-size: 11px; color: var(--ink-dim); line-height: 1.5; } .action-list { margin-top: 16px; } .action-item { display: flex; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--line-soft); align-items: flex-start; } .action-item:last-child { border-bottom: none; } .action-num { font-family: 'JetBrains Mono', monospace; font-size: 9px; letter-spacing: 0.1em; color: var(--amber); min-width: 28px; margin-top: 1px; } .action-text { font-size: 12px; color: var(--ink-dim); line-height: 1.5; } .action-text strong { color: var(--ink); } /* AI Chat */ .ai-chat-wrap { background: var(--panel); border: 1px solid var(--line); margin-bottom: 24px; } .ai-chat-messages { min-height: 180px; max-height: 340px; overflow-y: auto; padding: 20px 24px; display: flex; flex-direction: column; gap: 12px; } .chat-msg { max-width: 80%; padding: 12px 16px; font-size: 12px; line-height: 1.65; } .chat-msg.user { align-self: flex-end; background: rgba(232,168,56,0.1); border: 1px solid rgba(232,168,56,0.2); color: var(--ink); border-radius: 2px 2px 0 2px; font-family: 'JetBrains Mono', monospace; font-size: 11px; } .chat-msg.assistant { align-self: flex-start; background: var(--bg-soft); border: 1px solid var(--line); color: var(--ink-dim); border-radius: 2px 2px 2px 0; } .chat-msg.typing { align-self: flex-start; background: var(--bg-soft); border: 1px solid var(--line); padding: 14px 18px; border-radius: 2px; } .typing-dots { display: flex; gap: 4px; align-items: center; } .typing-dots span { width: 4px; height: 4px; border-radius: 50%; background: var(--ink-dim); animation: typingBounce 1.2s ease-in-out infinite; } .typing-dots span:nth-child(2) { animation-delay: 0.2s; } .typing-dots span:nth-child(3) { animation-delay: 0.4s; } @keyframes typingBounce { 0%, 60%, 100% { transform: translateY(0); opacity: 0.4; } 30% { transform: translateY(-4px); opacity: 1; } } .ai-chat-input-row { display: flex; gap: 0; border-top: 1px solid var(--line); } .ai-chat-input { flex: 1; padding: 14px 18px; background: var(--bg-soft); border: none; outline: none; color: var(--ink); font-family: 'IBM Plex Sans', sans-serif; font-size: 13px; } .ai-chat-input::placeholder { color: var(--ink-faint); } .ai-chat-send { padding: 14px 22px; background: transparent; border: none; border-left: 1px solid var(--line); color: var(--amber); cursor: pointer; font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.15em; transition: background 0.2s; } .ai-chat-send:hover { background: rgba(232,168,56,0.1); } .quick-prompts { display: flex; gap: 8px; flex-wrap: wrap; padding: 12px 24px; border-top: 1px solid var(--line-soft); } .quick-btn { font-family: 'JetBrains Mono', monospace; font-size: 9px; letter-spacing: 0.12em; padding: 5px 10px; background: var(--bg-soft); border: 1px solid var(--line); color: var(--ink-dim); cursor: pointer; border-radius: 2px; transition: all 0.15s; text-transform: uppercase; } .quick-btn:hover { border-color: var(--amber); color: var(--amber); }
Meridian
Private · Secure · Local
ENTER PIN
VTI 298.42 ▲ +0.64% VXUS 64.18 ▲ +0.31% BND 73.85 ▼ -0.08% ITOT 141.72 ▲ +0.59% FZROX 20.44 ▲ +0.62% SPY 598.31 ▲ +0.71% AGG 98.12 ▼ -0.09% 10-YR 4.18% ▼ -2bp CPI YoY 2.4% ▲ +0.1% VTI 298.42 ▲ +0.64% VXUS 64.18 ▲ +0.31% BND 73.85 ▼ -0.08%
Total Portfolio Value
$1,247,830
▲ +$8,412 today · +7.2% YTD
Annual Fees Saved
$14,230
vs. 1.15% advisor fee
Blended Expense
0.04%
▲ 97% below industry avg
Drift Status
2.1%
● Rebalance suggested
Module 01
Fee Leakage Tracker
10yr Projection
$2.5M $2.0M $1.5M $1.0M Y1 Y3 Y5 Y7 Y10 $2.41M $2.08M
Self-managed @ 0.04% Advisor @ 1.15%
10-Yr Delta
+$332K
Annual Drag
$14,230
Opportunity Cost
27%
Expense Audit
Current holdings
Sort · ER
Asset Weight Exp. Ratio
VTI
Vanguard Total Stock
62.1% 0.03%
VXUS
Vanguard Total Intl
17.8% 0.07%
BND
Vanguard Total Bond
17.1% 0.03%
AGTHX
Legacy — Growth Fund
3.0% 0.64%
Module 02 · Drift Detection
Automated rebalancing engine
Generate Trade List
US Stocks VTI · Target 60%
62.1%
+2.1%
International VXUS · Target 20%
17.8%
−2.2%
Bonds BND · Target 20%
17.1%
−2.9%
SELL
VTI Total Stock Market
87 sh · ~$26,010
BUY
VXUS Total International
214 sh · ~$13,740
BUY
BND Total Bond Market
166 sh · ~$12,270
→ EXECUTE IN BROKERAGE · NET ZERO CASH IMPACT · TAX LOT METHOD: SpecID
Module 03 · Tax Optimization
Roth conversion forecaster & IRMAA monitor
Scenario: 2026 MFJ
Ordinary Income $63,000
$40K$120K$200K
Roth Conversion $145,000
$0$150K$300K
Federal Bracket Position · MFJ 2026
10%
12%
22%
24%
32%
35%
37%
Marginal Rate
24%
Fed Tax Owed
$35,614
Effective Rate
17.1%
Medicare IRMAA Surcharge · 2-yr Lookback
MAGI Projection → $208,000
IRMAA Tier Status TIER 1 · CAUTION
Tier 0 · < $206,000 Standard $2,100/yr
Tier 1 · $206K – $258K +$70/mo $3,780/yr
Tier 2 · $258K – $322K +$175/mo $6,300/yr
Tier 3 · $322K – $386K +$280/mo $8,820/yr
Tier 4 · > $386,000 +$385/mo $11,340/yr
⚠ SAFE HARBOR
Current Q1+Q2 estimated payments: $18,400 · Target to avoid underpayment penalty: $21,910 · Shortfall: $3,510 by Sep 15
Implementation Roadmap
Four-phase build plan
Export .md
PHASE 01
i.
Data Aggregator

Python CSV parser that ingests brokerage statements and normalizes into a local database schema.

Python Pandas SQLite
PHASE 02
ii.
Logic Layer

Drift calculators, expense-ratio auditing, and federal bracket logic powered by a FastAPI service.

FastAPI NumPy Pytest
PHASE 03
iii.
UI / UX

React dashboard with Tailwind that visualizes drift alerts, tax projections, and fee leakage over time.

React Tailwind D3
PHASE 04
iv.
Automation

Rebalance Assistant that generates executable trade lists — copy-paste ready for your brokerage.

Cron Plaid RO Docker
⬢ Technical Security Directive

Air-gapped by default. Your ledger, your machine.

Financial data never leaves your local environment unless you authorize it. The stack is explicitly designed to run behind your own firewall, with read-only credentials at every integration point.

■ Local Hosting

Run via Docker or a local Python venv on localhost:8080 — never expose to the public web. Database stays on your filesystem, encrypted at rest with SQLCipher if preferred.

■ Read-Only Credentials

Plaid / Yodlee integrations scoped to accounts:read and transactions:read only. The system can observe but cannot initiate trades or transfers under any circumstance.

◉ Data Controls
Refresh values — edit in browser, save snapshot
SELF-SERVICE
✓ Applied · values refreshed in current view
Total Portfolio · All Accounts
$2,653,462
▲ +$502K IRA gain / −$44K NIO · $155K MM cash
Positions
24
22 wrap + 1 stock + MM cash
Actual Annual Fee Drag
$24,106
~0.97% blended · advisor 0.45% + ER 0.52%
Tax-Loss Available
$46,149
NIO · harvest before year-end
+ Individual Fidelity Go · Y84246571 · $12 dust (auto-close on transition)
◆ Ground Truth · Fidelity Fee Statement
Q1 2026 actual advisory fees — recalibrated from invoice
Source: Fidelity Q1 Statement
ACCOUNT
Q1 2026 BILLED
ANNUALIZED
EFFECTIVE RATE
Rollover IRA · Y98144803
$2,509.36
$10,037.44
0.466%
Roth IRA · Y82333228
$288.18
$1,152.72
0.350%
Individual Fidelity Go · Y84246571
$0.00
$0.00
TOTAL
$2,797.54
$11,190.16
0.451% blended
Recalibration note: earlier estimates used the published 1.10–1.15% Fidelity Wealth Services schedule. The actual invoice shows ~0.46% blended advisor fee — likely a legacy tier or negotiated rate. All downstream math (savings projection, break-even, fee drag) has been updated to reflect the true run-rate of $11,190/yr advisor + ~$12,630/yr fund ER = $23,820/yr total drag. The transition thesis is unchanged — just less dramatic: ~0.94% savings vs. ~1.06% previously estimated.
⬢ Critical Insight

Three tax contexts — three playbooks, executed in the right order.

IRAs ($2.43M): restructure with zero tax friction — the $546K embedded gain is sheltered. NIO taxable ($16K): harvest the $44K realized loss for current-year tax offsets. Money market cash ($155K taxable): deployable capital — but deploying it creates a fresh cost basis, so asset location matters. Bonds stay in IRA, international & growth equity go in taxable brokerage to capture qualified dividends and foreign tax credits.

◆ Deployment Opportunity · Taxable Cash
$155K in money market → tax-aware deployment plan
BUFFER: $50K
CURRENT (MM CASH)
LIQUIDITY BUFFER
DEPLOYABLE
CURRENT YIELD (MM)
$155,442
$50,000
$105,442
~4.5%
TAX-AWARE DEPLOYMENT · $105K
SymbolRoleWeightAmountWhy here, not IRA
VTI
US Total Market 50% $52,721 Qualified dividends · LTCG eligible
VXUS
Intl Developed + EM 25% $26,361 Foreign tax credit only works in taxable
VTEB
Municipal Bonds (tax-free) 20% $21,088 Muni coupons are federal tax-free
VUG
US Growth (opt, tilt) 5% $5,272 Low yield = low current tax drag
KEY: No BND (taxable bonds) here — their ordinary-income coupons would be taxed at marginal rates. Bond allocation stays inside the IRA where it's tax-deferred. VTEB (munis) is the taxable-account equivalent for the fixed-income sleeve.
TIMING · 3-MONTH DCA
Month 1 $35,000
Month 2 $35,000
Month 3 $35,442
ANNUAL INCOME SHIFT
Before: MM interest @ 4.5% $6,995/yr
After: blended 2.8% yield $4,364/yr
Expected growth @ 6.8% $7,170/yr
TRADE-OFF: You lose ~$3,700 in known MM interest, gain ~$7,100 in expected growth (+ dividends/distributions). Net expected improvement ~$3,400/yr plus tax-advantaged treatment on most of it.
⚠ New Position · Taxable Brokerage
NIO · concentrated loss & tax-harvest opportunity
−73.16% · ACT SOON
SymbolNIO · NIO Inc. Sponsored ADRs
Quantity2,417.571 shares
Current Price$6.695 (−$0.135 / −1.98%)
Current Value$16,185.63
Cost Basis$60,292.70 ($24.94/sh)
Unrealized Loss−$44,107.07 (−73.16%)
52-Week Range$3.34 — $8.02 · current near top
◆ Tax-Loss Harvest Math
Realized loss if sold today
−$44,107
Deduct vs. ordinary income
$3,000
Immediate tax refund @ 24%
+$720
Carryforward (indefinite)
$41,107
Future gain offset potential
+$9,865
Total tax value
~$10,585
Wash-sale rule: do not repurchase NIO (or "substantially identical" ADR) within 30 days of sale or the loss is disallowed. Rotating into a broad EV ETF (e.g., IDRV) is allowed.
RECOMMENDATION
Sell the entire NIO position. At 0.66% of total portfolio, the concentration risk isn't material — but the loss is. Realizing it crystallizes a ~$10K tax benefit and frees $16K to redeploy into the optimized ETF core at your chosen risk level (below). Price is at the top of the 52-week range, so this is also the best exit point in a year.
Inventory · From Fidelity PDF
Current positions · aggregated across accounts
22 Holdings
Symbol / Fund Current Value % of Port. Cost Basis Gain/Loss Accounts
FCTDX
Strategic Advisers® Core Income / Multi-Manager
$1,193,52549.14% $885,538 +$307,987 (+34.8%) Rollover + Roth
FIWGX
Strategic Advisers® Fidelity International
$448,15318.45% $406,989 +$41,164 (+10.1%) Rollover + Roth
FUSIX
Strategic Advisers® Fidelity US Total Stock
$335,89413.83% $236,281 +$99,612 (+42.2%) Rollover + Roth
FGOMX
Strategic Advisers® Growth Opportunities
$173,0227.12% $107,063 +$65,959 (+61.6%) Rollover + Roth
FSPWX
Fidelity SAI Inflation-Focused
$63,8372.63% $61,393 +$2,444 (+4.0%) Rollover + Roth
FSCJX
Fidelity SAI Canadian Natural Resources
$50,1052.06% $38,402 +$11,702 (+30.5%) Rollover + Roth
FBLTX
Fidelity SAI Long-Term Treasury Index
$36,7871.51% $36,698 +$89 (+0.2%) Rollover + Roth
FFPLX
Strategic Advisers® Fidelity Core Income
$31,4791.30% $31,387 +$92 (+0.3%) Rollover + Roth
FSAOX
Strategic Advisers® Short Duration
$27,2031.12% $26,222 +$981 (+3.7%) Rollover + Roth
FIFGX
Fidelity SAI Inflation-Focused Growth
$23,5810.97% $14,700 +$8,880 (+60.4%) Rollover + Roth
FDRXX
Fidelity Government Money Market (cash)
$18,8100.77% $18,810 Rollover + Roth
FSRJX
Fidelity SAI Real Estate Index
$11,2680.46% $10,190 +$1,078 (+10.6%) Rollover + Roth
FSHGX
Fidelity SAI High-Yield Income
$7,1510.29% $5,027 +$2,124 (+42.2%) Rollover + Roth
FZOLX
Fidelity SAI Low Duration Income
$3,3470.14% $205 +$3,142 Rollover + Roth
FAGIX
Fidelity Capital & Income (high-yield bond)
$2,3990.10% $1,866 +$533 (+28.6%) Rollover + Roth
FSRIX
Fidelity Advisor Real Estate Income
$2,3480.10% $1,991 +$358 (+18.0%) Rollover + Roth
FDFIX, FITFX, FLAPX, FLXSX, FUENX, FLGXX
Residual micro-positions in Individual account (<$15 combined)
~$120.00% ~$10 +$2 Individual
NIO ⚠
NIO Inc. Sponsored ADRs · 2,417.571 sh · Taxable Brokerage
$16,1860.66% $60,293 −$44,107 (−73.16%) Brokerage X66939856
TOTAL · 23 POSITIONS $2,445,105 100.00% $1,943,065 +$502,040 (+25.85%) 4 accounts
Inferred from fund mandates
Current asset mix estimate
Approx.
US Equity
FCTDX, FUSIX, FGOMX
~62%
International Equity
FIWGX, FSCJX
~20%
Core Bonds
FFPLX, FSAOX, FBLTX
~4%
Inflation / TIPS
FSPWX, FIFGX
~3.6%
High-Yield / Credit
FSHGX, FAGIX, FZOLX
~0.6%
Real Estate
FSRJX, FSRIX
~0.6%
Cash
FDRXX
~0.8%
⚠ NOTE   Strategic Advisers funds are multi-manager wrappers only available inside Fidelity-managed accounts. The mix above is inferred from their published mandates — verify exact allocations via each fund's latest factsheet before executing the transition.
Complexity Audit
22 funds → 3 ETFs
Simplify
The portfolio is holding seven different Strategic Advisers funds plus a long tail of SAI satellite funds. Nothing in the long tail is large enough to move the needle — 15 of 22 positions combined equal less than $300K (≈12%) and contribute mostly fee drag without diversification benefit.
Top 4 Holdings
88.5%
Long-Tail Funds
15 funds
Long-Tail AUM
~$291K
Why the advisor did this:
Multi-manager wrapper funds justify the advisory fee by looking "diversified." But for a taxable-free IRA of this size, a 3-ETF index portfolio captures the same beta at roughly 1/25th the cost.
Strategy Comparison
Current vs. optimized allocation
3-Fund Target
Current · Fidelity Managed

Wrap account sprawl

Symbol
Role
Weight
Est. ER
FCTDX
Core US / Multi-mgr
49.1%
~0.55%
FIWGX
International
18.5%
~0.60%
FUSIX
US Total Stock
13.8%
~0.35%
FGOMX
Growth Opps
7.1%
~0.70%
+18 more
Satellite / credit / TIPS
11.5%
~0.45%
Blended ER
~0.52%
+ Advisory Fee
0.45% (actual)
TOTAL DRAG: ~0.97% · $24,106/yr on $2.48M · advisor $11,190 + ER $12,916
Proposed · Self-Directed

Three-fund core

Symbol
Role
Weight
ER
VTI
US Total Stock Market
60%
0.03%
VXUS
Total International
20%
0.07%
BND
Total US Bond Market
18%
0.03%
VNQ
Real Estate (optional)
2%
0.13%
22 funds → 3–4 ETFs
100%
Blended ER
~0.04%
Advisory Fee
$0
TOTAL DRAG: ~0.04% · $972/yr on $2.43M
Fidelity-native alternative (zero commission, no ETF premium):   FZROX (US Total, 0.00%)  ·  FZILX (Intl, 0.00%)  ·  FXNAX (US Bonds, 0.025%)  — blended ER < 0.01%. Either path saves essentially the same amount.
Interactive · Module 04
Risk tolerance selector · portfolio auto-rebalances
Moderate Aggressive
Risk Profile
Moderate Aggressive
CONSERVATIVE MOD. CONS. MODERATE MOD. AGGR. AGGRESSIVE
US Equity VTI · Vanguard Total Stock
60%
International VXUS · Total Intl Stock
20%
US Bonds BND · Total Bond Market
18%
Real Estate VNQ · Vanguard REIT
2%
Expected Return
7.8%
± 13% volatility (1σ)
Worst Year (5th %ile)
-17%
Historical stress scenario
Time Horizon Fit
10+ yrs
Accepts equity drawdown cycles
REBALANCE TO TARGET · $2.45M TOTAL
BUY
VTI US Total Stock Market
$1.59M · 60%
BUY
VXUS Total International
$531K · 20%
BUY
BND US Total Bond Market
$478K · 18%
BUY
VNQ Real Estate (REIT)
$53K · 2%
→ Execute inside IRAs · zero tax · rebalance back to these targets when drift exceeds ±5%
Interactive · Module 04b
Phased deployment planner · pilot first, scale in
$50K pilot → 6-mo rollout
Start small to verify mechanics: a $50K pilot exercises dividend routing, fractional shares, and Fidelity's trade confirmation flow. Once the pilot is clean (usually 2-4 weeks), migrate the remaining wrap funds on a cadence you choose. All trades execute inside the IRAs — zero tax consequence regardless of pacing.
Pilot Tranche Size $50,000
$10K$125K$250K
Rollout Period 6 months
1 mo6 mo12 mo
◆ Week 1 · Pilot Tranche
BUY
VTI US Total Stock Market
$30,000 · 60%
BUY
VXUS Total International
$10,000 · 20%
BUY
BND US Total Bond Market
$9,000 · 18%
BUY
VNQ Real Estate (REIT)
$1,000 · 2%
→ Fund source: sell ~$50K of wrap-fund micro-positions in Rollover IRA (FSHGX + FSRJX + FIFGX + FZOLX + FAGIX + FSRIX cover the full $50K and eliminate 6 of the 15 long-tail funds)
Scheduled Tranches · After Pilot
Month Tranche $ Cumulative Moved Wrap Remaining % Complete
May 2026 $405,644 $455,644 $2,028,222 18%
Jun 2026 $405,644 $861,289 $1,622,577 35%
Jul 2026 $405,644 $1,266,933 $1,216,933 51%
Aug 2026 $405,644 $1,672,577 $811,289 67%
Sep 2026 $405,644 $2,078,222 $405,644 84%
Oct 2026 $405,644 $2,483,866 $0 100%
Full Rollout By
Oct 2027
~25 weeks from today
Excess ER During Transition
~$2,921
Wrap ER on unmoved AUM
Cost of Waiting
~$974/mo
vs. immediate full transition
◆ Executable at current prices
VTI → buy 100.53 shares @ $298.42 = $30,000
VXUS → buy 155.81 shares @ $64.18 = $10,000
BND → buy 121.87 shares @ $73.85 = $9,000
VNQ → buy 10.71 shares @ $93.40 = $1,000
✓ Why phase in
  • Validates trading mechanics at small scale first
  • Reduces regret risk if market drops post-transition
  • Lets you verify dividend reinvestment & tax-lot settings
  • Behavioral comfort — easier to pull the trigger
⚠ Why not wait forever
  • Wrap-fund ERs (~0.52%) keep running on unmoved AUM
  • Lump-sum historically beats DCA ~67% of the time
  • You're already invested — this is a swap, not new exposure
  • 12-month rollout costs ~$6K more than 3-month
Module 05 · Macro Snapshot
Market conditions · April 2026
Late-cycle · Mixed
S&P 500 P/E
22.4×
▲ Above 20-yr avg (17.8×)
10-Yr Treasury
4.18%
● Attractive bond yields
CPI YoY
2.4%
● Near Fed 2% target
Fed Funds
3.75%
● Cutting cycle underway
VIX
16.8
● Low-vol regime
Yield Curve
+42bp
▲ Re-steepened, positive
USD Index (DXY)
99.4
▼ Weakening — INTL tailwind
HY Credit Spread
312bp
▲ Compressed · complacency
◆ Tailwinds
  • Fed cutting cycle supports bond duration and long-dated equities
  • Inflation near target removes the 2022-era headwind
  • Weaker dollar benefits international equities (VXUS tailwind)
  • 4.2% nominal bond yields offer real return after inflation — best BND entry in a decade
⚠ Risks to monitor
  • US equity P/E 25% above historical mean — mean-reversion risk
  • Mega-cap concentration (top 10 = 33% of S&P 500)
  • Compressed credit spreads = asymmetric downside if regime turns
  • Geopolitical (China EV trade, Middle East energy) ongoing
■ IMPLICATION FOR THE TRANSITION
With valuations elevated and rates at a decade-high entry point, this is a favorable moment to add bond exposure and reduce the concentrated single-stock risk (NIO). The advisory-wrap structure is costing ~0.98% in a market where expected forward-10-year returns are ~6–7% — meaning the advisor fee alone consumes ~7–8% of expected return before any drawdowns, and the full fee drag ~14–16%.
Module 05b · Diversification Overlay
Risk mitigation sleeves · uncorrelated return streams
Optional · +3 to 5 holdings
The 4-fund core is efficient, but it compresses into two risk factors: US equity beta and US duration. Small allocations (3–5%) to genuinely uncorrelated assets — gold, TIPS, long Treasuries, managed futures — historically reduce drawdowns by 5–10 points with only a modest hit to expected return. This is the one place where adding more holdings actually improves the portfolio.
GLDM
ER 0.10%
SPDR Gold MiniShares
Crisis and inflation hedge. Shines in currency debasement, geopolitical shocks, and real-rate declines.
ρ to SPY
+0.05
Best regime
Inflation ↑
Suggest
5%
VTIP
ER 0.03%
Vanguard Short TIPS
Inflation-linked Treasuries, 0–5 year maturity. Direct CPI pass-through without long-duration rate risk.
ρ to SPY
+0.10
Best regime
Stagflation
Suggest
5%
VGLT
ER 0.04%
Vanguard Long Treasury
20+ year Treasuries. The "classic" equity crash hedge — rallies hardest in flight-to-quality.
ρ to SPY
−0.15
Best regime
Recession
Suggest
3%
DBMF
ER 0.85%
iMGP DBi Managed Futures
Trend-following across commodities, rates, currencies. The rare asset that rose during 2022's bond crash.
ρ to SPY
−0.05
Best regime
Sharp trends
Suggest
3%
SGOV
ER 0.07%
iShares 0–3 Mo T-Bill
Cash-equivalent yielding ~4% with near-zero duration. Dry powder for rebalancing into drawdowns.
ρ to SPY
0.00
Best regime
Volatility
Suggest
2%
USMV
ER 0.15%
iShares Min Volatility US
US equities screened for lowest historical volatility. Captures ~80% of upside with ~60% of drawdown.
ρ to SPY
+0.95
Role
Swap VTI
Suggest
~10% of US
Core Only · 4 funds

Moderate Aggressive base

VTI
US Total Stock
60%
0.03%
VXUS
International
20%
0.07%
BND
US Bonds
18%
0.03%
VNQ
Real Estate
2%
0.13%
Exp. Return
7.8%
Volatility
13%
Core + Hedges · 8 funds

Resilient enhanced mix

VTI
US Total Stock
50%
0.03%
VXUS
International
18%
0.07%
BND
US Bonds
12%
0.03%
GLDM
Gold
5%
0.10%
VTIP
Short TIPS
5%
0.03%
VGLT
Long Treasury
3%
0.04%
DBMF
Managed Futures
3%
0.85%
SGOV
T-Bills (cash)
2%
0.07%
VNQ
Real Estate
2%
0.13%
Exp. Return
7.3%
Volatility
10.2%
Expected Return
7.3%
▼ −0.5% vs core
Volatility (1σ)
10.2%
▼ −2.8 points
Max Drawdown Est.
−25%
▲ +10pts improvement
Sharpe Ratio
0.53
▲ +0.11 vs core (0.42)
◆ THE TRADE-OFF
You give up roughly 0.5% of expected return (~$12K/year on $2.45M) in exchange for ~22% less volatility and a 10-point improvement in worst-case drawdown. For a portfolio of this size where capital preservation matters as much as growth, that's a favorable trade — the Sharpe ratio actually improves. Place GLDM, VGLT, and DBMF in the Traditional Rollover IRA (their returns are tax-inefficient); keep growth equities in Roth.
Minimalist alternative: if 8 funds feels like too much after spending years in a 22-fund wrap, the Pareto version is just + GLDM 5% and + VTIP 5% (6 funds total). Captures ~70% of the volatility reduction with far simpler bookkeeping.
Module 06 · Monte Carlo Model
Portfolio projections · 1, 3, and 5 years
Moderate Aggressive
Range reflects 5th / 50th / 95th percentile outcomes on a $2,445,105 starting portfolio, net of 0.04% self-managed ER. Updates live as you adjust the risk slider above.
Horizon
1 yr
Pessimistic $2.31M
Expected $2.86M
Optimistic $3.54M
Median gain: +$207K (+7.8%)
Horizon
3 yr
Pessimistic $2.30M
Expected $3.32M
Optimistic $4.81M
Median gain: +$671K (+25.3%)
Horizon
5 yr
Pessimistic $2.39M
Expected $3.86M
Optimistic $6.23M
Median gain: +$1.21M (+45.6%)
Projection Fan · Self-Managed vs. Status Quo
$5.5M $4.0M $3.0M $2.0M Now 1 yr 3 yr 5 yr $3.86M $3.18M
Self-managed median 5–95th percentile range Status quo (Fidelity managed)
Opportunity Cost
20-year fee savings projection
7% Growth Assumption
$9M $7M $5M $3M Now Y5 Y10 Y15 Y20 $9.33M $7.82M +$1.51M
Self-managed · 6.96% net Fidelity managed · 6.02% net (actual 0.98% drag)
20-Year Delta
+$1.51M
Entire ending difference
10-Year Savings
+$401K
Compounded, after fees
Annual Fee Today
$23,820
At 0.98% all-in · actual Q1 run-rate
First-Year Savings
$22,848
Goes back into the portfolio
Execution Plan
Six-step transition roadmap
~2 weeks total
i.
Prepare · Day 1
Audit & document

Pull position, cost-basis, and performance reports for all three accounts. Screenshot or export CSV while the managed account is still active.

  • Download Positions.pdf + Activity YTD
  • Note advisory fee billed last quarter
  • Capture target allocation (70/30, 80/20, etc.)
ii.
Strategy · Day 2-3
Define your IPS

Write a one-page Investment Policy Statement: target allocation, rebalance band, tax-lot method, and withdrawal plan. This prevents mid-transition drift.

  • Asset mix: 60/20/20 or 70/20/10
  • Rebalance band: ±5% or annual
  • Emergency cash outside IRAs
iii.
Terminate · Day 4
Exit the managed program

Call Fidelity Wealth Management and request termination of the Strategic Advisers wrap. Ask for accounts to revert to self-directed at the same account numbers.

  • Phone: 1-800-FIDELITY
  • Confirm fee proration for current quarter
  • Keep the Rollover IRA / Roth IRA numbers
iv.
Liquidate · Day 5-7
Sell the wrap funds + harvest NIO

In IRAs: sell all 22 positions to cash — zero tax. In the brokerage: sell all 2,417 NIO shares to realize the $44,107 loss for tax-loss harvesting. Mutual funds settle T+1.

  • IRAs: sell 22 wrap funds at NAV strike
  • Brokerage: market-sell NIO · observe 30-day wash-sale rule
  • Confirm 1099-B will report the $44K loss
v.
Deploy · Day 8-9
Buy the new core

Reinvest settled cash into the 3-fund ETF portfolio (VTI / VXUS / BND) or Fidelity equivalents (FZROX / FZILX / FXNAX). Use limit orders for ETFs.

  • Rollover IRA: $1,265K VTI · $422K VXUS · $379K BND
  • Roth IRA: $192K VTI · $64K VXUS · $58K BND · $6K VNQ
  • Prefer high-growth (VTI) weighted in Roth
vi.
Maintain · Ongoing
Automate rebalance

Set a calendar reminder for quarterly review. Rebalance only when drift exceeds ±5% or annually, whichever comes first. Feed activity back into this dashboard.

  • Q1 / Q3 review dates
  • Log trades in Meridian CSV importer
  • Review IPS annually in January
Asset Location
Roth vs. Traditional placement

The Roth IRA grows tax-free and is never subject to RMDs — it's the ideal bucket for the highest-expected-return assets. The Traditional Rollover pays ordinary income on withdrawal, so the expected-return arbitrage is worth optimizing.

ROTH IRA ($320K)
Overweight US equity (VTI) + small allocation to REIT/international for growth. Avoid bonds here.
ROLLOVER IRA ($2.11M)
Hold the bond allocation (BND) + bulk of international (VXUS) + the remaining US equity. RMDs start at age 73/75.
Risk Watch
Things to confirm
  • ◆ IRA STATUS
    Confirm both accounts are genuine IRAs (not taxable) before liquidating. The PDF shows Y98144803 = Rollover IRA, Y82333228 = Roth IRA — both sheltered.
  • ◆ INDIVIDUAL ACCOUNT
    The $12 Individual account (Y84246571) contains taxable fractional shares. Selling creates tiny gains (<$5). Safe to liquidate or let Fidelity auto-close.
  • ◆ EXIT FEES
    Strategic Advisers funds sometimes carry redemption fees on early exit. Verify with Fidelity — wrap funds are usually fee-free for managed-account holders.
  • ◆ RMD TIMING
    If you're within 2 years of RMD age, coordinate first RMD from the Rollover IRA before repositioning to avoid mid-trade forced distributions.
  • ◆ BEHAVIORAL
    The biggest risk is post-transition inaction. Meridian's rebalance engine exists precisely to replace the discipline the advisor was providing.
⬢ Summary

$25,700 per year, $1.7M over 20 years.

The Fidelity Professionally Managed program is a high-quality product — and an expensive one. With 100% of assets sheltered in IRAs, the cost of leaving is zero and the one-time operational lift (two weeks, a dozen trades) repays itself before the next quarterly advisory fee would have cleared.

■ What stays the same

Account numbers, tax treatment, Fidelity as the custodian, core allocation. This is a FEE & COMPLEXITY change, not a risk profile change.

■ What you take on

One rebalance per year. Set a calendar reminder. Meridian's Module 02 generates the exact trade list — no spreadsheet math required.

API Access · Optional
Enter your Anthropic key to enable AI chat when deployed outside Claude.ai
▼ Expand
Portfolio Registry · Live
Your holdings — add, edit, or remove any ticker
✓ SAVED LOCALLY
Layer 01 · Skills
Technical indicator analysis — your holdings
↻ Refresh
Skill 01 · Momentum
RSI oscillator
Computing…
Skill 02 · Trend
MACD crossover
Computing…
Skill 03 · Volatility
Bollinger bands
Computing…
Skill 04 · Risk
ATR volatility
Computing…
Skill 05 · Sentiment
Fear/greed score
Computing…
Skill 06 · Macro
Rate regime
Computing…
Skill 07 · Moving Averages
50/200-day cross
Computing…
Simple Rules — Bullish Regime
Price above 200-day MA → Uptrend confirmed
50-day MA above 200-day MA → Momentum bullish
🟢 Golden Cross — 50-day crosses ABOVE 200-day · Signals new bull market · Buy or hold full position
Simple Rules — Bearish Regime
Price below 200-day MA → Downtrend in force
50-day MA below 200-day MA → Momentum bearish
🔴 Death Cross — 50-day crosses BELOW 200-day · Signals bear market · Reduce or hedge exposure
Holdings · Indicator Matrix
Retirement Investing · 5 Golden Rules
Time-tested principles + recommended funds
▼ Show Fund Details
Rule 01
Own broad
low-cost funds
Total market · international
YOUR CORE
Rule 02
Bonds & cash
for stability
Buffer against volatility
IN PORTFOLIO
Rule 03
Rebalance on
major swings
Not on a calendar — on price
±5% DRIFT
Rule 04
Ignore daily
market noise
Decades beat days
ALWAYS ON
Rule 05
Buy more when
down 15–30%
Fear = opportunity
$200K READY
Layer 02 · Agents
Specialist agents — autonomous analysis
▶ Run All Agents
⬡ Momentum Agent
Trend rider
HOLD
Analyzing EMA crossovers and volume profile across VTI, VXUS, BND…
CONFIDENCE
Ask Momentum Agent →
⬡ Mean Reversion Agent
Extreme fader
HOLD
Checking RSI extremes and Bollinger Band positioning for reversion setups…
CONFIDENCE
Ask Reversion Agent →
⬡ Risk Management Agent
Portfolio guardian
MONITOR
Auditing ATR, position sizing, concentration risk, and drawdown exposure…
CONFIDENCE
Ask Risk Agent →
⬡ Tax Optimization Agent
Roth optimizer
CAUTION
Cross-referencing Roth conversion window, IRMAA tier, and bracket position…
CONFIDENCE
Ask Tax Agent →
⬡ Macro Regime Agent
Risk-on / off
HOLD
Reading Fed posture, 10-yr yield, CPI trend, and global equity flows…
CONFIDENCE
Ask Macro Agent →
⬡ Rebalance Agent
Drift corrector
DRIFT ALERT
VTI is +2.1% over target. VXUS and BND each lagging by ~2%. Watching…
CONFIDENCE
Ask Rebalance Agent →
Orchestrator Verdict
Awaiting agent consensus
Agents in Agreement
—/6
Composite Signal
PENDING
Click ▶ Run All Agents to engage the full agent stack. Each agent analyzes your VTI/VXUS/BND/VNQ holdings independently, then the orchestrator weighs their signals and resolves any conflicts into a single portfolio directive.
Layer 03 · Scenario Engine
What-if scenarios — portfolio impact analysis
↻ Re-analyze
Soft Landing
Rate Shock
Recession
Bull Run
Fed achieves soft landing — inflation cools to 2%, rates plateau, GDP steady at 2.1%
Projected Portfolio Impact · 12mo
+8.4%
VTI leads at ~9.2%, VXUS benefits from USD softening (+7.8%), BND recovers +3.1% as yields stabilize.
Roth Conversion Window
OPTIMAL
Stable markets and predictable income = ideal year to maximize conversion to top of 24% bracket before portfolio appreciation.
RECOMMENDED AGENT ACTIONS
01.
Momentum agent → BUY signal. Maintain full equity weight in VTI. Consider slight tilt toward growth within Roth (VUG ~5%).
02.
Tax agent → CONVERT NOW. Execute $145K–$165K Roth conversion before year-end. MAGI lands at ~$208K — IRMAA Tier 1 but worth the premium.
03.
Rebalance agent → TRIM VTI +2.1% drift. Sell ~87 shares VTI, redeploy to VXUS (+214 sh) and BND (+166 sh) to return to 60/20/20.
04.
Risk agent → HOLD current cash buffer. $200K MM reserve adequate. No position size reduction needed in this regime.
Rate shock — Fed pivots hawkish, 10-yr yield spikes to 5.4%, bond prices drop sharply
Projected Portfolio Impact · 12mo
−4.2%
BND suffers −8 to −12% price decline. VTI pulls back −5 to −8%. VXUS cushions as international diverges from US rate path.
Roth Conversion Opportunity
ELEVATED
Depressed IRA values = lower tax cost to convert the same number of shares. Rate shock years are historically best conversion timing.
RECOMMENDED AGENT ACTIONS
01.
Risk agent → REDUCE BND duration. Shift from BND to shorter-duration VGSH or VTIP to reduce rate sensitivity while keeping bond allocation.
02.
Tax agent → ACCELERATE conversions. Lower IRA values = same dollar amount converts MORE shares. Increase Roth target to $175K–$185K if bracket allows.
03.
Momentum agent → HOLD equities. VTI drawdowns in rate shock environments typically recover within 12–18 months. Do not sell into weakness.
04.
Macro agent → RAISE cash buffer. Consider increasing MM reserve from $200K to $250K temporarily. 5%+ yield on cash is itself a return in this scenario.
Recession — GDP contracts −1.5%, unemployment rises to 6.2%, equity bear market −20 to −35%
Projected Portfolio Impact · 12mo
−18% to −28%
VTI leads decline. VXUS follows. BND rallies +5–8% as flight-to-safety pushes yields down. MM cash holds value.
Dollar Amount at Risk
−$430K to −$680K
Based on $2.48M IRA AUM. Temporary on paper — time horizon with Chadia's younger age (20+ yr) means full recovery is expected.
RECOMMENDED AGENT ACTIONS
01.
Reversion agent → PHASED BUY. Use the $200K MM reserve to DCA into VTI at -15%, -20%, -25% drawdown levels. Recessions are the best long-term entry points.
02.
Tax agent → MAXIMIZE conversion. Largest possible Roth conversion at depressed values. A $145K conversion buys ~40% more VTI shares in a -30% market.
03.
Risk agent → DO NOT SELL equities. IRAs have no liquidity need. Chadia's income covers living expenses. Time in market dominates timing the market.
04.
Rebalance agent → OVERWEIGHT BND temporarily. Allow bond allocation to drift to 25–28% during acute phase — the flight-to-safety premium offsets equity drag.
Bull run — AI productivity boom, S&P +24%, sustained low inflation, rate cuts resume
Projected Portfolio Impact · 12mo
+18% to +24%
VTI outperforms at +22–26%. VXUS follows at +14–18%. BND lags at +1–3%. Portfolio could approach $3M AUM.
IRMAA Risk
ELEVATED
Roth conversion + strong market could push MAGI toward Tier 2 ($258K+). Needs careful income planning to avoid $175/mo Medicare surcharge jump.
RECOMMENDED AGENT ACTIONS
01.
Tax agent → CAP conversion carefully. In a bull run year, Roth conversions are more expensive per share. Consider reducing conversion to $100K–$120K to stay firmly in Tier 1 IRMAA.
02.
Momentum agent → LET WINNERS RUN. No need to rebalance VTI aggressively in a bull market. Allow equity weight to drift to 65–67% before trimming.
03.
Rebalance agent → WIDEN BANDS. In trending markets, tight rebalancing (±3%) costs returns. Temporarily widen to ±7% to capture the bull phase fully.
04.
Risk agent → REVIEW IN Q4. If portfolio exceeds $3M, revisit bond allocation. At $3M+ you can afford slightly more defensive posture without sacrificing long-term compounding.
Layer 04 · AI Portfolio Assistant
Ask anything — portfolio-aware Claude
Hello. I'm your Meridian AI assistant — I have full context of your portfolio: $2.48M IRA AUM, holdings in VTI/VXUS/BND, active Roth conversion strategy, IRMAA Tier 1 watch, and the Fidelity transition in progress. Ask me anything about your positions, signals, or scenarios.
Total Capital
$1,000,000
Deployment ready · June 2026
Week 1 Deploy
$450,000
NVDA · LMT · GLD · SLV · SGOV
Dry Powder
$200,000
SGOV @ 5%+ · trigger-based deploy
Base Case 3yr
$1,520,000
+52% · ~15% CAGR · soft landing
Capital Allocation
Portfolio weight by conviction bucket
AI Infra 25% · $250K Defense 15% · $150K Hard Assets 15% · $150K Income 15% · $150K Cash/T-bills 20% · $200K Asymmetric 10% · $100K
Tranche 01 · AI Infrastructure · Highest Priority
$250,000 — picks & shovels
Paid regardless of which model lab wins · $700B hyperscaler capex flowing through these names in 2026
25%
TickerPositionThesisSharesAllocationEntryConviction
NVDA
Nvidia — core AI chip position
$225.61 today · analyst target $296 · 33% upside · revenue +85% YoY · Blackwell + Vera Rubin cycle runs to 2028
390 $88,000 Limit $226
ANET
Arista Networks — networking layer
10–15% of every AI cluster cost · Meta + MSFT anchor customers · mission-critical, customers pay premium
~80 $68,000 Limit order
VRT
Vertiv — power & liquid cooling
GPU rack densities above 100kW force liquid cooling shift · consistently beats guidance · backlog visible to 2027
~420 $52,000 Dip entry
MRVL
Marvell Technology — custom ASICs
AWS + MSFT custom chip designs · Jensen Huang called it "next trillion-dollar company" · custom ASIC revenue +20% FY27
~480 $42,000 Market
Tranche 02 · Defense · Buy The Dip
$150,000 — geopolitical tailwind
LMT down −24.6% in 3 months from all-time high $692 · analyst target $637 · 2.6% dividend while you wait
15%
TickerPositionThesisSharesAllocationEntryConviction
LMT
Lockheed Martin — core US defense
$516.50 today · was $692 in March · P/E 25 · $200M+ contracts this week alone · THAAD + F-35 + missile programs
145 $74,900 Limit $515
RTX
RTX Raytheon — ordnance & systems
Patriot + THAAD missiles used in every active conflict zone · long-dated government contracts · dividend grower
~400 $50,000 Market
ITA
iShares Defense ETF — broad basket
US + European rearmament exposure in one ticker · diversifies idiosyncratic risk across the entire theme
~120 $25,100 Market
Tranche 03 · Hard Assets · Highest Conviction
$150,000 — macro hedge + real return
Gold $4,534 today · Goldman target $4,500–$5,000 · central banks are structural buyers · de-dollarization irreversible
15%
TickerPositionThesisSharesAllocationEntryConviction
GLD
Gold ETF — monetary hedge
$4,534 today · foreign central banks now hold more gold than US Treasuries · conviction buyers don't sell on bad days
~175 $75,000 Buy at market
SLV
Silver ETF — industrial + monetary
Solar panel + EV demand on top of monetary demand · OCBC target $95 by mid-2027 · more upside than gold from here
~800 $40,000 Market
COPX
Copper miners ETF — supply crunch
AI data centers + EV buildout + power grid upgrades = copper supercycle · supply constrained · rate cuts add fuel
~600 $35,000 Dip entry
Tranche 04 · Income + Diversification
$150,000 — cash flow while waiting
6.4% carry on EM bonds vs 3.2% global aggregate · dividends reinvested until Year 2 then used as rebalancing fuel
15%
TickerPositionThesisSharesAllocationYieldConviction
EMB
iShares EM Bonds
6.4% carry · outperformed developed market bonds 20+ years on risk-adjusted basis · Fed rate cuts = price appreciation on top
~800 $75,000 6.4%
SCHD
Schwab Dividend ETF
Dividend growth quality screen · defensive in volatile markets · 3.5%+ yield · outperforms in late-cycle environments
~700 $75,000 3.5%
Tranche 05 · Dry Powder · Strategic Reserve
$200,000 in SGOV — earning 5%+ while waiting
This is not idle cash. At 5%, $200K generates $10,000/yr risk-free. Deployed only when specific triggers fire
20%
T1 ·
Any single position drops −15% or more from entry price
Deploy $50,000 → average down
T2 ·
S&P 500 drops −10% or more from current level (~5,400)
Deploy $75,000 → VTI/NVDA split
T3 ·
New high-conviction play emerges (SpaceX IPO, nuclear approval, new catalyst)
Deploy $50,000 → new position
FLOOR ·
Permanent minimum cash reserve — never go below $50,000 regardless of triggers
$50,000 permanent brake
$200K × 5% = $10,000/yr risk-free yield while waiting · In volatile markets, cash earning 5% is not laziness — it's optionality with a coupon.
Tranche 06 · Asymmetric Bets · High Risk
$100,000 — sized for total loss tolerance
If all go to zero, the other $900K is fine. If any one 5×, it changes the whole portfolio permanently
10%
TickerPositionThesisSizeAllocationRuleConviction
BTC
Bitcoin — de-dollarization play
$68,473 today · institutional adoption structural · de-dollarization accelerating · size so a 50% drop = acceptable loss
0.58 BTC $40,000 Cold storage
OKLO
Oklo — nuclear micro-reactors
AI data centers need baseload power · nuclear is the only zero-carbon dispatchable option · long timeline but multi-bagger potential
~1,400 sh $30,000 Hold 3yr
RKLB
Rocket Lab — space infrastructure
SpaceX S-1 creates a public market category · RKLB is the pure-play alternative with real operational launches
~1,500 sh $30,000 No stop
Execution Plan
How to deploy $1M without chasing
Week 1 · $450,000
$450K
Buy NVDA, LMT, GLD, SLV at market open Monday with limit orders within 0.5% of current price. Park all remaining cash immediately in SGOV — start earning day one. Do not wait.
Weeks 2–3 · $250,000
$250K
Add ANET, VRT, RTX, ITA, EMB, SCHD, COPX. Spread over two weeks — avoid deploying everything at a single price point. Watch for intraday dips; ANET and VRT can move ±5% in a single week.
Week 4 · $100,000
$100K
Deploy speculative tranche: BTC, OKLO, RKLB. BTC moves to cold storage immediately after purchase. The $200K dry powder stays in SGOV earning 5%+ until one of the four triggers fires.
Scenario Analysis · 3-Year Horizon
Projected outcomes — rough math, not a guarantee
◆ Bear Case · Recession
$820,000
AI bubble deflates, NVDA −40%, but defense holds flat and gold surges +20%. Cash buffer absorbs shock. Loss of −18% from start but portfolio structurally intact. The $200K reserve prevents forced selling.
◆ Base Case · Soft Landing
$1,520,000
AI infra +35%, LMT returns to $637 (+23%), gold reaches $5,000, income compounds at 5%+. Total return +52% in 3 years = ~15% CAGR. This is the most probable scenario per current macro signals.
◆ Bull Case · AI Supercycle
$2,100,000+
NVDA hits $500, BTC 3×, gold $5,500, defense rerates to ATH. Asymmetric bets contribute disproportionately. Total return +110% in 3 years. Requires no major recession or geopolitical shock.
Risk Watch
What would change this framework
  • ◆ AI BUBBLE POPS
    Hyperscaler capex guidance cuts dramatically. Rotate AI infra → defensive value + dividend growers immediately. Gold + defense become larger positions.
  • ◆ FED TURNS HAWKISH
    Rate hike surprise crushes EM bonds and growth stocks. Rotate to shorter duration T-bills. Gold accelerates higher. Reduce NVDA position size.
  • ◆ GEOPOLITICAL ESCALATION
    Defense + gold both win simultaneously. Reduce EM bond exposure if escalation is regional. Hold or add to LMT, RTX, ITA.
  • ◆ SOFT LANDING CONFIRMED
    Increase equity weight, trim cash position to $100K, let AI infrastructure run fully. This is the base case but confirmation adds conviction to hold through volatility.
Key Rules
Trader discipline — non-negotiable
  • 01 · NO ALL-IN
    Never deploy 100% at once. The $200K reserve is structural — not optional. Markets reward patience.
  • 02 · HONOR STOPS
    Stop losses on core positions exist for a reason. A −18% stop on NVDA limits max loss on that position to $15,840. Without it, a −60% move costs $52,800.
  • 03 · NO SPECULATIVE STOPS
    Asymmetric bets (BTC, OKLO, RKLB) have no stops. Sized for total loss. Selling these on a −30% move defeats the entire thesis.
  • 04 · QUARTERLY REVIEW
    Review entire portfolio Q3 2026 and Q1 2027. Rebalance if any bucket drifts more than ±5% from target. Log all decisions.
⬡ Disclaimer

This is a framework, not financial advice.

This trade plan is built on public market research, current prices as of June 2, 2026, and a personal investor/trader perspective. Before deploying $1M or any significant capital, consult a licensed financial advisor who knows your full tax situation, risk tolerance, time horizon, and personal circumstances. Harvest Planning is in pre-registration status — this dashboard is a planning tool, not a managed account.

Step 1 · Fidelity.com
How to download your positions CSV
▼ Show instructions
Step 2 · Import
Drop your Fidelity CSV files
✕ Clear all
Drop Fidelity CSV here
or click to browse · accepts .csv files
Rollover IRA Roth IRA