pfund 0.0.1.dev7__tar.gz → 0.0.1.dev9__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 (175) hide show
  1. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/PKG-INFO +20 -6
  2. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/README.md +7 -4
  3. pfund-0.0.1.dev9/pfund/CONTRIBUTING.md +19 -0
  4. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/engines/trade_engine.py +0 -13
  5. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/rest_api.py +5 -2
  6. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/ws_api.py +5 -2
  7. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/exchanges/ws_api_base.py +5 -2
  8. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/managers/connection_manager.py +5 -2
  9. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/managers/strategy_manager.py +4 -1
  10. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/zeromq.py +4 -1
  11. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pyproject.toml +17 -24
  12. pfund-0.0.1.dev7/pfund/CONTRIBUTING.md +0 -16
  13. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/LICENSE +0 -0
  14. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/__init__.py +0 -0
  15. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/accounts/__init__.py +0 -0
  16. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/accounts/account_base.py +0 -0
  17. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/accounts/account_crypto.py +0 -0
  18. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/accounts/account_ib.py +0 -0
  19. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/adapter.py +0 -0
  20. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/analyzer.py +0 -0
  21. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/balances/__init__.py +0 -0
  22. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/balances/balance_base.py +0 -0
  23. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/balances/balance_crypto.py +0 -0
  24. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/balances/balance_ib.py +0 -0
  25. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/brokers/__init__.py +0 -0
  26. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/brokers/broker_backtest.py +0 -0
  27. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/brokers/broker_base.py +0 -0
  28. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/brokers/broker_crypto.py +0 -0
  29. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/brokers/broker_live.py +0 -0
  30. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/brokers/ib/__init__.py +0 -0
  31. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/brokers/ib/broker_ib.py +0 -0
  32. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/brokers/ib/ib_api.py +0 -0
  33. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/brokers/ib/ib_client.py +0 -0
  34. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/brokers/ib/ib_wrapper.py +0 -0
  35. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/cli/__init__.py +0 -0
  36. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/cli/commands/__init__.py +0 -0
  37. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/cli/commands/config.py +0 -0
  38. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/cli/commands/docker_compose.py +0 -0
  39. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/cli/main.py +0 -0
  40. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/config/bybit/config.yml +0 -0
  41. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/config/bybit/lot_sizes_inverse.yml +0 -0
  42. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/config/bybit/lot_sizes_linear.yml +0 -0
  43. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/config/bybit/lot_sizes_option.yml +0 -0
  44. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/config/bybit/lot_sizes_spot.yml +0 -0
  45. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/config/bybit/pdt_matchings_inverse.yml +0 -0
  46. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/config/bybit/pdt_matchings_linear.yml +0 -0
  47. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/config/bybit/pdt_matchings_option.yml +0 -0
  48. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/config/bybit/pdt_matchings_spot.yml +0 -0
  49. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/config/bybit/tick_sizes_inverse.yml +0 -0
  50. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/config/bybit/tick_sizes_linear.yml +0 -0
  51. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/config/bybit/tick_sizes_option.yml +0 -0
  52. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/config/bybit/tick_sizes_spot.yml +0 -0
  53. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/config/configuration.py +0 -0
  54. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/config/ib/config.yml +0 -0
  55. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/config/logging.yml +0 -0
  56. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/config_handler.py +0 -0
  57. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/const/__init__.py +0 -0
  58. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/const/_zmq_routes.py +0 -0
  59. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/const/commons.py +0 -0
  60. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/const/paths.py +0 -0
  61. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/data_tools/data_tool_base.py +0 -0
  62. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/data_tools/data_tool_pandas.py +0 -0
  63. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/datas/__init__.py +0 -0
  64. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/datas/data_bar.py +0 -0
  65. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/datas/data_base.py +0 -0
  66. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/datas/data_quote.py +0 -0
  67. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/datas/data_tick.py +0 -0
  68. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/datas/data_time_based.py +0 -0
  69. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/datas/resolution.py +0 -0
  70. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/datas/timeframe.py +0 -0
  71. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/engines/__init__.py +0 -0
  72. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/engines/backtest_engine.py +0 -0
  73. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/engines/base_engine.py +0 -0
  74. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/engines/test_engine.py +0 -0
  75. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/engines/train_engine.py +0 -0
  76. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/errors.py +0 -0
  77. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/exchanges/__init__.py +0 -0
  78. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/__init__.py +0 -0
  79. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/exchange.py +0 -0
  80. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/rest_api_samples/get_markets_result_inverse +0 -0
  81. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/rest_api_samples/get_markets_result_linear +0 -0
  82. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/rest_api_samples/get_markets_result_option +0 -0
  83. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/rest_api_samples/get_markets_result_spot +0 -0
  84. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/rest_api_samples/get_markets_return_inverse +0 -0
  85. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/rest_api_samples/get_markets_return_linear +0 -0
  86. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/rest_api_samples/get_markets_return_option +0 -0
  87. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/rest_api_samples/get_markets_return_spot +0 -0
  88. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/types.py +0 -0
  89. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/exchanges/exchange_base.py +0 -0
  90. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/exchanges/rest_api_base.py +0 -0
  91. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/__init__.py +0 -0
  92. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/account_summary_tags.py +0 -0
  93. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/client.py +0 -0
  94. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/comm.py +0 -0
  95. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/commission_report.py +0 -0
  96. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/common.py +0 -0
  97. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/connection.py +0 -0
  98. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/contract.py +0 -0
  99. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/decoder.py +0 -0
  100. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/enum_implem.py +0 -0
  101. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/errors.py +0 -0
  102. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/execution.py +0 -0
  103. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/ibapi.pyproj +0 -0
  104. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/message.py +0 -0
  105. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/news.py +0 -0
  106. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/object_implem.py +0 -0
  107. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/order.py +0 -0
  108. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/order_condition.py +0 -0
  109. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/order_state.py +0 -0
  110. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/orderdecoder.py +0 -0
  111. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/reader.py +0 -0
  112. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/scanner.py +0 -0
  113. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/server_versions.py +0 -0
  114. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/softdollartier.py +0 -0
  115. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/tag_value.py +0 -0
  116. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/ticktype.py +0 -0
  117. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/utils.py +0 -0
  118. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/externals/ibapi/wrapper.py +0 -0
  119. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/indicators/__init__.py +0 -0
  120. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/indicators/indicator_base.py +0 -0
  121. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/indicators/ta_indicator.py +0 -0
  122. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/indicators/talib_indicator.py +0 -0
  123. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/investment_profile.py +0 -0
  124. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/main.py +0 -0
  125. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/managers/__init__.py +0 -0
  126. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/managers/base_manager.py +0 -0
  127. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/managers/data_manager.py +0 -0
  128. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/managers/order_manager.py +0 -0
  129. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/managers/portfolio_manager.py +0 -0
  130. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/managers/risk_manager.py +0 -0
  131. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/mixins/backtest.py +0 -0
  132. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/models/__init__.py +0 -0
  133. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/models/model_backtest.py +0 -0
  134. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/models/model_base.py +0 -0
  135. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/models/model_meta.py +0 -0
  136. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/models/pytorch_model.py +0 -0
  137. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/models/sklearn_model.py +0 -0
  138. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/orders/__init__.py +0 -0
  139. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/orders/order_base.py +0 -0
  140. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/orders/order_crypto.py +0 -0
  141. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/orders/order_ib.py +0 -0
  142. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/orders/order_statuses.py +0 -0
  143. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/orders/order_time_in_force.py +0 -0
  144. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/plogging/__init__.py +0 -0
  145. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/plogging/config.py +0 -0
  146. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/plogging/filters.py +0 -0
  147. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/plogging/formatter.py +0 -0
  148. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/plogging/handlers.py +0 -0
  149. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/portfolio.py +0 -0
  150. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/positions/__init__.py +0 -0
  151. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/positions/position_base.py +0 -0
  152. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/positions/position_crypto.py +0 -0
  153. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/positions/position_ib.py +0 -0
  154. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/products/__init__.py +0 -0
  155. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/products/product_base.py +0 -0
  156. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/products/product_crypto.py +0 -0
  157. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/products/product_ib.py +0 -0
  158. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/risk_monitor.py +0 -0
  159. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/strategies/__init__.py +0 -0
  160. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/strategies/allocation_strategy.py +0 -0
  161. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/strategies/diversification_strategy.py +0 -0
  162. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/strategies/hedging_strategy.py +0 -0
  163. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/strategies/optimization_strategy.py +0 -0
  164. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/strategies/portfolio_strategy.py +0 -0
  165. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/strategies/rebalancing_strategy.py +0 -0
  166. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/strategies/strategy_backtest.py +0 -0
  167. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/strategies/strategy_base.py +0 -0
  168. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/strategies/strategy_meta.py +0 -0
  169. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/types/backtest.py +0 -0
  170. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/types/common_literals.py +0 -0
  171. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/types/core.py +0 -0
  172. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/universe.py +0 -0
  173. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/utils/aliases.py +0 -0
  174. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/utils/envs.py +0 -0
  175. {pfund-0.0.1.dev7 → pfund-0.0.1.dev9}/pfund/utils/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pfund
3
- Version: 0.0.1.dev7
3
+ Version: 0.0.1.dev9
4
4
  Summary: A Complete Algo-Trading Framework for Machine Learning, enabling trading across TradFi, CeFi and DeFi. Supports Vectorized and Event-Driven Backtesting, Paper and Live Trading
5
5
  Home-page: https://pfund.ai
6
6
  License: Apache-2.0
@@ -13,14 +13,25 @@ Classifier: Programming Language :: Python :: 3
13
13
  Classifier: Programming Language :: Python :: 3.10
14
14
  Classifier: Programming Language :: Python :: 3.11
15
15
  Classifier: Programming Language :: Python :: 3.12
16
+ Provides-Extra: data
17
+ Provides-Extra: ml
16
18
  Requires-Dist: click (>=8.1.7,<9.0.0)
17
19
  Requires-Dist: gitpython (>=3.1.43,<4.0.0)
18
- Requires-Dist: pfeed (>=0.0.1.dev7,<0.0.2)
20
+ Requires-Dist: mlflow (>=2.11.3,<3.0.0) ; extra == "ml"
21
+ Requires-Dist: orjson (>=3.9.14,<4.0.0) ; extra == "data"
22
+ Requires-Dist: pfeed[boost,data,df] (>=0.0.1.dev9,<0.0.2) ; extra == "data"
19
23
  Requires-Dist: platformdirs (>=4.2.0,<5.0.0)
24
+ Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
20
25
  Requires-Dist: python-telegram-bot (>=20.7,<21.0)
21
26
  Requires-Dist: pyyaml (>=6.0.1,<7.0.0)
27
+ Requires-Dist: pyzmq (>=25.1.2,<26.0.0) ; extra == "data"
28
+ Requires-Dist: requests (>=2.31.0,<3.0.0)
22
29
  Requires-Dist: rich (>=13.7.0,<14.0.0)
23
30
  Requires-Dist: schedule (>=1.2.1,<2.0.0)
31
+ Requires-Dist: scikit-learn (>=1.4.0,<2.0.0) ; extra == "ml"
32
+ Requires-Dist: ta (>=0.11.0,<0.12.0) ; extra == "ml"
33
+ Requires-Dist: torch (>=2.1.2,<3.0.0) ; extra == "ml"
34
+ Requires-Dist: tqdm (>=4.66.2,<5.0.0)
24
35
  Requires-Dist: websocket-client (>=1.7.0,<2.0.0)
25
36
  Project-URL: Documentation, https://pfund-docs.pfund.ai
26
37
  Project-URL: Repository, https://github.com/PFund-Software-Ltd/pfund
@@ -132,13 +143,19 @@ This overview already omits some intricate steps, such as data handling and API
132
143
 
133
144
  ### Using [Poetry] (Recommended)
134
145
  ```bash
146
+ # [RECOMMENDED]: trading + backtest
147
+ poetry add "pfund[data]"
148
+
149
+ # [Machine Learning]: trading + backtest + machine learning/technical analysis
150
+ poetry add "pfund[data,ml]"
151
+
152
+ # only trading
135
153
  poetry add pfund
136
154
 
137
155
  # update to the latest version:
138
156
  poetry update pfund
139
157
  ```
140
158
 
141
-
142
159
  ### Using Pip
143
160
  ```bash
144
161
  pip install pfund
@@ -147,12 +164,9 @@ pip install pfund
147
164
  pip install -U pfund
148
165
  ```
149
166
 
150
-
151
167
  ### Checking your installation
152
168
  ```bash
153
169
  $ pfund --version
154
-
155
- pfund, version 0.0.1.dev4
156
170
  ```
157
171
 
158
172
 
@@ -104,13 +104,19 @@ This overview already omits some intricate steps, such as data handling and API
104
104
 
105
105
  ### Using [Poetry] (Recommended)
106
106
  ```bash
107
+ # [RECOMMENDED]: trading + backtest
108
+ poetry add "pfund[data]"
109
+
110
+ # [Machine Learning]: trading + backtest + machine learning/technical analysis
111
+ poetry add "pfund[data,ml]"
112
+
113
+ # only trading
107
114
  poetry add pfund
108
115
 
109
116
  # update to the latest version:
110
117
  poetry update pfund
111
118
  ```
112
119
 
113
-
114
120
  ### Using Pip
115
121
  ```bash
116
122
  pip install pfund
@@ -119,12 +125,9 @@ pip install pfund
119
125
  pip install -U pfund
120
126
  ```
121
127
 
122
-
123
128
  ### Checking your installation
124
129
  ```bash
125
130
  $ pfund --version
126
-
127
- pfund, version 0.0.1.dev4
128
131
  ```
129
132
 
130
133
 
@@ -0,0 +1,19 @@
1
+ ## Installation
2
+ ```bash
3
+ git clone git@github.com:PFund-Software-Ltd/pfund.git
4
+ cd pfund
5
+ git submodule update --init --recursive
6
+ poetry install --all-extras
7
+ ```
8
+
9
+ ## Pull updates
10
+ ```bash
11
+ # --recurse-submodules also updates each submodule to the commit specified by the main repository,
12
+ git pull --recurse-submodules # = git pull + git submodule update --recursive
13
+ ```
14
+
15
+ ## Build Documentation using [jupyterbook](https://jupyterbook.org/)
16
+ ```bash
17
+ # at the root directory, run:
18
+ jb build docs/ [--all]
19
+ ```
@@ -17,7 +17,6 @@ if TYPE_CHECKING:
17
17
  from pfund.types.common_literals import tSUPPORTED_DATA_TOOLS
18
18
 
19
19
  import schedule
20
- import psutil
21
20
 
22
21
  from pfund.engines.base_engine import BaseEngine
23
22
  from pfund.brokers.broker_base import BaseBroker
@@ -114,18 +113,6 @@ class TradeEngine(BaseEngine):
114
113
  if restart_strats := [strat for strat, strategy in self.strategy_manager.strategies.items() if strategy.is_parallel() and not self.strategy_manager.is_process_healthy(strat)]:
115
114
  self.strategy_manager.restart(restart_strats, reason='process not responding')
116
115
 
117
- # TODO, should be called by dashboard
118
- def monitor_cpu_usage(self):
119
- pcts = psutil.cpu_percent(interval=1, percpu=True)
120
- for cpu_num in range(len(pcts)):
121
- pct = pcts[cpu_num]
122
- if pct > 0:
123
- self.logger.warning(f'cpu {cpu_num} has {pct}% usage')
124
-
125
- # TODO, in case no more space for logs
126
- def monitor_memory_usage():
127
- pass
128
-
129
116
  def run_regular_tasks(self):
130
117
  for broker in self.brokers.values():
131
118
  broker.run_regular_tasks()
@@ -1,7 +1,10 @@
1
1
  import urllib
2
2
  import hmac
3
3
  import hashlib
4
- import orjson
4
+ try:
5
+ import orjson as json
6
+ except ImportError:
7
+ import json
5
8
 
6
9
  from requests import Response
7
10
 
@@ -49,7 +52,7 @@ class RestApi(BaseRestApi):
49
52
  recv_window = '5000'
50
53
  query_str = timestamp + account.key + recv_window
51
54
  if req.method == 'POST':
52
- query_str += orjson.dumps(req.json)
55
+ query_str += json.dumps(req.json)
53
56
  elif req.method == 'GET':
54
57
  query_str += urllib.parse.urlencode(req.params)
55
58
  else:
@@ -1,5 +1,8 @@
1
1
  import time
2
- import orjson
2
+ try:
3
+ import orjson as json
4
+ except ImportError:
5
+ import json
3
6
  import hmac
4
7
  from decimal import Decimal
5
8
 
@@ -186,7 +189,7 @@ class WebsocketApi(BaseWebsocketApi):
186
189
 
187
190
  def _on_message(self, ws, msg: bytes):
188
191
  ws_name = ws.name
189
- msg = orjson.loads(msg)
192
+ msg = json.loads(msg)
190
193
  self.logger.debug(f'ws={ws_name} {msg=}')
191
194
  try:
192
195
  if 'op' in msg:
@@ -1,6 +1,9 @@
1
1
  import os
2
2
  import time
3
- import orjson
3
+ try:
4
+ import orjson as json
5
+ except ImportError:
6
+ import json
4
7
  import logging
5
8
  from abc import ABC, abstractmethod
6
9
  from contextlib import suppress
@@ -344,7 +347,7 @@ class BaseWebsocketApi(ABC):
344
347
  def _send(self, ws, msg):
345
348
  try:
346
349
  with suppress(WebSocketConnectionClosedException):
347
- ws.send(orjson.dumps(msg))
350
+ ws.send(json.dumps(msg))
348
351
  except:
349
352
  self.logger.exception(f'ws={ws.name} exception:')
350
353
 
@@ -2,7 +2,10 @@ import time
2
2
  from collections import defaultdict
3
3
  from multiprocessing import Process, Value
4
4
 
5
- import psutil
5
+ try:
6
+ import psutil
7
+ except ImportError:
8
+ pass
6
9
 
7
10
  from pfund.managers.base_manager import BaseManager
8
11
 
@@ -16,7 +19,7 @@ def _start_process(api, stop_flag: Value):
16
19
  if hasattr(current_process, 'cpu_affinity') and assigned_cpus:
17
20
  current_process.cpu_affinity(assigned_cpus)
18
21
  else:
19
- api.logger.debug(f'cpu affinity is not supported')
22
+ api.logger.debug('cpu affinity is not supported')
20
23
 
21
24
  api.start_zmqs()
22
25
  api.connect()
@@ -2,7 +2,10 @@ import time
2
2
  from collections import defaultdict
3
3
  from multiprocessing import Process, Value
4
4
 
5
- import psutil
5
+ try:
6
+ import psutil
7
+ except ImportError:
8
+ pass
6
9
 
7
10
  from pfund.strategies.strategy_base import BaseStrategy
8
11
  from pfund.utils.utils import get_engine_class
@@ -2,7 +2,10 @@ import time
2
2
 
3
3
  from typing import Any
4
4
 
5
- import zmq
5
+ try:
6
+ import zmq
7
+ except ImportError:
8
+ pass
6
9
 
7
10
 
8
11
  class ZeroMQ:
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "pfund"
3
- version = "0.0.1.dev7"
3
+ version = "0.0.1.dev9"
4
4
  description = "A Complete Algo-Trading Framework for Machine Learning, enabling trading across TradFi, CeFi and DeFi. Supports Vectorized and Event-Driven Backtesting, Paper and Live Trading"
5
5
  license = "Apache-2.0"
6
6
  authors = ["Stephen Yau <softwareentrepreneer+pfund@gmail.com>"]
@@ -12,36 +12,32 @@ keywords = ["trading", "algo-trading", "stocks", "cryptos", "cryptocurrencies",
12
12
 
13
13
  [tool.poetry.dependencies]
14
14
  python = ">=3.10 <3.13"
15
- pfeed = "^0.0.1.dev7"
15
+ python-dotenv = "^1.0.1"
16
16
  pyyaml = "^6.0.1"
17
+ tqdm = "^4.66.2"
17
18
  rich = "^13.7.0"
19
+ click = "^8.1.7"
18
20
  schedule = "^1.2.1"
21
+ platformdirs = "^4.2.0"
22
+ requests = "^2.31.0"
19
23
  websocket-client = "^1.7.0"
20
24
  python-telegram-bot = "^20.7"
21
- click = "^8.1.7"
22
- platformdirs = "^4.2.0"
23
25
  gitpython = "^3.1.43"
26
+ pfeed = { version = "^0.0.1.dev9", optional = true, extras = ["df", "data", "boost"] }
27
+ orjson = { version = "^3.9.14", optional = true }
28
+ pyzmq = { version = "^25.1.2", optional = true }
29
+ ta = { version = "^0.11.0", optional = true }
30
+ scikit-learn = { version = "^1.4.0", optional = true }
31
+ torch = { version = "^2.1.2", optional = true }
32
+ mlflow = { version = "^2.11.3", optional = true }
33
+
34
+ [tool.poetry.extras]
35
+ data = ["pfeed", "orjson", "pyzmq"]
36
+ ml = ["ta", "scikit-learn", "torch", "mlflow"]
24
37
 
25
38
  [tool.poetry.scripts]
26
39
  pfund = "pfund.main:run_cli"
27
40
 
28
- [tool.poetry.group.pyodide-incompatible.dependencies]
29
- psutil = "^5.9.8"
30
- orjson = "^3.9.14"
31
- ta = "^0.11.0"
32
- pyzmq = "^25.1.2"
33
-
34
- [tool.poetry.group.ml]
35
- optional = true
36
-
37
- [tool.poetry.group.ml.dependencies]
38
- torch = "^2.1.2"
39
- scikit-learn = "^1.4.0"
40
- mlflow = "^2.11.3"
41
-
42
- [tool.poetry.group.dev]
43
- optional = true
44
-
45
41
  [tool.poetry.group.dev.dependencies]
46
42
  pfeed = {path = "../pfeed", develop = true}
47
43
  pybit = "^5.6.2"
@@ -58,9 +54,6 @@ ruff = "^0.3.5"
58
54
  pytest-mock = "^3.14.0"
59
55
  pytest-cov = "^5.0.0"
60
56
 
61
- [tool.poetry.group.doc]
62
- optional = true
63
-
64
57
  [tool.poetry.group.doc.dependencies]
65
58
  jupyter-book = "^1.0.0"
66
59
  notebook = "^7.1.0"
@@ -1,16 +0,0 @@
1
- ## Installation
2
- ```bash
3
- poetry add pfund --with dev,doc
4
- ```
5
-
6
- ## Build Documentation using [jupyterbook](https://jupyterbook.org/)
7
- ```bash
8
- # at the root directory, run:
9
- jb build docs/ [--all]
10
- ```
11
-
12
- ## Update submodules
13
- ```bash
14
- # run this to see if the version a submodule is using has been changed.
15
- git submodule update
16
- ```
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes