pfund 0.0.1.dev8__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.
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/PKG-INFO +10 -7
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/README.md +7 -4
- pfund-0.0.1.dev9/pfund/CONTRIBUTING.md +19 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/engines/trade_engine.py +0 -13
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/rest_api.py +5 -2
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/ws_api.py +5 -2
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/exchanges/ws_api_base.py +5 -2
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/managers/connection_manager.py +5 -2
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/managers/strategy_manager.py +4 -1
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/zeromq.py +4 -1
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pyproject.toml +4 -4
- pfund-0.0.1.dev8/pfund/CONTRIBUTING.md +0 -11
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/LICENSE +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/__init__.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/accounts/__init__.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/accounts/account_base.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/accounts/account_crypto.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/accounts/account_ib.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/adapter.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/analyzer.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/balances/__init__.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/balances/balance_base.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/balances/balance_crypto.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/balances/balance_ib.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/brokers/__init__.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/brokers/broker_backtest.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/brokers/broker_base.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/brokers/broker_crypto.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/brokers/broker_live.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/brokers/ib/__init__.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/brokers/ib/broker_ib.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/brokers/ib/ib_api.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/brokers/ib/ib_client.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/brokers/ib/ib_wrapper.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/cli/__init__.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/cli/commands/__init__.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/cli/commands/config.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/cli/commands/docker_compose.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/cli/main.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/config/bybit/config.yml +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/config/bybit/lot_sizes_inverse.yml +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/config/bybit/lot_sizes_linear.yml +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/config/bybit/lot_sizes_option.yml +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/config/bybit/lot_sizes_spot.yml +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/config/bybit/pdt_matchings_inverse.yml +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/config/bybit/pdt_matchings_linear.yml +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/config/bybit/pdt_matchings_option.yml +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/config/bybit/pdt_matchings_spot.yml +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/config/bybit/tick_sizes_inverse.yml +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/config/bybit/tick_sizes_linear.yml +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/config/bybit/tick_sizes_option.yml +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/config/bybit/tick_sizes_spot.yml +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/config/configuration.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/config/ib/config.yml +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/config/logging.yml +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/config_handler.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/const/__init__.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/const/_zmq_routes.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/const/commons.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/const/paths.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/data_tools/data_tool_base.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/data_tools/data_tool_pandas.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/datas/__init__.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/datas/data_bar.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/datas/data_base.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/datas/data_quote.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/datas/data_tick.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/datas/data_time_based.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/datas/resolution.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/datas/timeframe.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/engines/__init__.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/engines/backtest_engine.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/engines/base_engine.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/engines/test_engine.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/engines/train_engine.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/errors.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/exchanges/__init__.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/__init__.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/exchange.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/rest_api_samples/get_markets_result_inverse +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/rest_api_samples/get_markets_result_linear +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/rest_api_samples/get_markets_result_option +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/rest_api_samples/get_markets_result_spot +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/rest_api_samples/get_markets_return_inverse +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/rest_api_samples/get_markets_return_linear +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/rest_api_samples/get_markets_return_option +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/rest_api_samples/get_markets_return_spot +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/types.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/exchanges/exchange_base.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/exchanges/rest_api_base.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/__init__.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/account_summary_tags.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/client.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/comm.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/commission_report.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/common.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/connection.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/contract.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/decoder.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/enum_implem.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/errors.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/execution.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/ibapi.pyproj +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/message.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/news.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/object_implem.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/order.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/order_condition.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/order_state.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/orderdecoder.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/reader.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/scanner.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/server_versions.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/softdollartier.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/tag_value.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/ticktype.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/utils.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/externals/ibapi/wrapper.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/indicators/__init__.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/indicators/indicator_base.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/indicators/ta_indicator.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/indicators/talib_indicator.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/investment_profile.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/main.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/managers/__init__.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/managers/base_manager.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/managers/data_manager.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/managers/order_manager.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/managers/portfolio_manager.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/managers/risk_manager.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/mixins/backtest.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/models/__init__.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/models/model_backtest.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/models/model_base.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/models/model_meta.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/models/pytorch_model.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/models/sklearn_model.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/orders/__init__.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/orders/order_base.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/orders/order_crypto.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/orders/order_ib.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/orders/order_statuses.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/orders/order_time_in_force.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/plogging/__init__.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/plogging/config.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/plogging/filters.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/plogging/formatter.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/plogging/handlers.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/portfolio.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/positions/__init__.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/positions/position_base.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/positions/position_crypto.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/positions/position_ib.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/products/__init__.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/products/product_base.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/products/product_crypto.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/products/product_ib.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/risk_monitor.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/strategies/__init__.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/strategies/allocation_strategy.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/strategies/diversification_strategy.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/strategies/hedging_strategy.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/strategies/optimization_strategy.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/strategies/portfolio_strategy.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/strategies/rebalancing_strategy.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/strategies/strategy_backtest.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/strategies/strategy_base.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/strategies/strategy_meta.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/types/backtest.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/types/common_literals.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/types/core.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/universe.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/utils/aliases.py +0 -0
- {pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/utils/envs.py +0 -0
- {pfund-0.0.1.dev8 → 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.
|
|
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
|
|
@@ -19,9 +19,8 @@ Requires-Dist: click (>=8.1.7,<9.0.0)
|
|
|
19
19
|
Requires-Dist: gitpython (>=3.1.43,<4.0.0)
|
|
20
20
|
Requires-Dist: mlflow (>=2.11.3,<3.0.0) ; extra == "ml"
|
|
21
21
|
Requires-Dist: orjson (>=3.9.14,<4.0.0) ; extra == "data"
|
|
22
|
-
Requires-Dist: pfeed[boost,df] (>=0.0.1.
|
|
22
|
+
Requires-Dist: pfeed[boost,data,df] (>=0.0.1.dev9,<0.0.2) ; extra == "data"
|
|
23
23
|
Requires-Dist: platformdirs (>=4.2.0,<5.0.0)
|
|
24
|
-
Requires-Dist: psutil (>=5.9.8,<6.0.0) ; extra == "data"
|
|
25
24
|
Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
|
|
26
25
|
Requires-Dist: python-telegram-bot (>=20.7,<21.0)
|
|
27
26
|
Requires-Dist: pyyaml (>=6.0.1,<7.0.0)
|
|
@@ -32,6 +31,7 @@ Requires-Dist: schedule (>=1.2.1,<2.0.0)
|
|
|
32
31
|
Requires-Dist: scikit-learn (>=1.4.0,<2.0.0) ; extra == "ml"
|
|
33
32
|
Requires-Dist: ta (>=0.11.0,<0.12.0) ; extra == "ml"
|
|
34
33
|
Requires-Dist: torch (>=2.1.2,<3.0.0) ; extra == "ml"
|
|
34
|
+
Requires-Dist: tqdm (>=4.66.2,<5.0.0)
|
|
35
35
|
Requires-Dist: websocket-client (>=1.7.0,<2.0.0)
|
|
36
36
|
Project-URL: Documentation, https://pfund-docs.pfund.ai
|
|
37
37
|
Project-URL: Repository, https://github.com/PFund-Software-Ltd/pfund
|
|
@@ -143,13 +143,19 @@ This overview already omits some intricate steps, such as data handling and API
|
|
|
143
143
|
|
|
144
144
|
### Using [Poetry] (Recommended)
|
|
145
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
|
|
146
153
|
poetry add pfund
|
|
147
154
|
|
|
148
155
|
# update to the latest version:
|
|
149
156
|
poetry update pfund
|
|
150
157
|
```
|
|
151
158
|
|
|
152
|
-
|
|
153
159
|
### Using Pip
|
|
154
160
|
```bash
|
|
155
161
|
pip install pfund
|
|
@@ -158,12 +164,9 @@ pip install pfund
|
|
|
158
164
|
pip install -U pfund
|
|
159
165
|
```
|
|
160
166
|
|
|
161
|
-
|
|
162
167
|
### Checking your installation
|
|
163
168
|
```bash
|
|
164
169
|
$ pfund --version
|
|
165
|
-
|
|
166
|
-
pfund, version 0.0.1.dev4
|
|
167
170
|
```
|
|
168
171
|
|
|
169
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
|
-
|
|
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 +=
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "pfund"
|
|
3
|
-
version = "0.0.1.
|
|
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>"]
|
|
@@ -14,6 +14,7 @@ keywords = ["trading", "algo-trading", "stocks", "cryptos", "cryptocurrencies",
|
|
|
14
14
|
python = ">=3.10 <3.13"
|
|
15
15
|
python-dotenv = "^1.0.1"
|
|
16
16
|
pyyaml = "^6.0.1"
|
|
17
|
+
tqdm = "^4.66.2"
|
|
17
18
|
rich = "^13.7.0"
|
|
18
19
|
click = "^8.1.7"
|
|
19
20
|
schedule = "^1.2.1"
|
|
@@ -22,8 +23,7 @@ requests = "^2.31.0"
|
|
|
22
23
|
websocket-client = "^1.7.0"
|
|
23
24
|
python-telegram-bot = "^20.7"
|
|
24
25
|
gitpython = "^3.1.43"
|
|
25
|
-
pfeed = { version = "^0.0.1.
|
|
26
|
-
psutil = { version = "^5.9.8", optional = true }
|
|
26
|
+
pfeed = { version = "^0.0.1.dev9", optional = true, extras = ["df", "data", "boost"] }
|
|
27
27
|
orjson = { version = "^3.9.14", optional = true }
|
|
28
28
|
pyzmq = { version = "^25.1.2", optional = true }
|
|
29
29
|
ta = { version = "^0.11.0", optional = true }
|
|
@@ -32,7 +32,7 @@ torch = { version = "^2.1.2", optional = true }
|
|
|
32
32
|
mlflow = { version = "^2.11.3", optional = true }
|
|
33
33
|
|
|
34
34
|
[tool.poetry.extras]
|
|
35
|
-
data = ["pfeed", "
|
|
35
|
+
data = ["pfeed", "orjson", "pyzmq"]
|
|
36
36
|
ml = ["ta", "scikit-learn", "torch", "mlflow"]
|
|
37
37
|
|
|
38
38
|
[tool.poetry.scripts]
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
## Build Documentation using [jupyterbook](https://jupyterbook.org/)
|
|
2
|
-
```bash
|
|
3
|
-
# at the root directory, run:
|
|
4
|
-
jb build docs/ [--all]
|
|
5
|
-
```
|
|
6
|
-
|
|
7
|
-
## Update submodules
|
|
8
|
-
```bash
|
|
9
|
-
# run this to see if the version a submodule is using has been changed.
|
|
10
|
-
git submodule update
|
|
11
|
-
```
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/rest_api_samples/get_markets_result_spot
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pfund-0.0.1.dev8 → pfund-0.0.1.dev9}/pfund/exchanges/bybit/rest_api_samples/get_markets_return_spot
RENAMED
|
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
|
|
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
|