24 lines
751 B
Python
24 lines
751 B
Python
# -*- coding: utf-8 -*-
|
|
"""Portfolio-related schemas."""
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class Position(BaseModel):
|
|
"""Position information - for Portfolio mode"""
|
|
|
|
long: int = 0 # Long position quantity (shares)
|
|
short: int = 0 # Short position quantity (shares)
|
|
long_cost_basis: float = 0.0 # Long position average cost
|
|
short_cost_basis: float = 0.0 # Short position average cost
|
|
|
|
|
|
class Portfolio(BaseModel):
|
|
"""Portfolio - for Portfolio mode"""
|
|
|
|
cash: float = 100000.0 # Available cash
|
|
positions: dict[str, Position] = {} # ticker -> Position mapping
|
|
# Margin requirement (0.0 means shorting disabled, 0.5 means 50% margin)
|
|
margin_requirement: float = 0.0
|
|
margin_used: float = 0.0 # Margin used
|