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

@@ -139,7 +139,7 @@ def create_backtest_metrics(
139
139
  else:
140
140
  setattr(backtest_metrics, metric_name, value)
141
141
  except OperationalException as e:
142
- logger.warning(f"{metric_name} failed: {e}")
142
+ logger.error(f"{metric_name} failed: {e}")
143
143
 
144
144
  # Grouped metrics needing special handling
145
145
  if "total_net_gain" in metrics or "total_net_gain_percentage" in metrics:
@@ -150,7 +150,7 @@ def create_backtest_metrics(
150
150
  if "total_net_gain_percentage" in metrics:
151
151
  backtest_metrics.total_net_gain_percentage = total_return[1]
152
152
  except OperationalException as e:
153
- logger.warning(f"total_return failed: {e}")
153
+ logger.error(f"total_return failed: {e}")
154
154
 
155
155
  if "total_growth" in metrics or "total_growth_percentage" in metrics:
156
156
  try:
@@ -160,7 +160,7 @@ def create_backtest_metrics(
160
160
  if "total_growth_percentage" in metrics:
161
161
  backtest_metrics.total_growth_percentage = total_growth[1]
162
162
  except OperationalException as e:
163
- logger.warning(f"total_growth failed: {e}")
163
+ logger.error(f"total_growth failed: {e}")
164
164
 
165
165
  if "total_loss" in metrics or "total_loss_percentage" in metrics:
166
166
  try:
@@ -170,7 +170,7 @@ def create_backtest_metrics(
170
170
  if "total_loss_percentage" in metrics:
171
171
  backtest_metrics.total_loss_percentage = total_loss[1]
172
172
  except OperationalException as e:
173
- logger.warning(f"total_loss failed: {e}")
173
+ logger.error(f"total_loss failed: {e}")
174
174
 
175
175
  if ("average_trade_return" in metrics
176
176
  or "average_trade_return_percentage" in metrics):
@@ -182,7 +182,7 @@ def create_backtest_metrics(
182
182
  backtest_metrics.average_trade_return_percentage = \
183
183
  avg_return[1]
184
184
  except OperationalException as e:
185
- logger.warning(f"average_trade_return failed: {e}")
185
+ logger.error(f"average_trade_return failed: {e}")
186
186
 
187
187
  if ("average_trade_gain" in metrics
188
188
  or "average_trade_gain_percentage" in metrics):
@@ -193,7 +193,7 @@ def create_backtest_metrics(
193
193
  if "average_trade_gain_percentage" in metrics:
194
194
  backtest_metrics.average_trade_gain_percentage = avg_gain[1]
195
195
  except OperationalException as e:
196
- logger.warning(f"average_trade_gain failed: {e}")
196
+ logger.error(f"average_trade_gain failed: {e}")
197
197
 
198
198
  if ("average_trade_loss" in metrics
199
199
  or "average_trade_loss_percentage" in metrics):
@@ -204,7 +204,7 @@ def create_backtest_metrics(
204
204
  if "average_trade_loss_percentage" in metrics:
205
205
  backtest_metrics.average_trade_loss_percentage = avg_loss[1]
206
206
  except OperationalException as e:
207
- logger.warning(f"average_trade_loss failed: {e}")
207
+ logger.error(f"average_trade_loss failed: {e}")
208
208
 
209
209
  if ("current_average_trade_gain" in metrics
210
210
  or "get_current_average_trade_gain_percentage" in metrics):
@@ -221,7 +221,7 @@ def create_backtest_metrics(
221
221
  backtest_metrics.current_average_trade_gain_percentage = \
222
222
  current_avg_gain[1]
223
223
  except OperationalException as e:
224
- logger.warning(f"current_average_trade_gain failed: {e}")
224
+ logger.error(f"current_average_trade_gain failed: {e}")
225
225
 
226
226
  if ("current_average_trade_return" in metrics
227
227
  or "current_average_trade_return_percentage" in metrics):
@@ -237,7 +237,7 @@ def create_backtest_metrics(
237
237
  backtest_metrics.current_average_trade_return_percentage =\
238
238
  current_avg_return[1]
239
239
  except OperationalException as e:
240
- logger.warning(f"current_average_trade_return failed: {e}")
240
+ logger.error(f"current_average_trade_return failed: {e}")
241
241
 
242
242
  if "current_average_trade_duration" in metrics:
243
243
  try:
@@ -247,7 +247,7 @@ def create_backtest_metrics(
247
247
  backtest_metrics.current_average_trade_duration = \
248
248
  current_avg_duration
249
249
  except OperationalException as e:
250
- logger.warning(f"current_average_trade_duration failed: {e}")
250
+ logger.error(f"current_average_trade_duration failed: {e}")
251
251
 
252
252
  if ("current_average_trade_loss" in metrics
253
253
  or "current_average_trade_loss_percentage" in metrics):
@@ -262,7 +262,7 @@ def create_backtest_metrics(
262
262
  backtest_metrics.current_average_trade_loss_percentage = \
263
263
  current_avg_loss[1]
264
264
  except OperationalException as e:
265
- logger.warning(f"current_average_trade_loss failed: {e}")
265
+ logger.error(f"current_average_trade_loss failed: {e}")
266
266
 
267
267
  safe_set("number_of_positive_trades", get_positive_trades, backtest_run.trades)
268
268
  safe_set("percentage_positive_trades", get_positive_trades, backtest_run.trades, index=1)
@@ -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.7
3
+ Version: 7.16.9
4
4
  Summary: A framework for creating trading bots
5
5
  Author: MDUYN
6
6
  Requires-Python: >=3.10
@@ -215,7 +215,7 @@ investing_algorithm_framework/services/metrics/calmar_ratio.py,sha256=clZTkG6bjZ
215
215
  investing_algorithm_framework/services/metrics/drawdown.py,sha256=VWkPXOm9CSdq6LHL6Pa9JnDObsu-1OOqgC4XRZqZO3Q,6193
216
216
  investing_algorithm_framework/services/metrics/equity_curve.py,sha256=Z3YdqEJ7x9N-RKOC4bt-1LuiKAYTCxhuE6Fx1lJyAS0,702
217
217
  investing_algorithm_framework/services/metrics/exposure.py,sha256=kQPreO5RR72DgTRdSdMPiG6onZTAWvyYTrp3hsI6vYw,6234
218
- investing_algorithm_framework/services/metrics/generate.py,sha256=vpWxspLSjdf450horKxHPWi2Xh4jxtS940HAxgCCGv8,15931
218
+ investing_algorithm_framework/services/metrics/generate.py,sha256=DLruPIPFjgR7Pjp2hFhJfFSJ3mo3ubkXD68m0Pf46k0,15909
219
219
  investing_algorithm_framework/services/metrics/mean_daily_return.py,sha256=_e5GCD5xppa_GrYMEeQB9or1WLkJIF-mdmDfes8CRjQ,2384
220
220
  investing_algorithm_framework/services/metrics/price_efficiency.py,sha256=hpt1Nyk7s_jxFeqEVeQV9FH5N4RzJx6SP072L4z9fYw,1844
221
221
  investing_algorithm_framework/services/metrics/profit_factor.py,sha256=6OMC2yx1stMrJKaVSCMWyVbVMgfurYTiue7P7QeCEHs,5178
@@ -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.7.dist-info/LICENSE,sha256=wbVEDvoZiMPHufRY3sLEffvAr7GH5hOIngHF8y4HFQg,11343
256
- investing_algorithm_framework-7.16.7.dist-info/METADATA,sha256=lxKOB3Dv7NGVbPO2C9aoG3UBLzKJxVzopwGe1wp00Gc,19635
257
- investing_algorithm_framework-7.16.7.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
258
- investing_algorithm_framework-7.16.7.dist-info/entry_points.txt,sha256=jrPF0YksDs27vYzEvj3tXLe3OGWU24EJA05z5xHqmq8,91
259
- investing_algorithm_framework-7.16.7.dist-info/RECORD,,
255
+ investing_algorithm_framework-7.16.9.dist-info/LICENSE,sha256=wbVEDvoZiMPHufRY3sLEffvAr7GH5hOIngHF8y4HFQg,11343
256
+ investing_algorithm_framework-7.16.9.dist-info/METADATA,sha256=vdOz-pFs9hQYqaCugGS8xaJZP1Qde7GWzldn2ACa_Lw,19635
257
+ investing_algorithm_framework-7.16.9.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
258
+ investing_algorithm_framework-7.16.9.dist-info/entry_points.txt,sha256=jrPF0YksDs27vYzEvj3tXLe3OGWU24EJA05z5xHqmq8,91
259
+ investing_algorithm_framework-7.16.9.dist-info/RECORD,,