Skip to content

Commit a9426b5

Browse files
committed
Fix tests
1 parent 291ba1a commit a9426b5

File tree

10 files changed

+216
-10
lines changed

10 files changed

+216
-10
lines changed

tests/app/test_data_completeness.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,4 +118,3 @@ def test_data_completeness_incomplete_data(self):
118118
self.assertIn(
119119
"sol_1d_incomplete_ohlcv_data", completeness_info
120120
)
121-
print(completeness_info)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
"id": "f59096a6-a1ad-4055-a8f5-b34f5471e16c"
2+
"id": "8ad8909b-a5f9-4a00-b7be-508818029826"
33
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"backtest_start_date": "2023-08-07 05:00:00", "backtest_date_range_name": "Test Backtest Date Range", "backtest_end_date": "2023-12-01 23:00:00", "trading_symbol": "EUR", "initial_unallocated": 1000, "number_of_runs": 1000, "portfolio_snapshots": [{"metadata": {}, "portfolio_id": "", "trading_symbol": "EUR", "pending_value": 0.0, "unallocated": 1000, "total_net_gain": 0.0, "total_revenue": 0.0, "total_cost": 0.0, "cash_flow": 0.0, "net_size": 0.0, "created_at": "2023-08-07T07:00:00+00:00", "total_value": 1000}, {"metadata": {}, "portfolio_id": "", "trading_symbol": "EUR", "pending_value": 0.0, "unallocated": 200, "total_net_gain": 0.0, "total_revenue": 0.0, "total_cost": 0.0, "cash_flow": 0.0, "net_size": 0.0, "created_at": "2023-12-02T00:00:00+00:00", "total_value": 1200}], "trades": [], "orders": [], "positions": [], "created_at": "2025-11-30 18:47:06", "symbols": [], "number_of_days": 0, "number_of_trades": 0, "number_of_trades_closed": 0, "number_of_trades_open": 0, "number_of_orders": 0, "number_of_positions": 0, "metadata": {}}
1+
{"backtest_start_date": "2023-08-07 05:00:00", "backtest_date_range_name": "Test Backtest Date Range", "backtest_end_date": "2023-12-01 23:00:00", "trading_symbol": "EUR", "initial_unallocated": 1000, "number_of_runs": 1000, "portfolio_snapshots": [{"metadata": {}, "portfolio_id": "", "trading_symbol": "EUR", "pending_value": 0.0, "unallocated": 1000, "total_net_gain": 0.0, "total_revenue": 0.0, "total_cost": 0.0, "cash_flow": 0.0, "net_size": 0.0, "created_at": "2023-08-07T07:00:00+00:00", "total_value": 1000}, {"metadata": {}, "portfolio_id": "", "trading_symbol": "EUR", "pending_value": 0.0, "unallocated": 200, "total_net_gain": 0.0, "total_revenue": 0.0, "total_cost": 0.0, "cash_flow": 0.0, "net_size": 0.0, "created_at": "2023-12-02T00:00:00+00:00", "total_value": 1200}], "trades": [], "orders": [], "positions": [], "created_at": "2025-12-14 15:49:37", "symbols": [], "number_of_days": 0, "number_of_trades": 0, "number_of_trades_closed": 0, "number_of_trades_open": 0, "number_of_orders": 0, "number_of_positions": 0, "metadata": {}}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
"id": "f0e5c774-4652-44d1-834b-1554b84e0a76"
2+
"id": "2b99052e-7f02-4098-8ed2-011ffcbd33b7"
33
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"backtest_start_date": "2023-12-01 23:00:00", "backtest_date_range_name": null, "backtest_end_date": "2023-12-02 23:00:00", "trading_symbol": "EUR", "initial_unallocated": 1000.0, "number_of_runs": 1441, "portfolio_snapshots": [{"metadata": "MetaData()", "portfolio_id": "1", "trading_symbol": "EUR", "pending_value": 0.0, "unallocated": 1000.0, "total_net_gain": 0.0, "total_revenue": 0.0, "total_cost": 0.0, "cash_flow": 0.0, "net_size": 1000.0, "created_at": "2023-12-01T23:00:00+00:00", "total_value": 1000.0}, {"metadata": "MetaData()", "portfolio_id": "1", "trading_symbol": "EUR", "pending_value": 0.0, "unallocated": 1000.0, "total_net_gain": 0.0, "total_revenue": 0.0, "total_cost": 0.0, "cash_flow": 0.0, "net_size": 1000.0, "created_at": "2023-12-02T23:00:00+00:00", "total_value": 1000.0}], "trades": [], "orders": [], "positions": [{"symbol": "EUR", "amount": 1000.0, "cost": 1000.0, "portfolio_id": 1}], "created_at": "2025-11-30 18:46:48", "symbols": [], "number_of_days": 0, "number_of_trades": 0, "number_of_trades_closed": 0, "number_of_trades_open": 0, "number_of_orders": 0, "number_of_positions": 0, "metadata": {}}
1+
{"backtest_start_date": "2023-12-01 23:00:00", "backtest_date_range_name": null, "backtest_end_date": "2023-12-02 23:00:00", "trading_symbol": "EUR", "initial_unallocated": 1000.0, "number_of_runs": 1441, "portfolio_snapshots": [{"metadata": "MetaData()", "portfolio_id": "1", "trading_symbol": "EUR", "pending_value": 0.0, "unallocated": 1000.0, "total_net_gain": 0.0, "total_revenue": 0.0, "total_cost": 0.0, "cash_flow": 0.0, "net_size": 1000.0, "created_at": "2023-12-01T23:00:00+00:00", "total_value": 1000.0}, {"metadata": "MetaData()", "portfolio_id": "1", "trading_symbol": "EUR", "pending_value": 0.0, "unallocated": 1000.0, "total_net_gain": 0.0, "total_revenue": 0.0, "total_cost": 0.0, "cash_flow": 0.0, "net_size": 1000.0, "created_at": "2023-12-02T23:00:00+00:00", "total_value": 1000.0}], "trades": [], "orders": [], "positions": [{"symbol": "EUR", "amount": 1000.0, "cost": 1000.0, "portfolio_id": 1}], "created_at": "2025-12-14 15:49:20", "symbols": [], "number_of_days": 0, "number_of_trades": 0, "number_of_trades_closed": 0, "number_of_trades_open": 0, "number_of_orders": 0, "number_of_positions": 0, "metadata": {}}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
from datetime import datetime, timezone, date
2+
from unittest import TestCase
3+
4+
from investing_algorithm_framework.domain import PortfolioSnapshot
5+
from investing_algorithm_framework.services import get_daily_returns_std
6+
7+
8+
class TestDailyReturnsStd(TestCase):
9+
10+
def test_get_daily_returns_std_calculation(self):
11+
total_values = [
12+
100000,
13+
101154,
14+
102949,
15+
101090,
16+
99487,
17+
99936,
18+
101026,
19+
103974,
20+
105320,
21+
105384,
22+
103333,
23+
106602,
24+
108397,
25+
107243,
26+
107373,
27+
106666,
28+
107756,
29+
107307,
30+
109615,
31+
108846,
32+
108589,
33+
107372
34+
]
35+
36+
dates = [
37+
date(year=2010, month=9, day=10),
38+
date(year=2010, month=9, day=13),
39+
date(year=2010, month=9, day=14),
40+
date(year=2010, month=9, day=15),
41+
date(year=2010, month=9, day=16),
42+
date(year=2010, month=9, day=17),
43+
date(year=2010, month=9, day=20),
44+
date(year=2010, month=9, day=21),
45+
date(year=2010, month=9, day=22),
46+
date(year=2010, month=9, day=23),
47+
date(year=2010, month=9, day=24),
48+
date(year=2010, month=9, day=27),
49+
date(year=2010, month=9, day=28),
50+
date(year=2010, month=9, day=29),
51+
date(year=2010, month=9, day=30),
52+
date(year=2010, month=10, day=1),
53+
date(year=2010, month=10, day=4),
54+
date(year=2010, month=10, day=5),
55+
date(year=2010, month=10, day=6),
56+
date(year=2010, month=10, day=7),
57+
date(year=2010, month=10, day=8),
58+
date(year=2010, month=10, day=12)
59+
]
60+
61+
snapshots = [
62+
PortfolioSnapshot(
63+
portfolio_id="test_portfolio",
64+
total_value=val,
65+
created_at=datetime.combine(d, datetime.min.time()).replace(tzinfo=timezone.utc)
66+
)
67+
for d, val in zip(dates, total_values)
68+
]
69+
70+
daily_returns_std = get_daily_returns_std(snapshots)
71+
self.assertAlmostEqual(daily_returns_std, 0.01218, places=3)

tests/services/metrics/test_generate_metrics.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,3 @@ def test_generate_metrics(self):
2424
backtest_metrics = create_backtest_metrics(
2525
backtest_run, risk_free_rate=0.024
2626
)
27-
print(backtest_metrics.win_rate)
28-
print(backtest_metrics.win_loss_ratio)
29-
print(backtest_metrics.profit_factor)
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
from datetime import datetime, timezone, date
2+
from unittest import TestCase
3+
4+
from investing_algorithm_framework.domain import PortfolioSnapshot
5+
from investing_algorithm_framework.services import get_mean_daily_return
6+
7+
8+
class TestVolatilityMetrics(TestCase):
9+
10+
def test_mean_daily_return_calculation(self):
11+
total_values = [
12+
100000,
13+
101154,
14+
102949,
15+
101090,
16+
99487,
17+
99936,
18+
101026,
19+
103974,
20+
105320,
21+
105384,
22+
103333,
23+
106602,
24+
108397,
25+
107243,
26+
107373,
27+
106666,
28+
107756,
29+
107307,
30+
109615,
31+
108846,
32+
108589,
33+
107372
34+
]
35+
36+
dates = [
37+
date(year=2010, month=9, day=10),
38+
date(year=2010, month=9, day=13),
39+
date(year=2010, month=9, day=14),
40+
date(year=2010, month=9, day=15),
41+
date(year=2010, month=9, day=16),
42+
date(year=2010, month=9, day=17),
43+
date(year=2010, month=9, day=20),
44+
date(year=2010, month=9, day=21),
45+
date(year=2010, month=9, day=22),
46+
date(year=2010, month=9, day=23),
47+
date(year=2010, month=9, day=24),
48+
date(year=2010, month=9, day=27),
49+
date(year=2010, month=9, day=28),
50+
date(year=2010, month=9, day=29),
51+
date(year=2010, month=9, day=30),
52+
date(year=2010, month=10, day=1),
53+
date(year=2010, month=10, day=4),
54+
date(year=2010, month=10, day=5),
55+
date(year=2010, month=10, day=6),
56+
date(year=2010, month=10, day=7),
57+
date(year=2010, month=10, day=8),
58+
date(year=2010, month=10, day=12)
59+
]
60+
61+
snapshots = [
62+
PortfolioSnapshot(
63+
portfolio_id="test_portfolio",
64+
total_value=val,
65+
created_at=datetime.combine(d, datetime.min.time()).replace(tzinfo=timezone.utc)
66+
)
67+
for d, val in zip(dates, total_values)
68+
]
69+
70+
mean_daily_return = get_mean_daily_return(snapshots)
71+
self.assertAlmostEqual(mean_daily_return, 0.002225, places=3)
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
from unittest import TestCase
2+
from datetime import datetime, timezone, timedelta, date
3+
from investing_algorithm_framework.services import get_sharpe_ratio
4+
from investing_algorithm_framework.domain import PortfolioSnapshot
5+
6+
7+
class TestVolatilityMetrics(TestCase):
8+
9+
def test_sharpe_ratio_metrics_calculation(self):
10+
total_values = [
11+
100000,
12+
101154,
13+
102949,
14+
101090,
15+
99487,
16+
99936,
17+
101026,
18+
103974,
19+
105320,
20+
105384,
21+
103333,
22+
106602,
23+
108397,
24+
107243,
25+
107373,
26+
106666,
27+
107756,
28+
107307,
29+
109615,
30+
108846,
31+
108589,
32+
107372
33+
]
34+
35+
dates = [
36+
date(year=2010, month=9, day=10),
37+
date(year=2010, month=9, day=13),
38+
date(year=2010, month=9, day=14),
39+
date(year=2010, month=9, day=15),
40+
date(year=2010, month=9, day=16),
41+
date(year=2010, month=9, day=17),
42+
date(year=2010, month=9, day=20),
43+
date(year=2010, month=9, day=21),
44+
date(year=2010, month=9, day=22),
45+
date(year=2010, month=9, day=23),
46+
date(year=2010, month=9, day=24),
47+
date(year=2010, month=9, day=27),
48+
date(year=2010, month=9, day=28),
49+
date(year=2010, month=9, day=29),
50+
date(year=2010, month=9, day=30),
51+
date(year=2010, month=10, day=1),
52+
date(year=2010, month=10, day=4),
53+
date(year=2010, month=10, day=5),
54+
date(year=2010, month=10, day=6),
55+
date(year=2010, month=10, day=7),
56+
date(year=2010, month=10, day=8),
57+
date(year=2010, month=10, day=12)
58+
]
59+
60+
snapshots = [
61+
PortfolioSnapshot(
62+
portfolio_id="test_portfolio",
63+
total_value=val,
64+
created_at=datetime.combine(d, datetime.min.time()).replace(tzinfo=timezone.utc)
65+
)
66+
for d, val in zip(dates, total_values)
67+
]
68+
69+
sharpe_ratio = get_sharpe_ratio(snapshots, risk_free_rate=0.024)
70+
self.assertAlmostEqual(sharpe_ratio, 3.386, places=1)

tests/services/metrics/test_volatility.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,6 @@ def test_volatility_metrics_calculation(self):
5656
date(year=2010, month=10, day=8),
5757
date(year=2010, month=10, day=12)
5858
]
59-
print(len(dates))
60-
print(len(total_values))
6159

6260
snapshots = [
6361
PortfolioSnapshot(

0 commit comments

Comments
 (0)