Local changes: Updated model training, removed debug instrumentation, and configuration improvements
This commit is contained in:
2
tests/unit/portfolio/__init__.py
Normal file
2
tests/unit/portfolio/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
"""Unit tests for portfolio management."""
|
||||
|
||||
35
tests/unit/portfolio/test_analytics.py
Normal file
35
tests/unit/portfolio/test_analytics.py
Normal 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
|
||||
|
||||
29
tests/unit/portfolio/test_tracker.py
Normal file
29
tests/unit/portfolio/test_tracker.py
Normal 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
|
||||
|
||||
Reference in New Issue
Block a user