diff --git a/docs/assets/freqai_algorithm-diagram.jpg b/docs/assets/freqai_algorithm-diagram.jpg new file mode 100644 index 000000000..9d02488e9 Binary files /dev/null and b/docs/assets/freqai_algorithm-diagram.jpg differ diff --git a/docs/freqai-configuration.md b/docs/freqai-configuration.md index 5190c59c9..706524744 100644 --- a/docs/freqai-configuration.md +++ b/docs/freqai-configuration.md @@ -130,7 +130,7 @@ The FreqAI strategy requires the user to include the following lines of code in ``` -Notice how the `populate_any_indicators()` is where the user adds their own features ([more information](freqai-feature_engineering.md#feature-engineering)) and labels ([more information](freqai-running.md#setting-classifier-targets)). See a full example at `templates/FreqaiExampleStrategy.py`. +Notice how the `populate_any_indicators()` is where the user adds their own features ([more information](freqai-feature-engineering.md#feature-engineering)) and labels ([more information](freqai-running.md#setting-classifier-targets)). See a full example at `templates/FreqaiExampleStrategy.py`. Another structure to consider is the location of the labels at the bottom of the example function (below `if set_generalized_indicators:`). This is where the user will add single features and labels to their feature set to avoid duplication of them from various configuration parameters that multiply the feature set, such as `include_timeframes`. diff --git a/docs/freqai-developers.md b/docs/freqai-developers.md new file mode 100644 index 000000000..01cdf1e71 --- /dev/null +++ b/docs/freqai-developers.md @@ -0,0 +1,28 @@ +# Development + +The class structure and details algorithmic overview is depicted in the following diagram: + +![image](assets/freqai_algorithm-diagram.jpg) + +As shown, there are three distinct objects comprising `FreqAI`: + +* IFreqaiModel + * Singular persistent object containing all the necessary logic to collect data, store data, process data, engineer features, run training, and inference models. +* FreqaiDataKitchen + * A non-persistent object which is created uniquely for each unique asset/model. Beyond metadata, it also contains a variety of data processing tools. +* FreqaiDataDrawer + * Singular persistent object containing all the historical predictions, models, and save/load methods. + +There are a variety of built-in prediction models which inherit directly from `IFreqaiModel` including: + +* CatboostRegressor +* CatboostRegressorMultiTarget +* CatboostClassifier +* LightGBMRegressor +* LightGBMRegressorMultiTarget +* LightGBMClassifier +* XGBoostRegressor +* XGBoostRegressorMultiTarget +* XGBoostClassifier + +Each of these have full access to all methods in `IFreqaiModel`. And can therefore, override any of those functions at will. However, advanced users will likely stick to overriding `fit()`, `train()`, `predict()`, and `data_cleaning_train/predict()`. \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 95106ae1e..726924b78 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -29,6 +29,7 @@ nav: - Feature engineering: freqai-feature-engineering.md - Running: freqai-running.md - Data handling: freqai-data-handling.md + - Developer guide: freqai-developers.md - Short / Leverage: leverage.md - Utility Sub-commands: utils.md - Plotting: plotting.md