Qubx 0.6.27__tar.gz → 0.6.29__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 (157) hide show
  1. {qubx-0.6.27 → qubx-0.6.29}/PKG-INFO +1 -1
  2. {qubx-0.6.27 → qubx-0.6.29}/pyproject.toml +1 -1
  3. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/backtester/ome.py +7 -0
  4. {qubx-0.6.27 → qubx-0.6.29}/LICENSE +0 -0
  5. {qubx-0.6.27 → qubx-0.6.29}/README.md +0 -0
  6. {qubx-0.6.27 → qubx-0.6.29}/build.py +0 -0
  7. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/__init__.py +0 -0
  8. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/_nb_magic.py +0 -0
  9. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/backtester/__init__.py +0 -0
  10. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/backtester/account.py +0 -0
  11. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/backtester/broker.py +0 -0
  12. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/backtester/data.py +0 -0
  13. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/backtester/management.py +0 -0
  14. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/backtester/optimization.py +0 -0
  15. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/backtester/runner.py +0 -0
  16. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/backtester/simulated_data.py +0 -0
  17. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/backtester/simulated_exchange.py +0 -0
  18. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/backtester/simulator.py +0 -0
  19. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/backtester/utils.py +0 -0
  20. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/cli/__init__.py +0 -0
  21. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/cli/commands.py +0 -0
  22. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/cli/deploy.py +0 -0
  23. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/cli/misc.py +0 -0
  24. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/cli/release.py +0 -0
  25. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/connectors/ccxt/__init__.py +0 -0
  26. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/connectors/ccxt/account.py +0 -0
  27. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/connectors/ccxt/broker.py +0 -0
  28. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/connectors/ccxt/data.py +0 -0
  29. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/connectors/ccxt/exceptions.py +0 -0
  30. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/connectors/ccxt/exchanges/__init__.py +0 -0
  31. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/connectors/ccxt/exchanges/binance/broker.py +0 -0
  32. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/connectors/ccxt/exchanges/binance/exchange.py +0 -0
  33. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/connectors/ccxt/exchanges/bitfinex/bitfinex.py +0 -0
  34. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/connectors/ccxt/exchanges/kraken/kraken.py +0 -0
  35. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/connectors/ccxt/factory.py +0 -0
  36. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/connectors/ccxt/reader.py +0 -0
  37. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/connectors/ccxt/utils.py +0 -0
  38. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/connectors/tardis/data.py +0 -0
  39. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/connectors/tardis/utils.py +0 -0
  40. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/core/__init__.py +0 -0
  41. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/core/account.py +0 -0
  42. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/core/basics.py +0 -0
  43. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/core/context.py +0 -0
  44. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/core/deque.py +0 -0
  45. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/core/errors.py +0 -0
  46. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/core/exceptions.py +0 -0
  47. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/core/helpers.py +0 -0
  48. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/core/initializer.py +0 -0
  49. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/core/interfaces.py +0 -0
  50. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/core/loggers.py +0 -0
  51. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/core/lookups.py +0 -0
  52. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/core/metrics.py +0 -0
  53. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/core/mixins/__init__.py +0 -0
  54. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/core/mixins/market.py +0 -0
  55. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/core/mixins/processing.py +0 -0
  56. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/core/mixins/subscription.py +0 -0
  57. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/core/mixins/trading.py +0 -0
  58. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/core/mixins/universe.py +0 -0
  59. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/core/series.pxd +0 -0
  60. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/core/series.pyi +0 -0
  61. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/core/series.pyx +0 -0
  62. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/core/utils.pyi +0 -0
  63. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/core/utils.pyx +0 -0
  64. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/data/__init__.py +0 -0
  65. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/data/composite.py +0 -0
  66. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/data/helpers.py +0 -0
  67. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/data/hft.py +0 -0
  68. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/data/readers.py +0 -0
  69. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/data/registry.py +0 -0
  70. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/data/tardis.py +0 -0
  71. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/emitters/__init__.py +0 -0
  72. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/emitters/base.py +0 -0
  73. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/emitters/composite.py +0 -0
  74. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/emitters/csv.py +0 -0
  75. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/emitters/prometheus.py +0 -0
  76. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/emitters/questdb.py +0 -0
  77. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/exporters/__init__.py +0 -0
  78. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/exporters/composite.py +0 -0
  79. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/exporters/formatters/__init__.py +0 -0
  80. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/exporters/formatters/base.py +0 -0
  81. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/exporters/formatters/incremental.py +0 -0
  82. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/exporters/formatters/slack.py +0 -0
  83. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/exporters/redis_streams.py +0 -0
  84. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/exporters/slack.py +0 -0
  85. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/features/__init__.py +0 -0
  86. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/features/core.py +0 -0
  87. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/features/orderbook.py +0 -0
  88. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/features/price.py +0 -0
  89. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/features/trades.py +0 -0
  90. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/features/utils.py +0 -0
  91. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/gathering/simplest.py +0 -0
  92. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/health/__init__.py +0 -0
  93. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/health/base.py +0 -0
  94. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/math/__init__.py +0 -0
  95. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/math/stats.py +0 -0
  96. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/notifications/__init__.py +0 -0
  97. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/notifications/composite.py +0 -0
  98. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/notifications/slack.py +0 -0
  99. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/pandaz/__init__.py +0 -0
  100. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/pandaz/ta.py +0 -0
  101. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/pandaz/utils.py +0 -0
  102. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/resources/_build.py +0 -0
  103. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/resources/instruments/symbols-binance.cm.json +0 -0
  104. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/resources/instruments/symbols-binance.json +0 -0
  105. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/resources/instruments/symbols-binance.um.json +0 -0
  106. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/resources/instruments/symbols-bitfinex.f.json +0 -0
  107. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/resources/instruments/symbols-bitfinex.json +0 -0
  108. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/resources/instruments/symbols-kraken.f.json +0 -0
  109. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/resources/instruments/symbols-kraken.json +0 -0
  110. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/restarts/__init__.py +0 -0
  111. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/restarts/state_resolvers.py +0 -0
  112. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/restarts/time_finders.py +0 -0
  113. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/restorers/__init__.py +0 -0
  114. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/restorers/balance.py +0 -0
  115. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/restorers/factory.py +0 -0
  116. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/restorers/interfaces.py +0 -0
  117. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/restorers/position.py +0 -0
  118. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/restorers/signal.py +0 -0
  119. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/restorers/state.py +0 -0
  120. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/restorers/utils.py +0 -0
  121. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/ta/__init__.py +0 -0
  122. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/ta/indicators.pxd +0 -0
  123. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/ta/indicators.pyi +0 -0
  124. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/ta/indicators.pyx +0 -0
  125. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/trackers/__init__.py +0 -0
  126. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/trackers/advanced.py +0 -0
  127. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/trackers/composite.py +0 -0
  128. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/trackers/rebalancers.py +0 -0
  129. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/trackers/riskctrl.py +0 -0
  130. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/trackers/sizers.py +0 -0
  131. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/__init__.py +0 -0
  132. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/_pyxreloader.py +0 -0
  133. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/charting/lookinglass.py +0 -0
  134. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/charting/mpl_helpers.py +0 -0
  135. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/collections.py +0 -0
  136. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/marketdata/binance.py +0 -0
  137. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/marketdata/ccxt.py +0 -0
  138. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/marketdata/dukas.py +0 -0
  139. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/misc.py +0 -0
  140. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/ntp.py +0 -0
  141. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/numbers_utils.py +0 -0
  142. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/orderbook.py +0 -0
  143. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/plotting/__init__.py +0 -0
  144. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/plotting/dashboard.py +0 -0
  145. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/plotting/data.py +0 -0
  146. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/plotting/interfaces.py +0 -0
  147. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/plotting/renderers/__init__.py +0 -0
  148. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/plotting/renderers/plotly.py +0 -0
  149. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/questdb.py +0 -0
  150. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/runner/__init__.py +0 -0
  151. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/runner/_jupyter_runner.pyt +0 -0
  152. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/runner/accounts.py +0 -0
  153. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/runner/configs.py +0 -0
  154. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/runner/factory.py +0 -0
  155. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/runner/runner.py +0 -0
  156. {qubx-0.6.27 → qubx-0.6.29}/src/qubx/utils/time.py +0 -0
  157. {qubx-0.6.27 → qubx-0.6.29}/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.27
3
+ Version: 0.6.29
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.27"
7
+ version = "0.6.29"
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"
@@ -52,6 +52,7 @@ class OrdersManagementEngine:
52
52
  _fill_stops_at_price: bool
53
53
  _tick_size: float
54
54
  _last_update_time: dt_64
55
+ _last_data_update_time_ns: int
55
56
 
56
57
  def __init__(
57
58
  self,
@@ -74,6 +75,7 @@ class OrdersManagementEngine:
74
75
  self._fill_stops_at_price = fill_stop_order_at_price
75
76
  self._tick_size = instrument.tick_size
76
77
  self._last_update_time = np.datetime64(0, "ns")
78
+ self._last_data_update_time_ns = 0
77
79
 
78
80
  if not debug:
79
81
  self._dbg = lambda message, **kwargs: None
@@ -99,6 +101,11 @@ class OrdersManagementEngine:
99
101
  timestamp = self.time_service.time()
100
102
  _exec_report = []
101
103
 
104
+ # - pass through data if it's older than previous update
105
+ if mdata.time < self._last_data_update_time_ns:
106
+ return _exec_report
107
+ self._last_data_update_time_ns = mdata.time
108
+
102
109
  # - new quote
103
110
  if isinstance(mdata, Quote):
104
111
  _b, _a = mdata.bid, mdata.ask
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
File without changes
File without changes
File without changes
File without changes