investing-algorithm-framework 7.16.6__py3-none-any.whl → 7.16.8__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.

@@ -1,5 +1,6 @@
1
1
  import json
2
2
  import os
3
+ from typing import Dict
3
4
  from pathlib import Path
4
5
  from datetime import datetime, timezone
5
6
  from dataclasses import dataclass, field
@@ -82,7 +83,8 @@ class BacktestRun:
82
83
  number_of_positions: int = 0
83
84
  backtest_metrics: BacktestMetrics = None
84
85
  backtest_date_range_name: str = None
85
- data_sources: List[dict] = field(default_factory=list)
86
+ data_sources: List[Dict] = field(default_factory=list)
87
+ metadata: Dict[str, str] = field(default_factory=dict)
86
88
 
87
89
  def to_dict(self) -> dict:
88
90
  """
@@ -114,7 +116,8 @@ class BacktestRun:
114
116
  "number_of_trades_closed": self.number_of_trades_closed,
115
117
  "number_of_trades_open": self.number_of_trades_open,
116
118
  "number_of_orders": self.number_of_orders,
117
- "number_of_positions": self.number_of_positions
119
+ "number_of_positions": self.number_of_positions,
120
+ "metadata": self.metadata,
118
121
  }
119
122
 
120
123
  @staticmethod
@@ -85,7 +85,7 @@ def get_current_win_rate(trades: List[Trade]) -> float:
85
85
  if not trades:
86
86
  return 0.0
87
87
 
88
- positive_trades = sum(1 for trade in trades if trade.net_gain > 0)
88
+ positive_trades = sum(1 for trade in trades if trade.net_gain_absolute > 0)
89
89
  total_trades = len(trades)
90
90
 
91
91
  return positive_trades / total_trades
@@ -159,16 +159,16 @@ def get_current_win_loss_ratio(trades: List[Trade]) -> float:
159
159
  return 0.0
160
160
 
161
161
  # Separate winning and losing trades
162
- winning_trades = [t for t in trades if t.net_gain > 0]
163
- losing_trades = [t for t in trades if t.net_gain < 0]
162
+ winning_trades = [t for t in trades if t.net_gain_absolute > 0]
163
+ losing_trades = [t for t in trades if t.net_gain_absolute < 0]
164
164
 
165
165
  if not winning_trades or not losing_trades:
166
166
  return 0.0
167
167
 
168
168
  # Compute averages
169
- avg_win = sum(t.net_gain for t in winning_trades) / len(winning_trades)
169
+ avg_win = sum(t.net_gain_absolute for t in winning_trades) / len(winning_trades)
170
170
  avg_loss = abs(
171
- sum(t.net_gain for t in losing_trades) / len(losing_trades))
171
+ sum(t.net_gain_absolute for t in losing_trades) / len(losing_trades))
172
172
 
173
173
  # Avoid division by zero
174
174
  if avg_loss == 0:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: investing-algorithm-framework
3
- Version: 7.16.6
3
+ Version: 7.16.8
4
4
  Summary: A framework for creating trading bots
5
5
  Author: MDUYN
6
6
  Requires-Python: >=3.10
@@ -89,7 +89,7 @@ investing_algorithm_framework/domain/backtesting/backtest_date_range.py,sha256=e
89
89
  investing_algorithm_framework/domain/backtesting/backtest_evaluation_focuss.py,sha256=ZGfJm-zjsWudQMOdYKfW_2T7K3SBy-JjaMoJp9zijWE,3010
90
90
  investing_algorithm_framework/domain/backtesting/backtest_metrics.py,sha256=HR0bEDT3xh-TQq50PLDcKhYggjtnE-JTRuY2TlXz54w,19552
91
91
  investing_algorithm_framework/domain/backtesting/backtest_permutation_test.py,sha256=8JXdu3EgFh2f2Yc41OYwIBwlYtjFiumyAJUrN5kL078,6703
92
- investing_algorithm_framework/domain/backtesting/backtest_run.py,sha256=JOGmTuzMkRlr_s41TpdISSKQZrhmurhcXLDIVQoyk_Y,14187
92
+ investing_algorithm_framework/domain/backtesting/backtest_run.py,sha256=ffQgilEkyixGrGvKeCZF670OPoY3ljixlgsXPajHpZY,14310
93
93
  investing_algorithm_framework/domain/backtesting/backtest_summary_metrics.py,sha256=BupJ1WKiqdZTe3CEPjHJ7j0Bg-eeJcTE29kKkVvZ1y0,6686
94
94
  investing_algorithm_framework/domain/backtesting/combine_backtests.py,sha256=JjqlAu6ae565s-ccjHY1SdHgz0vc22g1awFYBdbpacM,9726
95
95
  investing_algorithm_framework/domain/config.py,sha256=_VkaJvrdqIKAT3_l-Y8XTEKNEaw5uVIwQ7vxomuCpUw,3003
@@ -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=t69nL0quSUmcDLPR_-m5PlkKuYbg2Wwg3hvv-dizDUQ,5749
233
+ investing_algorithm_framework/services/metrics/win_rate.py,sha256=9SXI6E7JS7XQY3qVwARhr-Wti2ZKfd1n3yNXxGL1hIY,5794
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.6.dist-info/LICENSE,sha256=wbVEDvoZiMPHufRY3sLEffvAr7GH5hOIngHF8y4HFQg,11343
256
- investing_algorithm_framework-7.16.6.dist-info/METADATA,sha256=w6BMuWR2lWxlgiUwyzAmdYUdOlAQUke8pdO46Dp7uWY,19635
257
- investing_algorithm_framework-7.16.6.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
258
- investing_algorithm_framework-7.16.6.dist-info/entry_points.txt,sha256=jrPF0YksDs27vYzEvj3tXLe3OGWU24EJA05z5xHqmq8,91
259
- investing_algorithm_framework-7.16.6.dist-info/RECORD,,
255
+ investing_algorithm_framework-7.16.8.dist-info/LICENSE,sha256=wbVEDvoZiMPHufRY3sLEffvAr7GH5hOIngHF8y4HFQg,11343
256
+ investing_algorithm_framework-7.16.8.dist-info/METADATA,sha256=-NZwxEpvpk8FUOtfAsuCK6QpIu1BC8rEP4B-wSPgFaM,19635
257
+ investing_algorithm_framework-7.16.8.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
258
+ investing_algorithm_framework-7.16.8.dist-info/entry_points.txt,sha256=jrPF0YksDs27vYzEvj3tXLe3OGWU24EJA05z5xHqmq8,91
259
+ investing_algorithm_framework-7.16.8.dist-info/RECORD,,