Local changes: Updated model training, removed debug instrumentation, and configuration improvements

This commit is contained in:
kfox
2025-12-26 01:15:43 -05:00
commit cc60da49e7
388 changed files with 57127 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
"""Unit tests for portfolio management."""

View File

@@ -0,0 +1,35 @@
"""Tests for portfolio analytics."""
import pytest
import pandas as pd
import numpy as np
from src.portfolio.analytics import get_portfolio_analytics, PortfolioAnalytics
class TestPortfolioAnalytics:
"""Tests for PortfolioAnalytics."""
@pytest.fixture
def analytics(self):
"""Create portfolio analytics instance."""
return get_portfolio_analytics()
def test_calculate_sharpe_ratio(self, analytics):
"""Test Sharpe ratio calculation."""
returns = pd.Series([0.01, -0.005, 0.02, -0.01, 0.015])
sharpe = analytics.calculate_sharpe_ratio(returns, risk_free_rate=0.0)
assert isinstance(sharpe, float)
def test_calculate_sortino_ratio(self, analytics):
"""Test Sortino ratio calculation."""
returns = pd.Series([0.01, -0.005, 0.02, -0.01, 0.015])
sortino = analytics.calculate_sortino_ratio(returns, risk_free_rate=0.0)
assert isinstance(sortino, float)
def test_calculate_max_drawdown(self, analytics):
"""Test max drawdown calculation."""
equity_curve = pd.Series([10000, 10500, 10200, 11000, 10800])
drawdown = analytics.calculate_max_drawdown(equity_curve)
assert isinstance(drawdown, float)
assert 0 <= drawdown <= 1

View File

@@ -0,0 +1,29 @@
"""Tests for portfolio tracker."""
import pytest
from src.portfolio.tracker import get_portfolio_tracker, PortfolioTracker
class TestPortfolioTracker:
"""Tests for PortfolioTracker."""
@pytest.fixture
def tracker(self):
"""Create portfolio tracker instance."""
return get_portfolio_tracker()
@pytest.mark.asyncio
async def test_get_current_portfolio(self, tracker):
"""Test getting current portfolio."""
portfolio = await tracker.get_current_portfolio(paper_trading=True)
assert portfolio is not None
assert "positions" in portfolio
assert "performance" in portfolio
@pytest.mark.asyncio
async def test_update_positions_prices(self, tracker):
"""Test updating position prices."""
prices = {"BTC/USD": 50000.0}
await tracker.update_positions_prices(prices, paper_trading=True)
# Should not raise exception