Skip to content

Commit 3343efa

Browse files
committed
Fix BacktestRun Parsing
1 parent 0db770d commit 3343efa

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed

investing_algorithm_framework/domain/models/trade/trade.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,7 @@ def from_dict(data):
342342
Order.from_dict(order)
343343
for order in data["orders"]
344344
]
345-
345+
print(data)
346346
return Trade(
347347
id=data.get("id", None),
348348
orders=orders,
@@ -357,7 +357,7 @@ def from_dict(data):
357357
remaining=data.get("remaining", 0),
358358
net_gain=data.get("net_gain", 0),
359359
last_reported_price=data.get("last_reported_price"),
360-
status=data["status"],
360+
status=TradeStatus.from_value(data["status"]).value,
361361
cost=data.get("cost", 0),
362362
updated_at=updated_at,
363363
stop_losses=stop_losses,

investing_algorithm_framework/services/backtesting/backtest_service.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,16 @@ def create_vector_backtest(
410410
)
411411
)
412412

413+
unique_symbols = set()
414+
for trade in trades:
415+
unique_symbols.add(trade.target_symbol)
416+
417+
number_of_trades_closed = len(
418+
[t for t in trades if TradeStatus.CLOSED.equals(t.status)]
419+
)
420+
number_of_trades_open = len(
421+
[t for t in trades if TradeStatus.OPEN.equals(t.status)]
422+
)
413423
# Create a backtest run object
414424
run = BacktestRun(
415425
trading_symbol=trading_symbol,
@@ -423,6 +433,14 @@ def create_vector_backtest(
423433
backtest_start_date=backtest_date_range.start_date,
424434
backtest_end_date=backtest_date_range.end_date,
425435
backtest_date_range_name=backtest_date_range.name,
436+
number_of_days=(
437+
backtest_date_range.end_date - backtest_date_range.end_date
438+
).days,
439+
number_of_trades=len(trades),
440+
number_of_orders=len(orders),
441+
number_of_trades_closed=number_of_trades_closed,
442+
number_of_trades_open=number_of_trades_open,
443+
number_of_positions=len(unique_symbols),
426444
symbols=list(buy_signals.keys())
427445
)
428446

investing_algorithm_framework/services/metrics/win_rate.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,13 @@ def get_win_rate(trades: List[Trade]) -> float:
5252
Returns:
5353
float: The win rate as a percentage (e.g., o.75 for 75% win rate).
5454
"""
55+
for trade in trades:
56+
print(trade.status)
57+
5558
trades = [
5659
trade for trade in trades if TradeStatus.CLOSED.equals(trade.status)
5760
]
61+
print(len(trades))
5862
positive_trades = sum(1 for trade in trades if trade.net_gain > 0)
5963
total_trades = len(trades)
6064

0 commit comments

Comments
 (0)