investing-algorithm-framework 7.16.14__py3-none-any.whl → 7.16.15__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of investing-algorithm-framework might be problematic. Click here for more details.

@@ -342,7 +342,7 @@ class Trade(BaseModel):
342
342
  Order.from_dict(order)
343
343
  for order in data["orders"]
344
344
  ]
345
-
345
+ print(data)
346
346
  return Trade(
347
347
  id=data.get("id", None),
348
348
  orders=orders,
@@ -357,7 +357,7 @@ class Trade(BaseModel):
357
357
  remaining=data.get("remaining", 0),
358
358
  net_gain=data.get("net_gain", 0),
359
359
  last_reported_price=data.get("last_reported_price"),
360
- status=data["status"],
360
+ status=TradeStatus.from_value(data["status"]).value,
361
361
  cost=data.get("cost", 0),
362
362
  updated_at=updated_at,
363
363
  stop_losses=stop_losses,
@@ -410,6 +410,16 @@ class BacktestService:
410
410
  )
411
411
  )
412
412
 
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
+ )
413
423
  # Create a backtest run object
414
424
  run = BacktestRun(
415
425
  trading_symbol=trading_symbol,
@@ -423,6 +433,14 @@ class BacktestService:
423
433
  backtest_start_date=backtest_date_range.start_date,
424
434
  backtest_end_date=backtest_date_range.end_date,
425
435
  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),
426
444
  symbols=list(buy_signals.keys())
427
445
  )
428
446
 
@@ -52,9 +52,13 @@ def get_win_rate(trades: List[Trade]) -> float:
52
52
  Returns:
53
53
  float: The win rate as a percentage (e.g., o.75 for 75% win rate).
54
54
  """
55
+ for trade in trades:
56
+ print(trade.status)
57
+
55
58
  trades = [
56
59
  trade for trade in trades if TradeStatus.CLOSED.equals(trade.status)
57
60
  ]
61
+ print(len(trades))
58
62
  positive_trades = sum(1 for trade in trades if trade.net_gain > 0)
59
63
  total_trades = len(trades)
60
64
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: investing-algorithm-framework
3
- Version: 7.16.14
3
+ Version: 7.16.15
4
4
  Summary: A framework for creating trading bots
5
5
  Author: MDUYN
6
6
  Requires-Python: >=3.10
@@ -127,7 +127,7 @@ investing_algorithm_framework/domain/models/time_unit.py,sha256=dCi1lcVK-QGlOt6y
127
127
  investing_algorithm_framework/domain/models/tracing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
128
  investing_algorithm_framework/domain/models/tracing/trace.py,sha256=iAVEN102-y_7Wj9Qg7kdti8-2I63Y8UG0SF3V2pkHj8,699
129
129
  investing_algorithm_framework/domain/models/trade/__init__.py,sha256=2hX5zmAodsEuFeFghsQhinNobXVuc4oYcMeczY2sbsc,308
130
- investing_algorithm_framework/domain/models/trade/trade.py,sha256=bL1n4h354VH-UunT7MmOAJoktMOzDZrZftPhlBwh1U4,13061
130
+ investing_algorithm_framework/domain/models/trade/trade.py,sha256=lAWQJVSea-tKq4fNEuBpiEKcoZYn_DH-mAnq0PrzKSg,13110
131
131
  investing_algorithm_framework/domain/models/trade/trade_risk_type.py,sha256=f-1bOc2GkdphPL3ewPzgsZ5OLX2_fc2e1DVARDl1RRc,839
132
132
  investing_algorithm_framework/domain/models/trade/trade_status.py,sha256=9b5QDwg8vsu_iRtGWatJ1rJFubjIWslKHTG3cK0zVQ4,1004
133
133
  investing_algorithm_framework/domain/models/trade/trade_stop_loss.py,sha256=B9mBALaqOu2VI9v_PTv6C2ZrP6afTEi7seBD8kZi7bw,10366
@@ -202,7 +202,7 @@ investing_algorithm_framework/infrastructure/services/azure/__init__.py,sha256=P
202
202
  investing_algorithm_framework/infrastructure/services/azure/state_handler.py,sha256=EUk4PdVl6RQ19DuWdrC4DzgOhGcL3qiZKWgWh_obT4E,5240
203
203
  investing_algorithm_framework/services/__init__.py,sha256=9p0Y2enp6UMOlU4qJgVoojHBRARLGefNzbPxgSCN0wI,4999
204
204
  investing_algorithm_framework/services/backtesting/__init__.py,sha256=sD6JMQVuUT8NRKV77VC9jyGnHcGox0W2n9eA-4ydeHY,84
205
- investing_algorithm_framework/services/backtesting/backtest_service.py,sha256=cH_LOvDxkPI9rp8ic1eqGqtWYo7EW60nZEfBYwJ50jI,24112
205
+ investing_algorithm_framework/services/backtesting/backtest_service.py,sha256=rWxOxAXhuywb0jx_j0XVChKBPU3CUV4vYF0T7oTtG2E,24841
206
206
  investing_algorithm_framework/services/configuration_service.py,sha256=BCgiBlrLjMjfU4afmjYaHu9gOWNmgaxhf6RBN2XJkw0,2853
207
207
  investing_algorithm_framework/services/data_providers/__init__.py,sha256=OHVccpIYGc-1B2AkCI_2Nhsb9KMaAUrng4DHhIbFD8Y,96
208
208
  investing_algorithm_framework/services/data_providers/data_provider_service.py,sha256=Tv5W38rshK7sG7XEhp7L-McdiNWAAlvU_1ScSdt1NCE,28420
@@ -230,7 +230,7 @@ investing_algorithm_framework/services/metrics/treynor_ratio.py,sha256=47DEQpj8H
230
230
  investing_algorithm_framework/services/metrics/ulcer.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
231
231
  investing_algorithm_framework/services/metrics/value_at_risk.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
232
232
  investing_algorithm_framework/services/metrics/volatility.py,sha256=LzeNEkjXrUzzYSWlO8MffJKgFAXY3aaxIH9w4QQKYsc,3275
233
- investing_algorithm_framework/services/metrics/win_rate.py,sha256=9SXI6E7JS7XQY3qVwARhr-Wti2ZKfd1n3yNXxGL1hIY,5794
233
+ investing_algorithm_framework/services/metrics/win_rate.py,sha256=P2IMVUsCQATHBmShthks8P2Nz7OB1fSTud7gM52EgWU,5871
234
234
  investing_algorithm_framework/services/order_service/__init__.py,sha256=B-9kb7AWnMHCYkT3C7lvUADPWC8uP8cg6ymj3Ngabf0,242
235
235
  investing_algorithm_framework/services/order_service/order_backtest_service.py,sha256=20rVRGSX1IRVRrjCgnM3H7gg4MGZdQconJ9tEE_pZzg,6534
236
236
  investing_algorithm_framework/services/order_service/order_executor_lookup.py,sha256=QNZr-EiKofPGgYHHBESfxdMXGuLOAT8BlufHx92LkoM,3601
@@ -252,8 +252,8 @@ investing_algorithm_framework/services/trade_order_evaluator/default_trade_order
252
252
  investing_algorithm_framework/services/trade_order_evaluator/trade_order_evaluator.py,sha256=pNnmgaKMR9RY6Kxq7xS0nURKoaQDe2ehrP5GfElkkcI,1328
253
253
  investing_algorithm_framework/services/trade_service/__init__.py,sha256=AcwPyJjDRdiREnl_MWMkDSc-V-ZjXtvpHD6eQT9mc1o,68
254
254
  investing_algorithm_framework/services/trade_service/trade_service.py,sha256=OtzIS5EebByGcqDvV2AFeBjXSarvrgubMXDaVKg6Rbw,41193
255
- investing_algorithm_framework-7.16.14.dist-info/LICENSE,sha256=wbVEDvoZiMPHufRY3sLEffvAr7GH5hOIngHF8y4HFQg,11343
256
- investing_algorithm_framework-7.16.14.dist-info/METADATA,sha256=Mc8nld7tD7PQ9reN4fHJ_yYBRnRIUVjgT-hbjIrjzOQ,19636
257
- investing_algorithm_framework-7.16.14.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
258
- investing_algorithm_framework-7.16.14.dist-info/entry_points.txt,sha256=jrPF0YksDs27vYzEvj3tXLe3OGWU24EJA05z5xHqmq8,91
259
- investing_algorithm_framework-7.16.14.dist-info/RECORD,,
255
+ investing_algorithm_framework-7.16.15.dist-info/LICENSE,sha256=wbVEDvoZiMPHufRY3sLEffvAr7GH5hOIngHF8y4HFQg,11343
256
+ investing_algorithm_framework-7.16.15.dist-info/METADATA,sha256=p6OKKR-jE6WF4Ry_Q2pmxwTZl_jOeAzuX958e5XJwKo,19636
257
+ investing_algorithm_framework-7.16.15.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
258
+ investing_algorithm_framework-7.16.15.dist-info/entry_points.txt,sha256=jrPF0YksDs27vYzEvj3tXLe3OGWU24EJA05z5xHqmq8,91
259
+ investing_algorithm_framework-7.16.15.dist-info/RECORD,,