A professional dashboard for tracking options trading using the wheel strategy. Built with Django (backend) and SvelteKit (frontend).
- Track all your wheel strategy positions (puts and calls)
- Record comprehensive trade data including:
- Open/close dates
- Stock ticker and set number
- Strike price and premium received
- Number of contracts
- Fees (open and close)
- Assignment status
- Notes
The dashboard automatically calculates:
- Profit/Loss: Net P/L after premiums and fees
- AR% if Held to Expiration: Annualized return if position is held through expiration
- AR% of Closed Trade: Actual annualized return for closed positions
- AR% on Realized Premium: Potential AR% if closed at current price (open positions)
- AR% on Remaining Premium: AR% on remaining value until expiration
- Percent Premium Earned: % of premium already captured
- Set Break Even Price: Break-even calculation for put sets
- Collateral Requirement: Capital at risk for each position
- Days to Expiration: Remaining days until expiration
- Days in Trade: Total days held
- Total positions (open vs closed)
- Total P/L across all closed positions
- Total premium collected
- Total collateral at risk
- Average annualized return for closed trades
- List of all stocks traded
- Fetch current option prices from Yahoo Finance
- Update individual positions or all open positions at once
- Automatically calculates mid-price from bid/ask spread
- Filter by stock ticker
- Filter by option type (Put/Call)
- Filter by status (Open/Closed)
- Organize positions by set number for tracking wheels
- Navigate to the project directory:
cd WheelTracker- Install Python dependencies (already installed):
pip install djangorestframework django-cors-headers yfinance-
The database migrations have already been created and applied.
-
Create a superuser for Django admin (optional):
python manage.py createsuperuser- Start the Django development server:
python manage.py runserverThe backend API will be available at http://localhost:8000/api/
- Navigate to the frontend directory:
cd frontend- Install Node dependencies:
npm install- Start the Vite development server:
npm run devThe frontend will be available at http://localhost:5173/
- Click the "+ New Position" button
- Fill in the required fields:
- Open Date: Date you opened the contract
- Stock: Ticker symbol (e.g., AAPL, TSLA)
- Set Number: Track different wheel cycles (default: 1)
- Expiration: Contract expiration date
- Type: Put (P) or Call (C)
- # Contracts: Number of contracts
- Strike: Strike price
- Premium: Premium received per contract
- Open Fees: Total fees paid to open
- Optional fields for closing:
- Close Date: Date position was closed
- Assigned: Yes/No if shares were assigned/called away
- Premium Paid to Close: Amount paid to buy back
- Close Fees: Fees paid to close
- Add any notes about the trade
- Click the refresh icon next to any open position to fetch its current price
- Click "Refresh All Prices" in the summary section to update all open positions
- Prices are fetched from Yahoo Finance (delayed data)
- The main table shows key metrics for each position
- Expand rows (if they have notes or additional data) to see more details
- The Summary section at the top shows portfolio-wide statistics
Use the filter section to:
- Search by stock ticker
- Filter by option type (Put/Call)
- View only open or closed positions
- Click the edit icon to modify a position
- Click the delete icon to remove a position (confirmation required)
GET /api/positions/- List all positionsPOST /api/positions/- Create new positionGET /api/positions/{id}/- Get specific positionPUT /api/positions/{id}/- Update positionDELETE /api/positions/{id}/- Delete position
GET /api/positions/summary/- Get portfolio summaryGET /api/positions/by_stock/?stock=AAPL- Get positions for specific stockPOST /api/positions/{id}/fetch_current_price/- Fetch price for one positionPOST /api/positions/fetch_all_current_prices/- Fetch prices for all open positions
Access the Django admin at http://localhost:8000/admin/ to:
- View all positions in a table format
- Bulk edit positions
- See calculated fields
- Filter and search positions
- All calculations are based on the formulas you specified for wheel strategy tracking
- Premium values are per contract (multiply by 100 for actual dollars)
- Fees should be entered as total amounts (not per contract)
- Date validation ensures close dates are after open dates
- Yahoo Finance data may be delayed and not always available for all strikes/expirations
Potential features to add:
- Export positions to CSV/Excel
- Charts and graphs for performance over time
- Advanced analytics (win rate, best performing stocks, etc.)
- Multi-user support with authentication
- Mobile-responsive design improvements
- Real-time price updates via WebSocket
- Tax reporting features