31 lines
1.4 KiB
YAML
31 lines
1.4 KiB
YAML
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 |