Qubx 0.6.18__tar.gz → 0.6.19__tar.gz

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 Qubx might be problematic. Click here for more details.

Files changed (147) hide show
  1. {qubx-0.6.18 → qubx-0.6.19}/PKG-INFO +1 -1
  2. {qubx-0.6.18 → qubx-0.6.19}/pyproject.toml +1 -1
  3. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/backtester/broker.py +3 -0
  4. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/backtester/ome.py +3 -2
  5. {qubx-0.6.18 → qubx-0.6.19}/LICENSE +0 -0
  6. {qubx-0.6.18 → qubx-0.6.19}/README.md +0 -0
  7. {qubx-0.6.18 → qubx-0.6.19}/build.py +0 -0
  8. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/__init__.py +0 -0
  9. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/_nb_magic.py +0 -0
  10. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/backtester/__init__.py +0 -0
  11. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/backtester/account.py +0 -0
  12. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/backtester/data.py +0 -0
  13. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/backtester/management.py +0 -0
  14. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/backtester/optimization.py +0 -0
  15. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/backtester/runner.py +0 -0
  16. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/backtester/simulated_data.py +0 -0
  17. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/backtester/simulator.py +0 -0
  18. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/backtester/utils.py +0 -0
  19. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/cli/__init__.py +0 -0
  20. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/cli/commands.py +0 -0
  21. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/cli/deploy.py +0 -0
  22. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/cli/misc.py +0 -0
  23. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/cli/release.py +0 -0
  24. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/connectors/ccxt/__init__.py +0 -0
  25. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/connectors/ccxt/account.py +0 -0
  26. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/connectors/ccxt/broker.py +0 -0
  27. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/connectors/ccxt/data.py +0 -0
  28. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/connectors/ccxt/exceptions.py +0 -0
  29. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/connectors/ccxt/exchanges/__init__.py +0 -0
  30. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/connectors/ccxt/exchanges/binance/broker.py +0 -0
  31. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/connectors/ccxt/exchanges/binance/exchange.py +0 -0
  32. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/connectors/ccxt/factory.py +0 -0
  33. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/connectors/ccxt/reader.py +0 -0
  34. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/connectors/ccxt/utils.py +0 -0
  35. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/core/__init__.py +0 -0
  36. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/core/account.py +0 -0
  37. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/core/basics.py +0 -0
  38. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/core/context.py +0 -0
  39. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/core/errors.py +0 -0
  40. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/core/exceptions.py +0 -0
  41. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/core/helpers.py +0 -0
  42. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/core/initializer.py +0 -0
  43. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/core/interfaces.py +0 -0
  44. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/core/loggers.py +0 -0
  45. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/core/lookups.py +0 -0
  46. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/core/metrics.py +0 -0
  47. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/core/mixins/__init__.py +0 -0
  48. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/core/mixins/market.py +0 -0
  49. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/core/mixins/processing.py +0 -0
  50. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/core/mixins/subscription.py +0 -0
  51. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/core/mixins/trading.py +0 -0
  52. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/core/mixins/universe.py +0 -0
  53. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/core/series.pxd +0 -0
  54. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/core/series.pyi +0 -0
  55. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/core/series.pyx +0 -0
  56. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/core/utils.pyi +0 -0
  57. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/core/utils.pyx +0 -0
  58. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/data/__init__.py +0 -0
  59. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/data/composite.py +0 -0
  60. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/data/helpers.py +0 -0
  61. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/data/hft.py +0 -0
  62. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/data/readers.py +0 -0
  63. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/data/registry.py +0 -0
  64. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/data/tardis.py +0 -0
  65. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/emitters/__init__.py +0 -0
  66. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/emitters/base.py +0 -0
  67. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/emitters/composite.py +0 -0
  68. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/emitters/csv.py +0 -0
  69. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/emitters/prometheus.py +0 -0
  70. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/emitters/questdb.py +0 -0
  71. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/exporters/__init__.py +0 -0
  72. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/exporters/composite.py +0 -0
  73. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/exporters/formatters/__init__.py +0 -0
  74. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/exporters/formatters/base.py +0 -0
  75. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/exporters/formatters/incremental.py +0 -0
  76. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/exporters/formatters/slack.py +0 -0
  77. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/exporters/redis_streams.py +0 -0
  78. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/exporters/slack.py +0 -0
  79. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/features/__init__.py +0 -0
  80. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/features/core.py +0 -0
  81. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/features/orderbook.py +0 -0
  82. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/features/price.py +0 -0
  83. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/features/trades.py +0 -0
  84. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/features/utils.py +0 -0
  85. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/gathering/simplest.py +0 -0
  86. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/math/__init__.py +0 -0
  87. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/math/stats.py +0 -0
  88. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/notifications/__init__.py +0 -0
  89. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/notifications/composite.py +0 -0
  90. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/notifications/slack.py +0 -0
  91. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/pandaz/__init__.py +0 -0
  92. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/pandaz/ta.py +0 -0
  93. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/pandaz/utils.py +0 -0
  94. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/resources/_build.py +0 -0
  95. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/resources/instruments/symbols-binance.cm.json +0 -0
  96. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/resources/instruments/symbols-binance.json +0 -0
  97. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/resources/instruments/symbols-binance.um.json +0 -0
  98. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/resources/instruments/symbols-bitfinex.f.json +0 -0
  99. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/resources/instruments/symbols-bitfinex.json +0 -0
  100. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/resources/instruments/symbols-kraken.f.json +0 -0
  101. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/resources/instruments/symbols-kraken.json +0 -0
  102. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/restarts/__init__.py +0 -0
  103. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/restarts/state_resolvers.py +0 -0
  104. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/restarts/time_finders.py +0 -0
  105. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/restorers/__init__.py +0 -0
  106. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/restorers/balance.py +0 -0
  107. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/restorers/factory.py +0 -0
  108. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/restorers/interfaces.py +0 -0
  109. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/restorers/position.py +0 -0
  110. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/restorers/signal.py +0 -0
  111. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/restorers/state.py +0 -0
  112. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/restorers/utils.py +0 -0
  113. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/ta/__init__.py +0 -0
  114. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/ta/indicators.pxd +0 -0
  115. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/ta/indicators.pyi +0 -0
  116. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/ta/indicators.pyx +0 -0
  117. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/trackers/__init__.py +0 -0
  118. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/trackers/advanced.py +0 -0
  119. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/trackers/composite.py +0 -0
  120. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/trackers/rebalancers.py +0 -0
  121. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/trackers/riskctrl.py +0 -0
  122. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/trackers/sizers.py +0 -0
  123. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/utils/__init__.py +0 -0
  124. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/utils/_pyxreloader.py +0 -0
  125. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/utils/charting/lookinglass.py +0 -0
  126. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/utils/charting/mpl_helpers.py +0 -0
  127. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/utils/marketdata/binance.py +0 -0
  128. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/utils/marketdata/ccxt.py +0 -0
  129. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/utils/marketdata/dukas.py +0 -0
  130. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/utils/misc.py +0 -0
  131. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/utils/ntp.py +0 -0
  132. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/utils/numbers_utils.py +0 -0
  133. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/utils/orderbook.py +0 -0
  134. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/utils/plotting/__init__.py +0 -0
  135. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/utils/plotting/dashboard.py +0 -0
  136. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/utils/plotting/data.py +0 -0
  137. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/utils/plotting/interfaces.py +0 -0
  138. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/utils/plotting/renderers/__init__.py +0 -0
  139. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/utils/plotting/renderers/plotly.py +0 -0
  140. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/utils/runner/__init__.py +0 -0
  141. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/utils/runner/_jupyter_runner.pyt +0 -0
  142. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/utils/runner/accounts.py +0 -0
  143. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/utils/runner/configs.py +0 -0
  144. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/utils/runner/factory.py +0 -0
  145. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/utils/runner/runner.py +0 -0
  146. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/utils/time.py +0 -0
  147. {qubx-0.6.18 → qubx-0.6.19}/src/qubx/utils/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: Qubx
3
- Version: 0.6.18
3
+ Version: 0.6.19
4
4
  Summary: Qubx - Quantitative Trading Framework
5
5
  Author: Dmitry Marienko
6
6
  Author-email: dmitry.marienko@xlydian.com
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [tool.poetry]
6
6
  name = "Qubx"
7
- version = "0.6.18"
7
+ version = "0.6.19"
8
8
  description = "Qubx - Quantitative Trading Framework"
9
9
  authors = [ "Dmitry Marienko <dmitry.marienko@xlydian.com>", "Yuriy Arabskyy <yuriy.arabskyy@xlydian.com>",]
10
10
  readme = "README.md"
@@ -81,6 +81,9 @@ class SimulatedBroker(IBroker):
81
81
 
82
82
  # - cancel order in OME and remove from the map to free memory
83
83
  order_update = ome.cancel_order(order_id)
84
+ if order_update is None:
85
+ return None
86
+
84
87
  self._send_exec_report(instrument, order_update)
85
88
 
86
89
  return order_update.order
@@ -322,7 +322,7 @@ class OrdersManagementEngine:
322
322
  f"Stop price would trigger immediately: STOP_MARKET {order_side} {amount} of {self.instrument.symbol} at {price} | market: {c_ask} / {c_bid}"
323
323
  )
324
324
 
325
- def cancel_order(self, order_id: str) -> OmeReport:
325
+ def cancel_order(self, order_id: str) -> OmeReport | None:
326
326
  # - check limit orders
327
327
  if order_id in self.active_orders:
328
328
  order = self.active_orders.pop(order_id)
@@ -341,7 +341,8 @@ class OrdersManagementEngine:
341
341
  order = self.stop_orders.pop(order_id)
342
342
  # - wrong order_id
343
343
  else:
344
- raise InvalidOrder(f"Order {order_id} not found for {self.instrument.symbol}")
344
+ logger.error(f"Can't cancel order {order_id} for {self.instrument.symbol} because it's not found in OME !")
345
+ return None
345
346
 
346
347
  order.status = "CANCELED"
347
348
  self._dbg(f"{order.id} {order.type} {order.side} {order.quantity} canceled")
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes