Files
fegger 0cf37e786a Add comprehensive project documentation and fix data pipeline
- Add detailed README with architecture diagram and usage instructions
- Add API, configuration, and development documentation
- Fix price data column handling for yfinance auto_adjust=True
- Fix model feature dimension indexing and temporal attention batching
- Add missing imports and position tracking in paper broker
- Add python-dotenv support for environment variables
- Update .gitignore with Python artifacts and environment files
2026-05-26 14:10:48 +02:00

407 lines
5.6 KiB
Markdown

# API Reference
Base URL: `http://localhost:8000`
---
## Dashboard
### `GET /api/dashboard/metrics`
Returns current system metrics.
**Response:**
```json
{
"memory": {
"allocated_gb": 4.2,
"max_allocated_gb": 5.1,
"total_gb": 32.0,
"limit_gb": 28.8,
"usage_percent": 13.1,
"free_gb": 24.6
},
"account": {
"cash": 100000.00,
"total_value": 100000.00,
"positions_count": 0,
"positions": {}
},
"model": {
"status": "loaded",
"device": "cuda",
"amd_gpu": true,
"mixed_precision": true,
"precision": "bf16",
"hidden_channels": 128,
"num_heads": 16,
"batch_size": 128,
"learning_rate": 0.0005
},
"system": {
"project_name": "StockGNN_R9700",
"version": "1.0.0",
"training_active": false,
"trading_active": false
}
}
```
### `GET /api/dashboard/logs?limit=100`
Returns recent log entries.
**Response:**
```json
{
"logs": [
"[2024-01-15 09:30:00] Trading started",
"[2024-01-15 09:30:02] Model loaded from models/stock_gnn_r9700.pt"
],
"total": 2
}
```
### `POST /api/dashboard/logs/clear`
Clears stored logs.
**Response:**
```json
{"status": "cleared"}
```
---
## Trading
### `GET /api/trading/status`
**Response:**
```json
{
"active": false,
"cash": 100000.00,
"total_value": 100000.00,
"positions": {},
"orders_count": 0
}
```
### `POST /api/trading/start`
Starts live trading.
**Response:**
```json
{"status": "started"}
```
### `POST /api/trading/stop`
Stops live trading.
**Response:**
```json
{"status": "stopped"}
```
### `GET /api/trading/orders`
Lists all orders.
**Response:**
```json
[
{
"order_id": "abc-123",
"ticker": "AAPL",
"action": "buy",
"quantity": 100,
"price": 150.0,
"timestamp": "2024-01-15 09:30:00",
"type": "market",
"status": "filled"
}
]
```
### `POST /api/trading/order`
Submits a manual order.
**Request Body:**
```json
{
"ticker": "AAPL",
"action": "buy",
"quantity": 100,
"price": 150.0,
"timestamp": "2024-01-15 09:30:00",
"type": "market"
}
```
**Response:**
```json
{"status": "submitted", "order_id": "abc-123"}
```
### `POST /api/trading/cancel/{order_id}`
Cancels an order.
**Response:**
```json
{"status": "cancelled"}
```
### `POST /api/trading/positions/close/{ticker}`
Closes a position.
**Response:**
```json
{"status": "submitted", "order_id": "def-456"}
```
### `POST /api/trading/positions/close-all`
Closes all positions.
**Response:**
```json
{
"status": "submitted",
"results": [
{"ticker": "AAPL", "order_id": "ghi-789"}
]
}
```
---
## Models
### `GET /api/models/status`
**Response:**
```json
{
"status": "loaded",
"training_active": false,
"device": "cuda",
"amd_gpu": true,
"mixed_precision": true,
"precision": "bf16",
"model_name": "stock_gnn_r9700",
"hidden_channels": 128,
"num_heads": 16,
"dropout": 0.3,
"learning_rate": 0.0005,
"batch_size": 128,
"epochs": 200,
"sequence_length": 60
}
```
### `POST /api/models/train`
Starts training.
**Response:**
```json
{"status": "started"}
```
### `POST /api/models/train/stop`
Stops training.
**Response:**
```json
{"status": "stopped"}
```
### `POST /api/models/save`
Saves model weights.
**Response:**
```json
{"status": "saved"}
```
### `POST /api/models/load`
Loads model weights.
**Response:**
```json
{"status": "loaded"}
```
### `POST /api/models/benchmark`
Runs performance benchmark.
**Response:**
```json
{
"status": "complete",
"inference_time_ms": 2.341,
"training_time_ms": 8.567,
"inference_throughput": 427.0,
"training_throughput": 116.7,
"memory_allocated_gb": 4.5,
"device": "cuda"
}
```
---
## Data
### `GET /api/data/tickers`
**Response:**
```json
{
"initial": ["AAPL", "MSFT", "GOOGL", ...],
"index": "^GSPC",
"count": 30
}
```
### `GET /api/data/pipeline/status`
**Response:**
```json
{
"status": "ready",
"tickers_loaded": 30,
"db_path": "data/processed/stock_data.db"
}
```
### `POST /api/data/update`
Triggers a full data update.
**Response:**
```json
{"status": "started"}
```
### `GET /api/data/features/{ticker}`
**Response:**
```json
{
"ticker": "AAPL",
"timestamp": "2024-01-15 09:30:00",
"features": {
"AAPL": {
"ticker": "AAPL",
"timestamp": "2024-01-15 09:30:00",
"return": 0.0,
"volatility": 0.2,
...
}
}
}
```
### `GET /api/data/price/{ticker}`
**Response:**
```json
{
"ticker": "AAPL",
"date": "2024-01-15 00:00:00",
"open": 150.0,
"high": 152.0,
"low": 149.0,
"close": 151.0,
"adj_close": 151.0,
"volume": 50000000
}
```
### `GET /api/data/prices/{ticker}?limit=30`
**Response:**
```json
[
{
"date": "2024-01-15",
"open": 150.0,
"high": 152.0,
"low": 149.0,
"close": 151.0,
"volume": 50000000
}
]
```
### `GET /api/data/corporate-actions/{ticker}`
**Response:**
```json
{
"ticker": "AAPL",
"actions": {
"splits": {"2020-08-31": 4.0},
"dividends": {"2024-01-10": 0.24}
}
}
```
---
## WebSocket
### Connection
```javascript
const ws = new WebSocket('ws://localhost:8000/ws');
```
### Server → Client Messages
**Type: `metrics`**
```json
{
"type": "metrics",
"timestamp": "2024-01-15T09:30:00.000000",
"memory": {
"allocated_gb": 4.2,
"total_gb": 32.0,
"usage_percent": 13.1
},
"account": {
"cash": 100000.00,
"total_value": 100000.00,
"positions": 0
},
"model": {
"status": "loaded",
"device": "cuda",
"mixed_precision": true,
"precision": "bf16"
}
}
```
### Client → Server Messages
**Ping:**
```json
{"action": "ping"}
```
**Subscribe:**
```json
{"action": "subscribe", "channel": "all"}
```