id: PORTFOLIO-003 title: Physical Gold Premium and Spread status: backlog priority: P1 size: S depends_on: - PORTFOLIO-001 tags: [portfolio, physical-gold] summary: Support dealer premium and bid/ask spread for physical gold positions. acceptance_criteria: - Position can specify `purchase_premium` (dealer markup over spot) - Position can specify `bid_ask_spread` (expected sale discount below spot) - True cost basis = entry_price + purchase_premium - Effective exit value = spot - bid_ask_spread - P&L shows both paper P&L and realized P&L accounting for spread - Default premium/spread values for common products (coins, bars) - Settings page exposes premium/spread inputs for XAU positions notes: - Common gold products: - Gold ETF (GLD): 0% premium (market price), spread ~0.1% - Gold coins (1oz): 3-5% premium, 2-4% spread - Gold bars (1kg): 1-2% premium, 1-2% spread - Allocated storage (Goldmoney, BullionVault): 0.1% premium, 0.3% spread - Premium lowers effective entry price - Spread lowers effective exit price implementation_hints: - Add `purchase_premium: Decimal | None` to `Position` (percentage) - Add `bid_ask_spread: Decimal | None` to `Position` (percentage) - Cost basis formula: `effective_entry = spot_at_entry × (1 + premium)` - Exit value formula: `effective_exit = current_spot × (1 - spread)` - Add premium/spread presets to settings UI