How fbivinay/btc-paper-trader works
Bitcoin ETF Trend Model is a daily paper-trading and portfolio-monitoring product for an Indian resident investing in Bitcoin and gold ETFs alongside T-bills. Its main workflow fetches and validates market data, computes target weights, records immutable decisions, and simulates the portfolio after tax and charges; a separate guarded execution run can send orders, while alerts support manual trading. The dashboard reads the stored record and presents performance, decisions, trades, alerts, and run health. Research compares candidate strategies. Some module internals were not sampled, so links to those documented capabilities are shown only at the orchestrator level.
Main entry points: etf_daily.py Daily orchestrator · page.tsx Dashboard page · etf_research.py Strategy comparison · etf_data.py Market data
Components 18
Daily operation
- Daily orchestrator
ml/etf_daily.py - Market data
ml/etf_data.py - Supabase REST client
ml/db.py - Portfolio database
supabase/schema.sql
Model and portfolio
- Trend model
ml/etf_model.py - Tax portfolio simulation
ml/etf_tax_sim.py
Trading and alerts
- Broker adapter
ml/broker.py
Strategy research
- Strategy comparison
ml/etf_research.py
Dashboard
- Dashboard page
web/app/page.tsx - Browser data client
web/lib/supabase.ts - Performance statistics
web/lib/stats.ts - Equity chart
web/components/EquityChart.tsx - Go-live guide
web/app/go-live/page.tsx
Other components
- Scheduled runs
- Yahoo chart API
- Alpaca brokerage
- Phone push service
- Dashboard user
Connections 19
- Scheduled runs → Daily orchestrator: starts run
- Daily orchestrator → Market data: loads prices
- Market data → Yahoo chart API: fetches quotes
- Daily orchestrator → Trend model: computes weights
- Daily orchestrator → Tax portfolio simulation: simulates portfolio
- Daily orchestrator → Supabase REST client: records and reads
- Supabase REST client → Portfolio database: accesses tables
- Daily orchestrator → Broker adapter: requests rebalance
- Broker adapter → Alpaca brokerage: submits orders
- Daily orchestrator → Phone push service: sends alert
- Strategy comparison → Market data: loads history
- Strategy comparison → Trend model: uses signals
- Strategy comparison → Tax portfolio simulation: judges strategies
- Dashboard user → Dashboard page: views
- Dashboard page → Browser data client: loads records
- Browser data client → Portfolio database: reads tables
- Dashboard page → Performance statistics: calculates metrics
- Dashboard page → Equity chart: renders series
- Dashboard page → Go-live guide: opens guide