From 186dae52d5fc018431052fa2c109731b596e8193 Mon Sep 17 00:00:00 2001 From: Badr Ghazlane Date: Sun, 16 Jan 2022 15:51:39 +0100 Subject: [PATCH] fix: adapt audit project 4 and fix p1,2 and 3 --- .../projects/project1/readme.md | 2 +- .../projects/project3/readme.md | 5 +- .../projects/project4/Time_series_split.png | Bin 0 -> 62022 bytes .../projects/project4/audit/readme.md | 133 +++++++++++ .../project4/blocking_time_series_split.png | Bin 0 -> 69650 bytes .../projects/project4/metric_plot.png | Bin 0 -> 57234 bytes .../projects/project4/readme.md | 214 ++++++++++++++++++ 7 files changed, 350 insertions(+), 4 deletions(-) create mode 100644 one_md_per_day_format/projects/project4/Time_series_split.png create mode 100644 one_md_per_day_format/projects/project4/audit/readme.md create mode 100644 one_md_per_day_format/projects/project4/blocking_time_series_split.png create mode 100644 one_md_per_day_format/projects/project4/metric_plot.png create mode 100644 one_md_per_day_format/projects/project4/readme.md diff --git a/one_md_per_day_format/projects/project1/readme.md b/one_md_per_day_format/projects/project1/readme.md index deb5914..a04e50d 100644 --- a/one_md_per_day_format/projects/project1/readme.md +++ b/one_md_per_day_format/projects/project1/readme.md @@ -1,4 +1,4 @@ -# First Kaggle +# Your first Kaggle: Titanic ## Introduction diff --git a/one_md_per_day_format/projects/project3/readme.md b/one_md_per_day_format/projects/project3/readme.md index 4350fa4..e440920 100644 --- a/one_md_per_day_format/projects/project3/readme.md +++ b/one_md_per_day_format/projects/project3/readme.md @@ -1,5 +1,4 @@ -# Computer vision - +# Emotions detection with Deep Learning Cameras are everywhere. Videos and images have become one of the most interesting data sets for artificial intelligence. Image processing is a quite board research area, not just filtering, compression, and enhancement. Besides, we are even interested in the question, “what is in images?”, i.e., content analysis of visual inputs, which is part of the main task of computer vision. The study of computer vision could make possible such tasks as 3D reconstruction of scenes, motion capturing, and object recognition, which are crucial for even higher-level intelligence such as image and video understanding, and motion understanding. @@ -33,7 +32,7 @@ The two steps are detailed below. - Participate to this challenge: https://www.kaggle.com/c/digit-recognizer/code . The MNIST dataset is a reference in computer vision. Researchers use it as a benchmark to compare their models. Start first with a logistic regression to understand how to handle images in Python. And then train your first CNN on this data set. -## Face emotions classfication +## Face emotions classification Emotion detection is one of the most researched topics in the modern-day machine learning arena. The ability to accurately detect and identify an emotion opens up numerous doors for Advanced Human Computer Interaction. The aim of this project is to detect up to seven distinct facial emotions in real time. This project runs on top of a Convolutional Neural Network (CNN) that is built with the help of Keras whose backend is TensorFlow in Python. The facial emotions that can be detected and classified by this system are Happy, Sad, Angry, Surprise, Fear, Disgust and Neutral. diff --git a/one_md_per_day_format/projects/project4/Time_series_split.png b/one_md_per_day_format/projects/project4/Time_series_split.png new file mode 100644 index 0000000000000000000000000000000000000000..507f50a0e6e5479f601940b4f2a488d88c5c3c6f GIT binary patch literal 62022 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 C>MFVb literal 0 HcmV?d00001 diff --git a/one_md_per_day_format/projects/project4/audit/readme.md b/one_md_per_day_format/projects/project4/audit/readme.md new file mode 100644 index 0000000..76dfbed --- /dev/null +++ b/one_md_per_day_format/projects/project4/audit/readme.md @@ -0,0 +1,133 @@ +# Financial strategies on the SP500 + + This documents is the correction of the project 4. Some steps are detailed in W1D5E4. TODO: replace with quest name + + +``` +project +│ README.md +│ environment.yml +│ +└───data +│ │ sp500.csv +│ +└───results +│ │ +| |───cross-validation +│ │ │ ml_metrics_train.csv +│ │ │ metric_train.csv +│ │ │ top_10_feature_importance.csv +│ │ │ metric_train.png +│ │ +| |───selected model +│ │ │ selected_model.pkl +│ │ │ selected_model.txt +│ │ │ ml_signal.csv +│ │ +| |───strategy +| | | strategy.png +│ │ │ results.csv +│ │ │ report.md +| +|───scripts (free format) +│ │ features_engineering.py +│ │ gridsearch.py +│ │ model_selection.py +│ │ create_signal.py +│ │ strategy.py + +``` + +###### Does the structure of the project is as below ? + +###### Does the readme file summurize how to run the code and explain the global approach ? + +###### Does the environment contain all libraries used and their versions that are necessary to run the code ? + +###### Do the text files explain the chosen model methodology ? + + +## **Data processing and feature engineering** + +###### Is the data splitted in a train set and test set ? +###### Is the last day of the train set is D and the first day of the test set is D+n with n>0 ? Splitting without considering the time series structure is wrong. + +##### There is no leakage: unfortunately there's no autamated way to check if the dataset is leaked. This step is validated if the features of date d are built as follow: + +| Index | Features |Target | +|----------|:-------------: |------:| +| Day D-1 | Features until D-1 23:59pm | return(D, D+1) | +| Day D | Features until D 23:59pm | return(D+1, D+2) | +| Day D+1 | Features until D+1 23:59pm | return(D+2, D+3) | + +###### Have the features been grouped by ticker before to compute the features ? + +###### - Has the target been grouped by ticker before to compute the futur returns ? + + +## **Machine Learning pipeline** + +### Cross-Validation + +###### Does the CV contain at least 10 folds in total ? +###### Do all train folds have more than 2y history ? If you use time series split, checking that the first fold has more than 2y history is enough. +##### The last validation set of the train set doesn't overlap on the test set. +##### None of the folds contain data from the same day.The split should be done on the dates. +##### There's a plot showing your cross-validation. As usual, all plots should have named axis and a title.If you chose a Time Series Split the plot should look like this: + + +![alt text][timeseries] + +[timeseries]: ../Time_series_split.png "Time Series split" + + +### Model Selection + +##### The test set hasn't been used to train the model and select the model. +###### Is the selected model saved in the pkl file and described in a txt file ? + +### Selected model + +##### The ml metrics computed on the train set are agregated: sum or median. +###### Are the ml metrics saved in a csv file ? +###### Are the top 10 important features per fold are saved in `top_10_feature_importance.csv`? +###### Does `metric_train.png` show a plot similar to the one below ? +*Note that, this can be done also on the test set **IF** this hasn't helped to select the pipeline. * + +![alt text][barplot] + +[barplot]: ../metric_plot.png "Metric plot" + +### Machine learning signal + +##### **The pipeline shouldn't be trained once and predict on all data points !** As explained: The signal has to be generated with the chosen cross validation: train the model on the train set of the first fold, then predict on its validation set; train the model on the train set of the second fold, then predict on its validation set, etc ... Then, concatenate the predictions on the validation sets to build the machine learning signal. + + +## **Strategy backtesting** + +### Convert machine learning signal into a strategy + +##### The transformed machine learning signal (long only, long short, binary, ternary, stock picking, proportional to probability or custom ) is multiplied by the return between d+1 and d+2. As a reminder, the signal at date d predicts wether the return between d+1 and d+2 is increasing or deacreasing. Then, the PnL of date d could be associated with date d, d+1 or d+2. This is arbitrary and should impact the value of the PnL. + +##### You invest the same amount of money every day. One exception: if you invest 1$ per day per stock the amount invested every day may change depending on the strategy chosen. If you take into account the different values of capital invested every day in the calculation of the PnL, the step is still validated. + +### Metrics and plot + +###### Is the Pnl computed as: strategy * futur_return ? +###### Does the strategy give the amount invested at time t on asset i ? + +###### Does the plot `strategy.png` contains an x axis: date ? +###### Does the plot `strategy.png` contains a y axis1: PnL of the strategy at time t ? +###### Does the plot `strategy.png` contains a y axis2: PnL of the SP500 at time t ? +###### Does the plot `strategy.png` use the same scale for y axis1 and y axis2 ? +###### Does the plot `strategy.png` contains a vertical line that shows the separation between train set and test set ? + +### Report + +###### Does the report detail the features used ? + +###### Does the report detail the pipeline used (imputer, scaler, dimension reduction and model) ? + +###### Does the report detail the cross-validation used (length of train sets and validation sets and if possible the cross-validation plot) ? + +###### Does the report detail the strategy chosen (description, PnL plot and the strategy metrics on the train set and test set) ? diff --git a/one_md_per_day_format/projects/project4/blocking_time_series_split.png b/one_md_per_day_format/projects/project4/blocking_time_series_split.png new file mode 100644 index 0000000000000000000000000000000000000000..ed3289cb274c8b4b167fe6879f106040876002a1 GIT binary patch literal 69650 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 Remark: The target used is the return computed on the price and not the price directly. There are statistical reasons for this choice - the price is not stationary. The consequence is that a machine learning model tends to overfit while training on not stationary data. + +### Machine learning pipeline + +- Cross-validation deliverables: + - Implements a cross validation with at least 10 folds. The train set has to be bigger than 2 years history. + - Two types of temporal cross-validations are required: + - Blocking (plot below) + - Time Series split (plot below) + - Make sure the last fold of the train set does not overlap on the test set. + - Make sure the folds do not contain data from the same day. The data should be split on the dates. + - Plot your cross validation as follow: + +![alt text][blocking] + +[blocking]: blocking_time_series_split.png 'Blocking Time Series split' + +![alt text][timeseries] + +[timeseries]: Time_series_split.png 'Time Series split' + +Once you'll have run the gridsearch on the cross validation (choose either Blocking or Time Series split), you'll select the best pipeline on the train set and save it as `selected_model.pkl` and `selected_model.txt` (pipeline hyper-parameters). + +**Note: You may observe that the selected model is not good after analyzing the ml metrics (ON THE TRAIN SET) and select another one. ** + +- ML metrics and feature importances on the selected pipeline on the train set only. + - DataFrame with a Machine learning metrics on train et validation sets on all folds of the train set. Suggested format: columns: ML metrics (AUC, Accuracy, LogLoss), rows: folds, train set and validation set (double index). Save it as `ml_metrics_train.csv` + - Plot. Choose the metric you want. Suggested: AUC Save it as `metric_train.png`. The plot below shows how the plot should look like. + - DataFrame with top 10 important features for each fold. Save it as `top_10_feature_importance.csv` + +![alt text][barplot] + +[barplot]: metric_plot.png 'Metric plot' + +- The signal has to be generated with the chosen cross validation: train the model on the train set of the first fold, then predict on its validation set; train the model on the train set of the second fold, then predict on its validation set, etc ... Then, concatenate the predictions on the validation sets to build the machine learning signal. **The pipeline shouldn't be trained once and predict on all data points !** + +**The output is a DataFrame or Series with a double index ordered with the probability the stock price for asset i increases between d+1 and d+2.** + +- (optional): [Train a RNN/LSTM](https://towardsdatascience.com/predicting-stock-price-with-lstm-13af86a74944). This a nice way to discover and learn about recurrent neural networks. But keep in mind that there are some new neural network architectures that seem to outperform recurrent neural networks: https://towardsdatascience.com/the-fall-of-rnn-lstm-2d1594c74ce0. + + +## Strategy backtesting + +- Backtesting module deliverables. The module takes as input a machine learning signal, convert it into a financial strategy. A financial strategy DataFrame gives the amount invested at time t on asset i. The module returns the following metrics on the train set and the test set. + - PnL plot: save it as `strategy.png` + - x axis: date + - y axis1: PnL of the strategy at time t + - y axis2: PnL of the SP500 at time t + - Use the same scale for y axis1 and y axis2 + - add a line that shows the separation between train set and test set + - Pnl + - Max drawdown. https://www.investopedia.com/terms/d/drawdown.asp + - (Optional): add other metrics as sharpe ratio, volatility, etc ... + - Create a markdown report that explains and save it as `report.md`: + - the features used + - the pipeline used + - imputer + - scaler + - dimension reduction + - model + - the cross-validation used + - length of train sets and validation sets + - cross-validation plot (optional) + - strategy chosen + - description + - PnL plot + - strategy metrics on the train set and test set + +### Example of strategies: +- Long only: + - Binary signal: + 0: do nothing for one day on asset i + 1: take a long position on asset i for 1 day + - Weights proportional to the machine learning signals + - invest x on asset i for on day +- Long and short: For those who search long short strategy on Google, don't get wrong, this has nothing to do with pair trading. + - Binary signal: + - -1: take a short position on asset i for 1 day + - 1: take a long position on asset i for 1 day + - Ternary signal: + - -1: take a short position on asset i for 1 day + - 0: do nothing for one day on asset i + - 1: take a long position on asset i for 1 day + + Notes: + + - Warning! When you don't invest on all stock as in the binary signal or the ternary signal, make sure that you are still investing 1$ per day! + + - In order to simplify the **short position** we consider that this is the opposite of a long position. Example: I take a short one AAPL stock and the price decreases by 20$ on one day. I earn 20$. + +- Stock picking: Take a long position on the k best assets (from the machine learning signal) and short the k worst assets regarding the machine learning signal. + +Here's an example on how to convert a machine learning signal into a financial strategy: + +- Input: + +| Date | Ticker|Machine Learning signal | +|--------|:----: |-----------:| +| Day D-1| AAPL | 0.55 | +| Day D-1| C | 0.36 | +| Day D | AAPL | 0.59 | +| Day D | C | 0.33 | +| Day D+1| AAPL | 0.61 | +| Day D+1| C | 0.33 | + +- Convert it into a binary long only strategy: + - Machine learning signal > 0.5 + +| Date | Ticker|Binary signal | +|--------|:----: |-----------:| +| Day D-1| AAPL | 1 | +| Day D-1| C | 0 | +| Day D | AAPL | 1 | +| Day D | C | 0 | +| Day D+1| AAPL | 1 | +| Day D+1| C | 0 | + + +!!! BE CAREFUL !!!THIS IS EXTREMELY IMPORTANT. + +- Multiply it with the associated return. + + Don't forget the meaning of the signal on day d: it gives the return between d+1 and d+2. You should multiply the binary signal of day by the return computed between d+1 and d+2. Otherwise it's wrong because you use your signal that gives you information on d+1 and d+2 on the past or present. The strategy is leaked ! + +**Assumption**: you have 1$ per day to invest in your strategy. + + +## Project repository structure: + +``` +project +│ README.md +│ environment.yml +│ +└───data +│ │ sp500.csv +│ +└───results +│ │ +| |───cross-validation +│ │ │ ml_metrics_train.csv +│ │ │ metric_train.csv +│ │ │ top_10_feature_importance.csv +│ │ │ metric_train.png +│ │ +| |───selected model +│ │ │ selected_model.pkl +│ │ │ selected_model.txt +│ │ │ ml_signal.csv +│ │ +| |───strategy +| | | strategy.png +│ │ │ results.csv +│ │ │ report.md +| +|───scripts (free format) +│ │ features_engineering.py +│ │ gridsearch.py +│ │ model_selection.py +│ │ create_signal.py +│ │ strategy.py + +``` +Note: `features_engineering.py` can be used in `gridsearch.py` + +