Qubx 1.2.3.dev4__tar.gz → 1.3.0__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.
Files changed (310) hide show
  1. {qubx-1.2.3.dev4 → qubx-1.3.0}/PKG-INFO +1 -1
  2. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/_version.py +2 -2
  3. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/ta/indicators.pxd +2 -1
  4. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/ta/indicators.pyx +23 -9
  5. {qubx-1.2.3.dev4 → qubx-1.3.0}/.gitignore +0 -0
  6. {qubx-1.2.3.dev4 → qubx-1.3.0}/LICENSE +0 -0
  7. {qubx-1.2.3.dev4 → qubx-1.3.0}/README.md +0 -0
  8. {qubx-1.2.3.dev4 → qubx-1.3.0}/pyproject.toml +0 -0
  9. {qubx-1.2.3.dev4 → qubx-1.3.0}/scripts/build.py +0 -0
  10. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/__init__.py +0 -0
  11. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/_nb_magic.py +0 -0
  12. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/__init__.py +0 -0
  13. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/account.py +0 -0
  14. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/broker.py +0 -0
  15. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/data.py +0 -0
  16. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/iteratedstream.py +0 -0
  17. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/management.py +0 -0
  18. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/ome.py +0 -0
  19. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/optimization.py +0 -0
  20. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/runner.py +0 -0
  21. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/sentinels.py +0 -0
  22. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/simulated_data.py +0 -0
  23. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/simulated_exchange.py +0 -0
  24. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/simulator.py +0 -0
  25. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/transfers.py +0 -0
  26. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/backtester/utils.py +0 -0
  27. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/cli/__init__.py +0 -0
  28. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/cli/commands.py +0 -0
  29. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/cli/deploy.py +0 -0
  30. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/cli/misc.py +0 -0
  31. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/cli/release.py +0 -0
  32. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/cli/resolver.py +0 -0
  33. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/cli/s3.py +0 -0
  34. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/cli/theme.py +0 -0
  35. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/cli/tui.py +0 -0
  36. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/cli/user_config.py +0 -0
  37. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/config.py +0 -0
  38. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/__init__.py +0 -0
  39. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/__init__.py +0 -0
  40. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/account.py +0 -0
  41. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/adapters/__init__.py +0 -0
  42. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/adapters/polling_adapter.py +0 -0
  43. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/broker.py +0 -0
  44. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/connection_manager.py +0 -0
  45. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/data.py +0 -0
  46. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exceptions.py +0 -0
  47. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchange_manager.py +0 -0
  48. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/__init__.py +0 -0
  49. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/base.py +0 -0
  50. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/binance/broker.py +0 -0
  51. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/binance/exchange.py +0 -0
  52. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/bitfinex/bitfinex.py +0 -0
  53. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/bitfinex/bitfinex_account.py +0 -0
  54. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/gateio/__init__.py +0 -0
  55. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/gateio/gateio.py +0 -0
  56. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/hyperliquid/__init__.py +0 -0
  57. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/hyperliquid/account.py +0 -0
  58. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/hyperliquid/broker.py +0 -0
  59. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/hyperliquid/hyperliquid.py +0 -0
  60. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/kraken/kraken.py +0 -0
  61. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/okx/__init__.py +0 -0
  62. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/okx/account.py +0 -0
  63. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/okx/broker.py +0 -0
  64. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/exchanges/okx/okx.py +0 -0
  65. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/factory.py +0 -0
  66. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/handlers/__init__.py +0 -0
  67. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/handlers/base.py +0 -0
  68. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/handlers/factory.py +0 -0
  69. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/handlers/funding_rate.py +0 -0
  70. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/handlers/liquidation.py +0 -0
  71. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/handlers/ohlc.py +0 -0
  72. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/handlers/open_interest.py +0 -0
  73. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/handlers/orderbook.py +0 -0
  74. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/handlers/quote.py +0 -0
  75. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/handlers/trade.py +0 -0
  76. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/rate_limits.py +0 -0
  77. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/subscription_config.py +0 -0
  78. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/subscription_manager.py +0 -0
  79. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/subscription_orchestrator.py +0 -0
  80. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/utils.py +0 -0
  81. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/ccxt/warmup_service.py +0 -0
  82. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/registry.py +0 -0
  83. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/tardis/data.py +0 -0
  84. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/connectors/tardis/utils.py +0 -0
  85. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/control/__init__.py +0 -0
  86. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/control/builtin.py +0 -0
  87. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/control/decorator.py +0 -0
  88. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/control/executor.py +0 -0
  89. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/control/interfaces.py +0 -0
  90. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/control/server.py +0 -0
  91. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/control/types.py +0 -0
  92. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/__init__.py +0 -0
  93. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/account.py +0 -0
  94. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/basics.py +0 -0
  95. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/context.py +0 -0
  96. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/detectors/__init__.py +0 -0
  97. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/detectors/delisting.py +0 -0
  98. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/detectors/stale.py +0 -0
  99. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/errors.py +0 -0
  100. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/exceptions.py +0 -0
  101. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/helpers.py +0 -0
  102. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/initializer.py +0 -0
  103. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/interfaces.py +0 -0
  104. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/loggers.py +0 -0
  105. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/lookups.py +0 -0
  106. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/metrics.py +0 -0
  107. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/mixins/__init__.py +0 -0
  108. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/mixins/market.py +0 -0
  109. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/mixins/processing.py +0 -0
  110. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/mixins/subscription.py +0 -0
  111. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/mixins/trading.py +0 -0
  112. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/mixins/universe.py +0 -0
  113. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/mixins/utils.py +0 -0
  114. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/series.pxd +0 -0
  115. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/series.pyi +0 -0
  116. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/series.pyx +0 -0
  117. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/utils.pyi +0 -0
  118. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/core/utils.pyx +0 -0
  119. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/__init__.py +0 -0
  120. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/cache.py +0 -0
  121. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/containers.py +0 -0
  122. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/guards.py +0 -0
  123. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/registry.py +0 -0
  124. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/storage.py +0 -0
  125. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/storages/ccxt.py +0 -0
  126. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/storages/csv.py +0 -0
  127. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/storages/handy.py +0 -0
  128. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/storages/multi.py +0 -0
  129. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/storages/questdb.py +0 -0
  130. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/storages/stub.py +0 -0
  131. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/storages/utils.py +0 -0
  132. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/data/transformers.py +0 -0
  133. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/emitters/__init__.py +0 -0
  134. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/emitters/base.py +0 -0
  135. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/emitters/composite.py +0 -0
  136. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/emitters/csv.py +0 -0
  137. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/emitters/indicator.py +0 -0
  138. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/emitters/inmemory.py +0 -0
  139. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/emitters/prometheus.py +0 -0
  140. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/emitters/questdb.py +0 -0
  141. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/exporters/__init__.py +0 -0
  142. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/exporters/composite.py +0 -0
  143. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/exporters/formatters/__init__.py +0 -0
  144. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/exporters/formatters/base.py +0 -0
  145. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/exporters/formatters/incremental.py +0 -0
  146. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/exporters/formatters/slack.py +0 -0
  147. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/exporters/formatters/target_position.py +0 -0
  148. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/exporters/redis_streams.py +0 -0
  149. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/exporters/slack.py +0 -0
  150. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/gathering/simplest.py +0 -0
  151. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/health/__init__.py +0 -0
  152. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/health/base.py +0 -0
  153. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/health/dummy.py +0 -0
  154. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/loggers/__init__.py +0 -0
  155. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/loggers/csv.py +0 -0
  156. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/loggers/factory.py +0 -0
  157. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/loggers/inmemory.py +0 -0
  158. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/loggers/mongo.py +0 -0
  159. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/loggers/postgres.py +0 -0
  160. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/notifications/__init__.py +0 -0
  161. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/notifications/composite.py +0 -0
  162. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/notifications/slack.py +0 -0
  163. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/notifications/throttler.py +0 -0
  164. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/pandaz/__init__.py +0 -0
  165. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/pandaz/stats.py +0 -0
  166. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/pandaz/ta.py +0 -0
  167. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/pandaz/utils.py +0 -0
  168. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/plugins/__init__.py +0 -0
  169. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/plugins/loader.py +0 -0
  170. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/rate_limiting/__init__.py +0 -0
  171. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/rate_limiting/backend.py +0 -0
  172. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/rate_limiting/config.py +0 -0
  173. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/rate_limiting/engine.py +0 -0
  174. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/rate_limiting/ip_resolver.py +0 -0
  175. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/rate_limiting/manager.py +0 -0
  176. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/rate_limiting/pools.py +0 -0
  177. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/rate_limiting/redis_backend.py +0 -0
  178. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/_build.py +0 -0
  179. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/crypto-fees.ini +0 -0
  180. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/hyperliquid-spot.json +0 -0
  181. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/hyperliquid.f-perpetual.json +0 -0
  182. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/symbols-binance-spot.json +0 -0
  183. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/symbols-binance.cm-future.json +0 -0
  184. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/symbols-binance.cm-perpetual.json +0 -0
  185. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/symbols-binance.um-future.json +0 -0
  186. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/symbols-binance.um-perpetual.json +0 -0
  187. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/symbols-bitfinex.f-perpetual.json +0 -0
  188. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/symbols-kraken-spot.json +0 -0
  189. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/symbols-kraken.f-future.json +0 -0
  190. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/resources/instruments/symbols-kraken.f-perpetual.json +0 -0
  191. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/restarts/__init__.py +0 -0
  192. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/restarts/state_resolvers.py +0 -0
  193. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/restarts/time_finders.py +0 -0
  194. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/restorers/__init__.py +0 -0
  195. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/restorers/balance.py +0 -0
  196. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/restorers/factory.py +0 -0
  197. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/restorers/interfaces.py +0 -0
  198. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/restorers/position.py +0 -0
  199. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/restorers/signal.py +0 -0
  200. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/restorers/state.py +0 -0
  201. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/restorers/utils.py +0 -0
  202. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/state/__init__.py +0 -0
  203. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/state/dummy.py +0 -0
  204. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/state/redis.py +0 -0
  205. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/ta/__init__.py +0 -0
  206. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/ta/indicators.pyi +0 -0
  207. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/__init__.py +0 -0
  208. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/base.py +0 -0
  209. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/project/accounts.toml.j2 +0 -0
  210. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/project/config.yml.j2 +0 -0
  211. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/project/jlive.sh.j2 +0 -0
  212. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/project/jpaper.sh.j2 +0 -0
  213. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/project/pyproject.toml.j2 +0 -0
  214. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/project/src/{{ strategy_name }}/__init__.py.j2 +0 -0
  215. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/project/src/{{ strategy_name }}/strategy.py.j2 +0 -0
  216. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/project/template.yml +0 -0
  217. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/.claude/skills/qubx-cli/SKILL.md +0 -0
  218. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/.claude/skills/qubx-indicators/SKILL.md +0 -0
  219. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/.claude/skills/simulation-explorer/SKILL.md +0 -0
  220. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/.claude/skills/strategy-release/SKILL.md +0 -0
  221. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/.github/workflows/ci.yml.j2 +0 -0
  222. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/.gitignore.j2 +0 -0
  223. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/.python-version +0 -0
  224. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/.vscode/launch.json +0 -0
  225. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/.vscode/settings.json +0 -0
  226. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/.vscode/tasks.json +0 -0
  227. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/CLAUDE.md.j2 +0 -0
  228. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/README.md.j2 +0 -0
  229. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/configs/.gitkeep +0 -0
  230. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/justfile.j2 +0 -0
  231. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/pyproject.toml.j2 +0 -0
  232. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/research/.gitkeep +0 -0
  233. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/src/{{ strategy_name }}/__init__.py.j2 +0 -0
  234. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/src/{{ strategy_name }}/cli.py.j2 +0 -0
  235. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/src/{{ strategy_name }}/strategy.py.j2 +0 -0
  236. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/template.yml +0 -0
  237. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/repo/tests/test_strategy.py.j2 +0 -0
  238. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/simple/__init__.py.j2 +0 -0
  239. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/simple/accounts.toml.j2 +0 -0
  240. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/simple/config.yml.j2 +0 -0
  241. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/simple/jlive.sh.j2 +0 -0
  242. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/simple/jpaper.sh.j2 +0 -0
  243. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/simple/strategy.py.j2 +0 -0
  244. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/templates/simple/template.yml +0 -0
  245. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/trackers/__init__.py +0 -0
  246. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/trackers/advanced.py +0 -0
  247. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/trackers/composite.py +0 -0
  248. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/trackers/rebalancers.py +0 -0
  249. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/trackers/riskctrl.py +0 -0
  250. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/trackers/sizers.py +0 -0
  251. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/__init__.py +0 -0
  252. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/_pyxreloader.py +0 -0
  253. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/charting/lookinglass.py +0 -0
  254. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/charting/mpl_helpers.py +0 -0
  255. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/charting/orderbook.py +0 -0
  256. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/collections.py +0 -0
  257. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/hft/__init__.py +0 -0
  258. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/hft/numba_utils.py +0 -0
  259. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/hft/orderbook.pyi +0 -0
  260. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/hft/orderbook.pyx +0 -0
  261. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/marketdata/binance.py +0 -0
  262. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/marketdata/ccxt.py +0 -0
  263. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/marketdata/dukas.py +0 -0
  264. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/misc.py +0 -0
  265. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/nonce.py +0 -0
  266. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/ntp.py +0 -0
  267. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/numbers_utils.py +0 -0
  268. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/orderbook.py +0 -0
  269. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/plotting/__init__.py +0 -0
  270. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/plotting/dashboard.py +0 -0
  271. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/plotting/data.py +0 -0
  272. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/plotting/interfaces.py +0 -0
  273. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/plotting/renderers/__init__.py +0 -0
  274. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/plotting/renderers/plotly.py +0 -0
  275. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/questdb.py +0 -0
  276. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/rate_limiter.py +0 -0
  277. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/results.py +0 -0
  278. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/ringbuffer.pxd +0 -0
  279. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/ringbuffer.pyi +0 -0
  280. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/ringbuffer.pyx +0 -0
  281. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/__init__.py +0 -0
  282. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/_jupyter_runner.pyt +0 -0
  283. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/accounts.py +0 -0
  284. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/configs.py +0 -0
  285. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/factory.py +0 -0
  286. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/kernel_service.py +0 -0
  287. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/runner.py +0 -0
  288. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/__init__.py +0 -0
  289. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/app.py +0 -0
  290. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/handlers.py +0 -0
  291. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/init_code.py +0 -0
  292. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/kernel.py +0 -0
  293. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/styles.tcss +0 -0
  294. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/widgets/__init__.py +0 -0
  295. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/widgets/account_summary.py +0 -0
  296. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/widgets/command_input.py +0 -0
  297. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/widgets/debug_log.py +0 -0
  298. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/widgets/orders_table.py +0 -0
  299. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/widgets/positions_table.py +0 -0
  300. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/widgets/quotes_table.py +0 -0
  301. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/runner/textual/widgets/repl_output.py +0 -0
  302. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/s3.py +0 -0
  303. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/slack.py +0 -0
  304. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/throttler.py +0 -0
  305. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/time.py +0 -0
  306. {qubx-1.2.3.dev4 → qubx-1.3.0}/src/qubx/utils/websocket_manager.py +0 -0
  307. {qubx-1.2.3.dev4 → qubx-1.3.0}/tests/strategies/macd_crossover/src/macd_crossover/indicators/macd.py +0 -0
  308. {qubx-1.2.3.dev4 → qubx-1.3.0}/tests/strategies/macd_crossover/src/macd_crossover/models/macd_crossover.py +0 -0
  309. {qubx-1.2.3.dev4 → qubx-1.3.0}/tests/strategies/macd_crossover/src/macd_crossover/models/utils.py +0 -0
  310. {qubx-1.2.3.dev4 → qubx-1.3.0}/tests/strategies/obi_trader/src/obi_trader/models/obi_trader.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Qubx
3
- Version: 1.2.3.dev4
3
+ Version: 1.3.0
4
4
  Summary: Qubx - Quantitative Trading Framework
5
5
  Project-URL: homepage, https://xlydian.com
6
6
  Project-URL: repository, https://github.com/xLydianSoftware/Qubx
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.2.3.dev4'
22
- __version_tuple__ = version_tuple = (1, 2, 3, 'dev4')
21
+ __version__ = version = '1.3.0'
22
+ __version_tuple__ = version_tuple = (1, 3, 0)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -198,7 +198,8 @@ cdef class Rsi(Indicator):
198
198
  cdef object down_moves
199
199
  cdef object smooth_up
200
200
  cdef object smooth_down
201
- cdef double prev_value
201
+ cdef double prev_value # - close of the previous COMPLETED bar (reference for diff)
202
+ cdef double last_value # - current bar's working value (updates on every tick)
202
203
 
203
204
  cpdef double calculate(self, long long time, double value, short new_item_started)
204
205
 
@@ -1264,6 +1264,7 @@ cdef class Rsi(Indicator):
1264
1264
  def __init__(self, str name, TimeSeries series, int period, str smoother="ema"):
1265
1265
  self.period = period
1266
1266
  self.prev_value = np.nan
1267
+ self.last_value = np.nan
1267
1268
 
1268
1269
  # - create internal series for up and down moves
1269
1270
  self.up_moves = TimeSeries("up_moves", series.timeframe, series.max_series_length)
@@ -1278,20 +1279,33 @@ cdef class Rsi(Indicator):
1278
1279
  cpdef double calculate(self, long long time, double value, short new_item_started):
1279
1280
  cdef double diff, up_move, down_move, smooth_u, smooth_d
1280
1281
 
1281
- # - for the first value, store it and return NaN
1282
- if np.isnan(self.prev_value):
1283
- self.prev_value = value
1282
+ # - very first tick ever: initialize working value, emit 0 up/down moves,
1283
+ # - keep prev_value = NaN so no diff is computed until the first bar finalizes
1284
+ if np.isnan(self.last_value):
1285
+ self.last_value = value
1284
1286
  self.up_moves.update(time, 0.0)
1285
1287
  self.down_moves.update(time, 0.0)
1286
1288
  return np.nan
1287
1289
 
1288
- # - calculate price change
1290
+ # - on new bar: the previously tracked working value (last_value) has just
1291
+ # - been finalized as the previous bar's close — promote it to prev_value
1292
+ # - so diff is measured against the true previous-bar close, not against
1293
+ # - any intrabar tick we may have seen earlier.
1289
1294
  if new_item_started:
1290
- diff = value - self.prev_value
1291
- self.prev_value = value
1292
- else:
1293
- # - when updating the same bar, calculate diff from previous closed bar
1294
- diff = value - self.prev_value
1295
+ self.prev_value = self.last_value
1296
+
1297
+ # - track current working value for the bar (updates on every tick)
1298
+ self.last_value = value
1299
+
1300
+ # - still in the first bar (no finalized prev close yet): emit 0 moves
1301
+ # - and NaN — matches the single-call init path from batch replay
1302
+ if np.isnan(self.prev_value):
1303
+ self.up_moves.update(time, 0.0)
1304
+ self.down_moves.update(time, 0.0)
1305
+ return np.nan
1306
+
1307
+ # - diff is always against the previous COMPLETED bar's close
1308
+ diff = value - self.prev_value
1295
1309
 
1296
1310
  # - calculate up and down moves
1297
1311
  if diff > 0:
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