Files
crypto_trader/tests/unit/portfolio/test_analytics.py

36 lines
1.3 KiB
Python

"""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