Commit Graph

700 Commits

Author SHA1 Message Date
Matthias
e4caccc353
Merge pull request #7367 from freqtrade/add-continual-learning
add continual learning to catboost and friends
2022-09-10 20:17:28 +02:00
Wagner Costa Santos
311ae8bf1f freqai backtesting - add startup_candle_count at function description 2022-09-10 14:45:42 -03:00
Emre
60eb02bb62
Add XGBoostClassifier 2022-09-10 20:13:16 +03:00
Robert Caulk
2077f84f9b
Merge pull request #7363 from wagnercosta/fixHyperoptFreqai
Fix hyperopt - freqai
2022-09-10 17:02:01 +02:00
Robert Caulk
4a47c63f71
Merge pull request #7374 from th0rntwig/filter-constant-features 2022-09-10 16:58:58 +02:00
robcaulk
10b6aebc5f enable continual learning and evaluation sets on multioutput models. 2022-09-10 16:54:13 +02:00
Wagner Costa Santos
a1f88cca80 merge develop 2022-09-10 10:35:16 -03:00
Wagner Costa Santos
79985fda01 fix backtesting freqai startup candles bug 2022-09-10 10:27:17 -03:00
Matthias
5705b8759b Merge branch 'develop' into add-continual-learning 2022-09-10 08:24:04 +02:00
robcaulk
05581db4e3 ensure columns are only dropped in training 2022-09-09 20:37:21 +02:00
Matthias
97be3318f4 Use Datetime_format from constants 2022-09-09 20:31:02 +02:00
robcaulk
a826c0eb83 ensure signatures match, reduce verbosity 2022-09-09 19:30:53 +02:00
Emre
acb410a0de Remove verbosity params 2022-09-09 19:30:53 +02:00
Emre
df6e43d2c5 Add XGBoostRegressorMultiTarget class 2022-09-09 19:30:53 +02:00
Emre
1b6410d7d1 Add XGBoostRegressor for freqAI, fix mypy errors 2022-09-09 19:30:53 +02:00
Wagner Costa Santos
d38cc06139 Fix freqai backtesting time range issue 2022-09-09 19:27:05 +02:00
Wagner Costa Santos
f4f2884a66 Fix freqai backtesting time range issue 2022-09-07 18:52:58 -03:00
robcaulk
e51d352777 ensure pca is handling same DF as inlier 2022-09-07 19:11:54 +02:00
robcaulk
4c9ac6b7c0 add kwargs, reduce duplicated code 2022-09-07 18:58:55 +02:00
robcaulk
ea7bdac9ed ensure inlier metric can be combined with other cleaning methods 2022-09-07 18:45:16 +02:00
th0rntwig
cdc72bf8ca Correct indexing 2022-09-07 18:14:13 +02:00
th0rntwig
047ded1baa Check for constant columns 2022-09-07 17:47:27 +02:00
wagnercosta
6b7644029c
Merge branch 'freqtrade:develop' into fixHyperoptFreqai 2022-09-07 11:07:51 -03:00
Wagner Costa Santos
8d16dd804d hyperopt - freqai - docs and refactoring 2022-09-06 15:42:47 -03:00
Robert Caulk
d7585161b2
Merge branch 'develop' into add-inlier-metric 2022-09-06 20:40:21 +02:00
robcaulk
97077ba18a add continual learning to catboost and friends 2022-09-06 20:30:46 +02:00
robcaulk
d44296783e isort datakitchen 2022-09-06 20:10:12 +02:00
robcaulk
e83c9b276d fix whitespace 2022-09-06 19:56:52 +02:00
robcaulk
4b28d0495f fix timestamping, move imports, add words to doc 2022-09-06 19:46:58 +02:00
Wagner Costa Santos
2c8e5b191b fix hyperopt - freqai 2022-09-05 17:43:55 -03:00
Wagner Costa Santos
5b826150df fix hyperopt - freqai 2022-09-05 17:43:28 -03:00
robcaulk
78d01810ed reduce code redundancy, ensure live always gets the latest data 2022-09-05 00:12:00 +02:00
Wagner Costa Santos
d43ed186fc fix issue with freqai backtesting at slice dataframe 2022-09-05 00:12:00 +02:00
Robert Caulk
956ea43e55
Merge pull request #7340 from wizrds/sigint-freqai
Support SIGINT in FreqAI
2022-09-04 16:43:36 +02:00
robcaulk
ec76214d02 backup historical predictions pickle and load the backup in case of corruption 2022-09-04 15:56:07 +02:00
robcaulk
69b3fcfd32 Merge branch 'develop' into dev-merge-rl 2022-09-04 11:23:25 +02:00
robcaulk
27dce20b29 fix bug in Base4ActionRLEnv, improve example strats 2022-09-04 11:21:54 +02:00
Robert Caulk
8545d74378
Merge pull request #7331 from th0rntwig/pca
Normalise PCA space
2022-09-03 21:49:54 +02:00
Timothy Pogue
dae3b3d86a support shutting down freqai 2022-09-03 13:24:14 -06:00
robcaulk
5cfb4154eb revert all changes in normalize_data() 2022-09-03 19:48:30 +02:00
Robert Caulk
63514b0443
Merge pull request #7325 from wagnercosta/develop
Improve Freqai backtesting performance
2022-09-03 19:28:04 +02:00
robcaulk
c21808ff98 remove metadata redundancy, fix pca bug 2022-09-03 16:54:30 +02:00
robcaulk
c9be66b5b6 increase test coverage for dk, improve function naming, extra cleaning 2022-09-03 15:52:29 +02:00
Matthias
80b5f035ab Remove typo in log message 2022-09-03 15:01:28 +02:00
robcaulk
599c1c79fb reorganized backtest utilities, test new functionality, improve/update doc 2022-09-03 14:00:01 +02:00
Wagner Costa Santos
af5460cebf Add option to keep models only in memory for backtest 2022-09-02 22:01:53 -03:00
th0rntwig
11b2bc269e Added missing s 2022-09-01 22:37:32 +02:00
th0rntwig
3f8400df10 Normalise PCA space 2022-09-01 21:51:33 +02:00
Wagner Costa Santos
d6e115178a refactoring freqai backtesting - remove duplicate code 2022-09-01 07:09:23 -03:00
Wagner Costa Santos
44d3a9140d Merge branch 'develop' of https://github.com/wagnercosta/freqtrade into develop 2022-08-31 15:37:06 -03:00
Wagner Costa Santos
7bed0450d2 pr review - refactoring backtesting freqai 2022-08-31 15:36:29 -03:00
wagnercosta
3d4497467c
Merge branch 'freqtrade:develop' into develop 2022-08-31 14:47:06 -03:00
robcaulk
240b529533 fix tensorboard path so that users can track all historical models 2022-08-31 16:50:39 +02:00
Richard Jozsa
2493e0c8a5
Unnecessary lines in Base4, and changes for box space, to fit better for our needs (#7324) 2022-08-31 16:37:02 +02:00
Wagner Costa Santos
df51da22ee refactoring freqai backtesting 2022-08-31 11:23:48 -03:00
Matthias
57ff6f8ac5 Init timerange object properly 2022-08-31 10:28:31 +00:00
Matthias
7ba4fda5d7 Implement PR feedback 2022-08-31 10:26:47 +00:00
Matthias
a88ffd2c9d Merge branch 'develop' into move_datadownload 2022-08-31 10:23:45 +00:00
robcaulk
7e8e29e42d use continuous value for inlier_metric 2022-08-30 20:41:37 +02:00
robcaulk
7f52908e87 ensure the lost points are prepended for FreqUI 2022-08-30 18:55:58 +02:00
robcaulk
a58dd0bbf9 add noise feature, improve docstrings 2022-08-30 18:26:24 +02:00
robcaulk
b11742a4c5 integrate inlier metric function 2022-08-30 18:26:24 +02:00
th0rntwig
d3cb211283 Add inlier metric computation 2022-08-30 18:26:24 +02:00
th0rntwig
50e2808667
Fix bug in DI (#7321) 2022-08-30 12:54:39 +02:00
robcaulk
62c0a174c8 allow users to properly reverse train-test data ordering 2022-08-29 11:04:58 +02:00
robcaulk
7766350c15 refactor environment inheritence tree to accommodate flexible action types/counts. fix bug in train profit handling 2022-08-28 19:21:57 +02:00
robcaulk
fcb5d1cb5a remove debugging flag 2022-08-28 13:01:39 +02:00
robcaulk
dd628eb525 add tests for outlier detection and removal functions 2022-08-28 12:56:39 +02:00
robcaulk
1e41c773a0 fix outlier protection 2022-08-28 12:11:29 +02:00
th0rntwig
71f7d68783 Fixed mypy error 2022-08-27 12:44:55 +02:00
elintornquist
86c5ac44e4 Add outlier percentage check 2022-08-26 23:05:07 +02:00
elintornquist
b2d664c63c Change MinPts calculation 2022-08-26 18:57:27 +02:00
robcaulk
bb3523f383 download data homogeneously across timeframes 2022-08-26 18:51:42 +02:00
robcaulk
e7261cf515 add freqai utils.py file 2022-08-26 15:30:28 +02:00
robcaulk
65b552e310 make docs reflect reality, move download_all_data to new utils.py file, automatic startup_candle detection 2022-08-26 15:30:01 +02:00
robcaulk
4b7e640f31 reduce code duplication, optimize auto data download per tf 2022-08-26 13:56:44 +02:00
robcaulk
baa4f8e3d0 remove Base3ActionEnv in favor of Base4Action 2022-08-26 11:04:25 +02:00
richardjozsa
d31926efdf Added Base4Action 2022-08-26 11:04:25 +02:00
robcaulk
3199eb453b reduce code for base use-case, ensure multiproc inherits custom env, add ability to limit ram use. 2022-08-25 19:05:51 +02:00
robcaulk
05ccebf9a1 automate eval freq in multiproc 2022-08-25 12:29:48 +02:00
robcaulk
94cfc8e63f fix multiproc callback, add continual learning to multiproc, fix totalprofit bug in env, set eval_freq automatically, improve default reward 2022-08-25 11:46:18 +02:00
robcaulk
d1bee29b1e improve default reward, fix bugs in environment 2022-08-24 18:32:40 +02:00
robcaulk
a61821e1c6 remove monitor log 2022-08-24 16:33:13 +02:00
robcaulk
bd870e2331 fix monitor bug, set default values in case user doesnt set params 2022-08-24 16:32:14 +02:00
robcaulk
c0cee5df07 add continual retraining feature, handly mypy typing reqs, improve docstrings 2022-08-24 13:00:55 +02:00
robcaulk
b708134c1a switch multiproc thread count to rl_config definition 2022-08-24 13:00:55 +02:00
robcaulk
b26ed7dea4 fix generic reward, add time duration to reward 2022-08-24 13:00:55 +02:00
robcaulk
280a1dc3f8 add live rate, add trade duration 2022-08-24 13:00:55 +02:00
robcaulk
f9a49744e6 add strategy to the freqai object 2022-08-24 13:00:55 +02:00
richardjozsa
a2a4bc05db Fix the state profit calculation logic 2022-08-24 13:00:55 +02:00
robcaulk
29f0e01c4a expose environment reward parameters to the user config 2022-08-24 13:00:55 +02:00
robcaulk
d88a0dbf82 add sb3_contrib models to the available agents. include sb3_contrib in requirements. 2022-08-24 13:00:55 +02:00
robcaulk
8b3a8234ac fix env bug, allow example strat to short 2022-08-24 13:00:55 +02:00
mrzdev
8cd4daad0a Feat/freqai rl dev (#7)
* access trades through get_trades_proxy method to allow backtesting
2022-08-24 13:00:55 +02:00
robcaulk
3eb897c2f8 reuse callback, allow user to acces all stable_baselines3 agents via config 2022-08-24 13:00:55 +02:00
robcaulk
4b9499e321 improve nomenclature and fix short exit bug 2022-08-24 13:00:55 +02:00
sonnhfit
4baa36bdcf fix persist a single training environment for PPO 2022-08-24 13:00:55 +02:00
robcaulk
f95602f6bd persist a single training environment. 2022-08-24 13:00:55 +02:00
robcaulk
5d4e5e69fe reinforce training with state info, reinforce prediction with state info, restructure config to accommodate all parameters from any user imported model type. Set 5Act to default env on TDQN. Clean example config. 2022-08-24 13:00:55 +02:00
sonnhfit
7962a1439b remove keep low profit 2022-08-24 13:00:55 +02:00
sonnhfit
81b5aa66e8 make env keep current position when low profit 2022-08-24 13:00:55 +02:00
sonnhfit
45218faeb0 fix coding convention 2022-08-24 13:00:55 +02:00
robcaulk
b90da46b1b improve price df handling to enable backtesting 2022-08-24 13:00:55 +02:00
MukavaValkku
2080ff86ed 5ac base fixes in logic 2022-08-24 13:00:55 +02:00
robcaulk
16cec7dfbd fix save/reload functionality for stablebaselines 2022-08-24 13:00:55 +02:00
sonnhfit
0475b7cb18 remove unuse code and fix coding conventions 2022-08-24 13:00:55 +02:00
MukavaValkku
d60a166fbf multiproc TDQN with xtra callbacks 2022-08-24 13:00:55 +02:00
robcaulk
dd382dd370 add monitor to eval env so that multiproc can save best_model 2022-08-24 13:00:55 +02:00
robcaulk
69d542d3e2 match config and strats to upstream freqai 2022-08-24 13:00:55 +02:00
robcaulk
e5df39e891 ensuring best_model is placed in ram and saved to disk and loaded from disk 2022-08-24 13:00:55 +02:00
robcaulk
bf7ceba958 set cpu threads in config 2022-08-24 13:00:55 +02:00
MukavaValkku
57c488a6f1 learning_rate + multicpu changes 2022-08-24 13:00:55 +02:00
robcaulk
acf3484e88 add multiprocessing variant of ReinforcementLearningPPO 2022-08-24 13:00:55 +02:00
MukavaValkku
cf0731095f type fix 2022-08-24 13:00:55 +02:00
MukavaValkku
1c81ec6016 3ac and 5ac example strategies 2022-08-24 13:00:55 +02:00
MukavaValkku
13cd18dc9a PPO policy change + verbose=1 2022-08-24 13:00:55 +02:00
robcaulk
926023935f make base 3ac and base 5ac environments. TDQN defaults to 3AC. 2022-08-24 13:00:55 +02:00
MukavaValkku
096533bcb9 3ac to 5ac 2022-08-24 13:00:55 +02:00
MukavaValkku
718c9d0440 action fix 2022-08-24 13:00:55 +02:00
robcaulk
9c78e6c26f base PPO model only customizes reward for 3AC 2022-08-24 13:00:55 +02:00
robcaulk
6048f60f13 get TDQN working with 5 action environment 2022-08-24 13:00:55 +02:00
robcaulk
d4db5c3281 ensure TDQN class is properly named 2022-08-24 13:00:55 +02:00
robcaulk
91683e1dca restructure RL so that user can customize environment 2022-08-24 13:00:55 +02:00
sonnhfit
ecd1f55abc add rl module 2022-08-24 13:00:55 +02:00
MukavaValkku
9b895500b3 initial commit - new dev branch 2022-08-24 13:00:55 +02:00
MukavaValkku
cd3fe44424 callback function and TDQN model added 2022-08-24 13:00:55 +02:00
MukavaValkku
01232e9a1f callback function and TDQN model added 2022-08-24 13:00:55 +02:00
MukavaValkku
8eeaab2746 add reward function 2022-08-24 13:00:55 +02:00
MukavaValkku
ec813434f5 ReinforcementLearningModel 2022-08-24 13:00:55 +02:00
MukavaValkku
2f4d73eb06 Revert "ReinforcementLearningModel"
This reverts commit 4d8dfe1ff1daa47276eda77118ddf39c13512a85.
2022-08-24 13:00:55 +02:00
MukavaValkku
c1e7db3130 ReinforcementLearningModel 2022-08-24 13:00:55 +02:00
robcaulk
05ed1b544f Working base for reinforcement learning model 2022-08-24 13:00:40 +02:00
th0rntwig
5ce1c69803
Improve DBSCAN epsilon identification (#7269)
* Improve DBSCAN epsilon identification
2022-08-22 19:57:20 +02:00
robcaulk
ac42c0153d deprecate indicator_max_period_candles, automatically compute startup candles for FreqAI backtesting. 2022-08-22 18:19:07 +02:00
robcaulk
96d8882f1e Plug mem leak, add training timer 2022-08-22 13:30:30 +02:00
longyu
cfa5b3f12c add new line 2022-08-19 12:39:08 +02:00
longyu
277245c69d remove line 2022-08-19 12:39:00 +02:00
longyu
f70b0bab80 remove line 2022-08-17 23:49:20 +02:00
robcaulk
5155afb4e7 clean up code remnants 2022-08-17 15:22:48 +02:00
robcaulk
0c34104e45 extract download-data from freqai to prepare for future async changes 2022-08-17 15:18:44 +02:00
longyu
9c38c27eed ignore sample itself distance for avg_mean_dist computation 2022-08-17 15:09:57 +02:00
longyu
72c34291e3 newline 2022-08-17 15:09:10 +02:00
robcaulk
4c0fda400f fix input shape warning for LGBMClassifier, add sample_weights/eval_weights 2022-08-16 11:41:53 +02:00
Matthias
c7e1719215 Fix interface import sorting 2022-08-15 06:53:02 +02:00
robcaulk
006b11e5d5 fix leftover bug in indicator population 2022-08-14 21:42:55 +02:00
robcaulk
8961b8d560 merge in inference timer and historic predictions handling improvements. 2022-08-14 20:31:15 +02:00
robcaulk
ad846cdb76 fix lock bug, update docstring 2022-08-14 20:24:29 +02:00
Matthias
464d99808f Update doc table formatting 2022-08-14 18:22:01 +02:00
Matthias
a29402ddde Rename and move analysis_lock to data_kitchen 2022-08-14 17:23:14 +02:00
Matthias
3a9ec76c91 Move "freqai.lock" to backend to simplify user interface 2022-08-14 17:19:50 +02:00
Robert Caulk
c9c128f781 finalize logo, improve doc, improve algo overview, fix base tensorflowmodel for mypy 2022-08-14 02:49:01 +02:00
robcaulk
58de20af0f make BaseClassifierModel. Add predict_proba to lightgbm 2022-08-13 20:07:31 +02:00
robcaulk
31be707cc8 clean up code, add docstrings 2022-08-13 19:40:24 +02:00
robcaulk
3e38c1b0bd take dynamic sized tail off historic_predictions as return dataframe to strategy. 2022-08-13 19:40:24 +02:00
robcaulk
7d448fd4ac allow fit_live_predictions access to current pair 2022-08-13 19:40:24 +02:00
robcaulk
1f192be43b avoid denormalizing labels twice 2022-08-13 19:40:24 +02:00
robcaulk
b1b76a2dbe debug classifier with predict proba 2022-08-13 19:40:24 +02:00
robcaulk
23cc21ce59 add predict_proba to base classifier, improve historic predictions handling 2022-08-13 19:40:24 +02:00
robcaulk
fb4b73ce89 ensure dates are saved 2022-08-12 12:03:44 +02:00
robcaulk
2cae3c42e6 remove trade database analyzer, clean up a bit 2022-08-10 17:43:06 +02:00
robcaulk
5a16d5a512 Deactivate database analyzer if user does not use sqlite 2022-08-09 16:36:22 +02:00
robcaulk
e7de812948 Allow user to user pair_dict for persistent storage of custom data 2022-08-09 16:03:10 +02:00
robcaulk
aef086b02e Improved dict typing, timeframe parser, collect dates associated with training data points 2022-08-09 15:30:25 +02:00
Matthias
77b3b8a134 Use main exchange instead of creating a separate instance. 2022-08-08 18:34:11 +00:00
robcaulk
ea64f43e52 bring back auto DF resizing for okx 2022-08-08 01:13:13 +02:00
robcaulk
eb8bde37c1 Add lightgbm classifier, add classifier check test, fix classifier bug. 2022-08-06 17:51:21 +02:00
Matthias
47a30047eb Fix typo 2022-08-06 15:03:10 +02:00
Matthias
b16f57cb0d Minor stylistic fixes 2022-08-06 14:55:46 +02:00
Robert Caulk
c172ce1011 improve flexibility of user defined prediction dataframe 2022-08-06 13:51:19 +02:00
Robert Caulk
07763d0d4f add classifier, improve model naming scheme 2022-08-06 08:33:55 +02:00
Robert Caulk
ce8fbbf743 ensure loading historical df matches frequi indices 2022-08-06 07:25:59 +02:00
robcaulk
60d782e5c5 remove unnecessary function 2022-08-05 21:31:32 +02:00
robcaulk
a42a060ab5 fix DB once and for all. Make DBSCAN more efficient and robust. 2022-08-05 21:29:03 +02:00
Robert Caulk
a3799c4d5d start frequi with historical data if available 2022-08-05 18:27:47 +02:00
robcaulk
29b7b014e5 fix bug in DB path initialization 2022-08-05 18:19:26 +02:00
robcaulk
db1d367941 fix bug associated to fit_live_predictions_candles 2022-08-05 13:46:20 +02:00
robcaulk
05ec5c5e54 generalize database url path for any db type 2022-08-05 12:19:29 +02:00
Robert Caulk
51a6b4289f improve DBSCAN performance for subsequent trainings 2022-08-04 17:41:58 +02:00
Robert Caulk
fe1b8515a8 fix bug in DBSCAN, update doc 2022-08-04 17:00:59 +02:00
robcaulk
29225e4baf add DBSCAN outlier detection feature, add supporting documentation 2022-08-04 12:15:16 +02:00
robcaulk
eae82d0222 fix bug with database url during backtesting. comment out example trade db analysis. 2022-08-03 16:17:57 +02:00
robcaulk
95d3009a95 give user ability to analyze live trade dataframe inside custom prediction model. Add documentation to explain new functionality 2022-08-02 20:14:02 +02:00
robcaulk
946d4c7cfc fix trailing whitespace for flake8 2022-07-31 18:39:46 +02:00
robcaulk
4e68626bcb ensure convolutional window is prepended for frequi consistency 2022-07-31 17:51:19 +02:00
robcaulk
d830105605 *BREAKING CHANGE* remove unnecessary arguments from populate_any_indicators(), accommodate tests 2022-07-31 17:05:29 +02:00
robcaulk
dd8288c090 expose full parameter set for SVM outlier detection. Set default shuffle to false to improve reproducibility 2022-07-30 13:40:05 +02:00
robcaulk
f22b140782 fix backtesting bug, undo move of label stat calc, fix example strat exit logic 2022-07-29 17:27:35 +02:00
robcaulk
59624181bd isort BaseRegressionModel imports 2022-07-29 08:23:44 +02:00
robcaulk
c84d54b35e Fix typing issue, avoid using .get() when unnecessary, convert to fstrings 2022-07-29 08:12:50 +02:00
Matthias
efbd83c56d Small type and typo fixes in freqai_interface 2022-07-28 07:24:30 +02:00
Matthias
a2a0d35a24 Update missing typehints 2022-07-28 07:07:40 +02:00
Matthias
f31106dc61 Minor comment fixes 2022-07-27 07:27:24 +02:00
Matthias
bc760b7eb2 Simplify small segment in datadrawer 2022-07-26 19:41:49 +02:00
robcaulk
324e54c015 fix possible memory leak associated with Catboost Pool object 2022-07-26 17:29:29 +02:00
robcaulk
3f149c4067 fix return type in BaseTensorFlowModel 2022-07-26 16:01:54 +02:00
robcaulk
ad25a4cb56 reduce number of pair_dict lookups, remove coin_first 2022-07-26 15:58:40 +02:00
robcaulk
fb4e8430cd isort auto import sorting 2022-07-26 10:51:39 +02:00
robcaulk
e213d0ad55 isolate data_drawer functions from data_kitchen, accommodate tests, add new test 2022-07-26 10:24:14 +02:00
robcaulk
56b17e6f3c allow user to pass test_size = 0 and avoid using eval sets in prediction models 2022-07-25 19:40:13 +02:00
Robert Caulk
897f18a8c8 ensure proper integer type casting for timestamps. Add check test for backtesting subdaily time periods 2022-07-25 15:07:09 +02:00
Robert Caulk
7b105532d1 fix mypy error and add test for principal component analysis 2022-07-25 11:46:59 +02:00
Robert Caulk
c9d46a5237 finish bringing follow_mode up to date 2022-07-25 09:24:40 +02:00
Robert Caulk
ab587747fb first fix for follower path bug 2022-07-24 23:32:24 +02:00
Matthias
520ee3f7a1 Convert freqAI into packages 2022-07-24 17:07:45 +02:00
Matthias
1885deb632 More docstring changes 2022-07-24 16:54:39 +02:00
Matthias
70b7a254af Update some areas to use default docstring formatting 2022-07-24 16:51:48 +02:00
Matthias
61c41fd919 Merge branch 'develop' into feat/freqai 2022-07-24 16:18:58 +02:00
Robert Caulk
88e10f7306 add exception for not passing timerange. Remove hard coded arguments for CatboostPredictionModels. Update docs 2022-07-24 09:01:23 +02:00
Robert Caulk
fff39eff9e fix multitarget bug 2022-07-24 08:42:50 +02:00
robcaulk
f3d46613ee move prediction denormalization into datakitchen. remove duplicate associated code. avoid normalization/denormalization for string dtypes. 2022-07-23 17:14:33 +02:00
Matthias
8fa6e8b4ba Remove freqAI model bridge in favor of self.freqai 2022-07-23 17:08:05 +02:00
robcaulk
c91e23dc50 let user avoid normalizing labels 2022-07-23 16:14:13 +02:00
robcaulk
50d630a155 remove unnecessary comments from data_drawer.py 2022-07-23 13:35:44 +02:00
robcaulk
a1cff377ec add record of contribution to data_kitchen.py 2022-07-23 13:32:04 +02:00
robcaulk
c2d6a0e891 add record of contribution to doc and source 2022-07-23 13:04:06 +02:00
robcaulk
5559e605b8 small PR conversation resolutions 2022-07-22 17:46:14 +02:00
robcaulk
40f00196eb use cloudpickle in place of pickle. define Paths once in data_drawer. 2022-07-22 17:37:51 +02:00
robcaulk
98c8a447b2 add LightGBMPredictionMultiModel 2022-07-22 12:40:51 +02:00
robcaulk
afcb0bec00 clean up obsolete comments, move remove_features_from_df to datakitchen 2022-07-22 12:29:20 +02:00
robcaulk
3205788bce extend doc to include descriptions of the return values from FreqAI to the strategy 2022-07-21 22:11:46 +02:00
robcaulk
8033e0bf23 add counter to backtesting log so users know how many more pairs and how many more models will need to be trained 2022-07-21 13:22:12 +02:00
robcaulk
183dec866a remove ability to backtest open ended timeranges (safer) 2022-07-21 13:02:52 +02:00
robcaulk
e694ea1cfd make sure backtesting gets the populated indicators with slimmed down user strat 2022-07-21 12:48:09 +02:00
robcaulk
ca4dd58642 remove superceded function from datakitchen 2022-07-21 12:40:54 +02:00
robcaulk
8f86b0deaa *breaking change* simplify user strat by consolidating feature loops into backend 2022-07-21 12:24:22 +02:00
robcaulk
e7337728bf add separator in folder name just incase an asset ends in an integer 2022-07-21 11:25:28 +02:00
robcaulk
921a7ef216 add requirements-freqai.txt to builds 2022-07-20 15:51:25 +02:00
robcaulk
d43c146676 add more tests for datakitchen functionalities, add regression tests for freqai_interface train/backtest 2022-07-20 12:56:46 +02:00
lolong
9c051958a6
Feat/freqai (#7105)
Vectorize weight setting, log training dates

Co-authored-by: robcaulk <rob.caulk@gmail.com>
2022-07-19 17:49:18 +02:00
robcaulk
714d9534b6 start adding tests 2022-07-19 16:16:44 +02:00
lolong
ed0f8b1189
Improve FreqAI documentation (#7072)
Improve doc + some other small fixes

Co-authored-by: robcaulk <rob.caulk@gmail.com>
2022-07-18 11:57:52 +02:00
Robert Caulk
921f3899f0 revert pickle reading for historic predictions 2022-07-17 16:06:36 +02:00
Robert Caulk
41eeb99177 load pickle file for writing 2022-07-17 10:05:21 +02:00
Robert Caulk
9d184586f1 fix bug in historic prediction saving 2022-07-16 21:16:59 +02:00
Wagner Costa Santos
ca2029a46b fix issue when bot restarts with same identifier, does not load prediction history 2022-07-14 18:55:24 -03:00
robcaulk
4141d165ff add BaseTensorFlowModel class 2022-07-12 19:10:09 +02:00
robcaulk
ef409dd345 Add ground work for TensorFlow models, add protections from common mistakes 2022-07-12 18:09:17 +02:00
Robert Caulk
fea63fba12 Fix saving/loading historic predictions 2022-07-12 10:12:50 +02:00
Robert Caulk
8ce6b18318 start collecting indefinite history of predictions. Allow user to generate statistics on these predictions. Direct FreqAI to save these to disk and reload them if available. 2022-07-11 22:01:48 +02:00
Matthias
3fc92b1b21 Create BaseRegression model - designed to reduce code duplication across currently available models. 2022-07-11 11:33:59 +02:00
Robert Caulk
607455919e Change config parameter names to improve clarity and consistency throughout the code (!!breaking change, please check discord support channel for migration instructions or review templates/FreqaiExampleStrategy.py config_examples/config_freqai_futures.example.json file changes!!) 2022-07-10 12:35:44 +02:00
Matthias
819cc9c0e4 Fully align LightGBM with Catboost 2022-07-10 11:06:18 +02:00
Matthias
58b18770e3 Fix LightGBM missing argument in predict method 2022-07-10 11:05:35 +02:00
Matthias
2e1061af64 Fix faulty LightGBM model 2022-07-09 08:21:42 +00:00
robcaulk
d9acdc9767 remove excess, increase no model warning clarity 2022-07-06 18:20:21 +02:00
robcaulk
4cac67fd66 Catch infrequent issue associated with grabbing first candle 2022-07-05 12:43:33 +02:00
robcaulk
bd3a6ba2fe update backtesting to handle new output framework 2022-07-03 17:34:44 +02:00
robcaulk
8ac8d53c32 All LGBMRegressor model parameters are now set in config 2022-07-03 16:30:01 +02:00
robcaulk
4ff0ef7359 fix bug returning multiple targets for training 2022-07-03 12:15:59 +02:00
robcaulk
ffb39a5029 black formatting on freqai files 2022-07-03 10:59:38 +02:00
robcaulk
106131ff0f Rehaul organization of return values 2022-07-02 18:09:38 +02:00
robcaulk
93e1410ed9 first step toward cleaning output and enabling multimodel training per pair 2022-07-01 14:00:30 +02:00
robcaulk
6c7d02cb18 expose nu in the SVM outlier detection via svm_nu in config 2022-06-28 15:12:25 +02:00
robcaulk
7dfbd432d1 fix config saving bug, assign priorities to pairs in scanning, sleep the scanning loop to reduce CPU usage 2022-06-27 11:35:33 +02:00
robcaulk
68bafa9517 archive config to the model folder, filter out features before returning dataframe to strategy (to alleviate frequi issues)` 2022-06-26 23:03:48 +02:00
robcaulk
051b99791d reduce unnecessary verbosity, fix error on first training sweep, add LightGBMPredictionModel 2022-06-26 19:04:23 +02:00
Robert Caulk
852706cd6b
Fix default behavior for expiration_hours 2022-06-21 08:12:51 +02:00
robcaulk
b35c64b6c0 fix bug in backtest, typo in example strat 2022-06-19 16:41:09 +02:00
robcaulk
3599d18ff6 fix bug in follow_mode, thanks @blood4rc 2022-06-18 12:05:28 +02:00
robcaulk
6da7a98857 add docstrings to new functions, remove superceded code 2022-06-17 16:16:23 +02:00
robcaulk
f631ae911b add model expiration feature, fix bug in DI return values 2022-06-17 14:55:40 +02:00
robcaulk
0b0688a91e ensure scanning purges models 2022-06-16 16:12:38 +02:00
robcaulk
c5de0c49e4 first functional scanning commit 2022-06-16 00:24:18 +02:00
robcaulk
4d472a0ea1 merging datarehaul into scanning branch 2022-06-16 00:22:49 +02:00
Matthias
c981ad4608 Fix missing space 2022-06-12 08:31:02 +02:00
robcaulk
eb47c74096 merge datarehaul into main freqai branch 2022-06-10 20:26:19 +02:00
robcaulk
d9b79d94e4 increase candle update flexibility to allow long sequential trainings that may last more than one candle 2022-06-07 20:57:10 +02:00
robcaulk
66800c7a45 ensure newest candles are always appended 2022-06-07 20:24:23 +02:00
robcaulk
15d049cffe detect if upper tf candles are new or not, append if so. Correct the epoch for candle update check 2022-06-07 19:49:20 +02:00
robcaulk
cab8f517b4 add lock to datadrawer 2022-06-07 01:07:30 +02:00
robcaulk
4b26b6aaec add lock to any historic data access 2022-06-07 00:54:18 +02:00
Robert Caulk
2451ed8c88
Quick bug fix 2022-06-06 15:11:54 -06:00
robcaulk
d6b8801f41 fix follower bug 2022-06-05 04:40:58 +02:00
robcaulk
e8c0dcf9f3 add debug message to timerange 2022-06-03 17:14:07 +02:00
robcaulk
f2762e3b4b fix bug in return_values() 2022-06-03 16:58:51 +02:00
robcaulk
16b4a5b71f rehaul of backend data management - increasing performance by holding history in memory, reducing load on the ratelimit by only pinging exchange once per candle. Improve code readability. 2022-06-03 15:19:46 +02:00
robcaulk
15a971346d catch infinity values when filtering 2022-06-02 17:13:20 +02:00
robcaulk
ace951bf7e another queue bug fix for fresh starts 2022-06-02 13:28:06 +02:00
robcaulk
833d25bda0 Save data after queue reorg 2022-06-01 08:05:38 +02:00
robcaulk
0b0dd8dd80 Force high priority pair to be trained before anything else. 2022-06-01 07:55:05 +02:00
robcaulk
7523ed825e automatically detect maximum required data based on user fed indicators (to avoid NaNs in dataset for rolling indicators), add new config parameter for backtesting to let users increase their startup_candles to accommodate high timeframe indicators, add docs to explain all. Add new feature for automatic indicator duplication according to user defined intervals (exhibited in example strat and configs now). 2022-05-31 18:42:27 +02:00
robcaulk
9b3b08a2bb let follower purge old model files 2022-05-31 15:37:38 +02:00
robcaulk
bac4ced382 Ensure follower predictions are persistent and uniquely stored 2022-05-31 14:35:04 +02:00
robcaulk
70adf55643 Automatically detect and change follower data_path to accommodate remote systems 2022-05-31 12:35:09 +02:00
robcaulk
0306f5ca13 Add autopurge feature so that FreqAI cleans up after itself when it no longer needs old models on disk 2022-05-31 11:58:21 +02:00
robcaulk
45f4f0f603 ensure follower sends back null arrays in case leader hasnt created a model file yet 2022-05-31 01:48:48 +02:00
robcaulk
29d2f59f12 fix PCA bug 2022-05-31 00:40:45 +02:00
robcaulk
606f18e5c1 Add follow_mode feature so that secondary bots can be launched with the same identifier and load models trained by the leader 2022-05-30 21:35:48 +02:00
robcaulk
5b4c649d43 detect variable sized dataframes coming from strat, adjust our stored/returned data accordingly 2022-05-30 13:55:46 +02:00
robcaulk
e229902381 fix bug in previous commit 2022-05-30 12:48:22 +02:00
robcaulk
a20651efd8 Increase performance by only predicting on most recent candle instead of full strat provided dataframe. Collect predictions and store them so that we can feed true predictions back to strategy (so that frequi isnt updating historic predictions based on newly trained models). 2022-05-30 11:37:05 +02:00
robcaulk
2f1a2c1cd7 allow users to store data in custom formats, update spot config to reflect better target horizon to training period ratio 2022-05-30 02:12:31 +02:00
robcaulk
d59eac3321 revert a79032b 2022-05-29 21:33:38 +02:00
robcaulk
a79032bf75 fixing bug in training queue 2022-05-29 20:19:32 +02:00
robcaulk
3f72263278 allow pairs deeper in the queue to get trained if the higher priority pairs dont need training 2022-05-29 20:02:43 +02:00
robcaulk
cc6cae47ec allow pairs deeper in the queue to get trained if the higher priority pairs dont need training 2022-05-29 19:49:43 +02:00
robcaulk
4eb4753e20 allow subdaily retraining for backtesting 2022-05-29 17:44:35 +02:00
robcaulk
ce365eb9e3 improve example strat so that it has dynamic buy and sell logic according to original prediction 2022-05-29 14:45:46 +02:00
robcaulk
4eb29c8810 Dont reset pair priority if it doesnt successfully train 2022-05-28 18:34:26 +02:00
robcaulk
83dd453723 catch errors occuring on background thread, and make sure to keep the ball rolling. Improve pair retraining queue. 2022-05-28 18:26:19 +02:00
robcaulk
e54614fa2f remove remnants of single threaded version, ensure pair queue priority is checked before retraining 2022-05-28 14:55:07 +02:00
robcaulk
2a4d1e2d64 fix bug in setting new timerange for retraining 2022-05-28 12:23:26 +02:00
robcaulk
7870a86e9a fix live retraining bug 2022-05-28 11:38:57 +02:00
robcaulk
0bf915054d handle key check correctly 2022-05-28 11:22:32 +02:00
robcaulk
c5a16e91fb throw user error if user tries to load models but feeds the wrong features (while using PCA) 2022-05-28 11:11:41 +02:00
robcaulk
b8f9c3557b dirty dirty, dont look here (hacking a flag to avoid reloading leverage_tiers in dry/live) 2022-05-27 13:56:34 +02:00
robcaulk
891fb87712 give load_cached_data_for_updating the right flags to avoid redownloading data in dry/live 2022-05-27 13:38:22 +02:00
robcaulk
65fdebab75 let load_pairs_histories load futures candles in live 2022-05-27 13:01:33 +02:00
robcaulk
c080571b7a help futures go dry/live with auto download feature 2022-05-27 12:23:32 +02:00
robcaulk
8a501831d6 fix the error logic on previous commit 2022-05-27 01:15:55 +02:00
robcaulk
23c30dbc10 add error for user trying to backtest with backtest_period<1 2022-05-27 00:43:52 +02:00
robcaulk
6193205012 fix bug for target_mean/std array merging in backtesting 2022-05-26 21:07:50 +02:00
robcaulk
b79d4e8876 Allow user to go live and start from pretrained models (after a completed backtest) by simply reusing the identifier config parameter while dry/live. 2022-05-25 14:40:32 +02:00
robcaulk
7486d9d9e2 proper validation of freqai config parameters 2022-05-25 12:37:25 +02:00
robcaulk
7ff3258607 remove assertions, log error if user has not assigned freqai in config, fix stratify bug 2022-05-25 11:43:45 +02:00
robcaulk
35bed842cb cleanup, add clarity to comments and docstrings 2022-05-25 11:31:03 +02:00
robcaulk
58b5abbaa6 improve multithreaded training queue system 2022-05-24 15:28:38 +02:00
robcaulk
31ae2b3060 alleviate FutureWarning in sklearn about ensuring svm model features are passed with identical order 2022-05-24 14:46:16 +02:00
robcaulk
255d35976e add priority metadata to pairs to avoid a sync of train time + train period 2022-05-24 12:58:53 +02:00
robcaulk
059c285425 paying closer attention to managing live retraining on separate thread without affecting prediction of other coins on master thread 2022-05-24 12:01:01 +02:00
robcaulk
b0d2d13eb1 improve data persistence/mapping for live/dry. This accommodates quick reloads after crash and handles multi-pair cleanly 2022-05-23 21:05:05 +02:00
robcaulk
e1c068ca66 add config asserts, use .get method with default values for optional functionality, move data_cleaning_* to freqai_interface (away from user custom pred model) since it is controlled by config params. 2022-05-23 12:07:09 +02:00
robcaulk
ee3cdd0ffe more cleanup 2022-05-23 09:55:58 +02:00
robcaulk
3587bd82e1 cleanup superceded code 2022-05-23 00:10:36 +02:00
robcaulk
af0cc21af9 Enable hourly/minute retraining in live/dry. Suppress catboost folder output. Update config + constants + docs to reflect updates. 2022-05-23 00:06:26 +02:00
robcaulk
42d95af829 Aggregated commit. Adding support vector machine for outlier detection, improve user interface to dry/live, better standardization, fix various other bugs 2022-05-22 17:51:49 +02:00
robcaulk
c5ecf94177 move live retraining to separate thread. 2022-05-19 21:15:58 +02:00
robcaulk
1fae6c9ef7 keep model accessible in memory to avoid loading objects from disk during live/dry 2022-05-19 19:27:38 +02:00
robcaulk
89eacf2f47 Retrain model if FreqAI found a pretrained model but user strategy is not passing the expected features (user has changed the features in the strategy but has passed a the same config[freqai][identifier]). Logger warning output to user. 2022-05-19 17:15:50 +02:00
Matthias
c81b960791 Fix some typos 2022-05-17 19:58:36 +02:00
robcaulk
db66b82f6f accept open-ended timeranges from user 2022-05-17 19:50:06 +02:00
robcaulk
d1d451c27e auto populate features based on a prepended % in the strategy (remove feature assignment from config). Update doc/constants/example strategy to reflect change 2022-05-17 18:15:03 +02:00
robcaulk
8664e8f9a3 create a prediction_models folder where basic prediction models can live (similar to optimize/hyperopt-loss. Update resolver/docs/and gitignore to accommodate change 2022-05-17 17:13:38 +02:00
robcaulk
80dcd88abf allow user to run config from anywhere on their system 2022-05-15 17:42:15 +02:00
robcaulk
a8022c104a give beta testers more information in the doc 2022-05-15 17:42:15 +02:00
robcaulk
9b3e5faebe create more flexible whitelist, avoid duplicating whitelist features into corr_pairlist, update docs 2022-05-15 17:42:15 +02:00
robcaulk
22bd5556ed add self-retraining functionality for live/dry 2022-05-15 17:42:15 +02:00
robcaulk
178c2014b0 appease mypy 2022-05-15 17:42:15 +02:00
robcaulk
f653ace24b another attempt at fixing datalength bug 2022-05-15 17:42:15 +02:00
robcaulk
b08c0888bb add USERPATH_FREQAIMODELS, remove return values from @abstract methods 2022-05-15 17:42:15 +02:00
robcaulk
b03c7b514d optional style for interfacing freqai with backtesting 2022-05-15 17:42:15 +02:00
robcaulk
3020218096 fix bug on backtest timerange 2022-05-15 17:41:34 +02:00
robcaulk
00ff0c9b91 ensure user defined timerange truncates final backtest so that we arent mismatching data lengths upon return to strategy. Rename DataHandler class to FreqaiDataKitchen 2022-05-15 17:41:34 +02:00
robcaulk
def71a0afe auto build full_timerange and self manage training_timerange 2022-05-15 17:41:34 +02:00
robcaulk
764f9449b4 fix logger, debug some flake8 appeasements 2022-05-15 17:41:34 +02:00
robcaulk
29c2d1d189 use logger in favor of print 2022-05-15 17:38:58 +02:00
robcaulk
99f7e44c30 flake8 passing, use pathlib in lieu of os.path to accommodate windows/mac OS 2022-05-15 17:38:58 +02:00
robcaulk
630d201546 remove trained_stake 2022-05-15 17:38:58 +02:00
robcaulk
b40f8f88ac cleaning and bug fixing 2022-05-15 17:38:58 +02:00
robcaulk
fc837c4daa add freqao backend machinery, user interface, documentation 2022-05-15 17:38:58 +02:00