From fe3efe072358a9e1632ee29e3d532886ea4d00d0 Mon Sep 17 00:00:00 2001 From: Jacques Joubert Date: Fri, 24 Jun 2022 17:23:37 +0100 Subject: [PATCH 1/8] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 7d5afda..873e9f6 100644 --- a/README.md +++ b/README.md @@ -5,3 +5,5 @@ Code base for the meta-labeling papers published with the Journal of Financial D ## [Theory and Framework (Journal of Financial Data Science)](https://jfds.pm-research.com/content/early/2022/06/23/jfds.2022.1.098) Meta-labeling is a machine learning (ML) layer that sits on top of a base primary strategy to help size positions, filter out false-positive signals, and improve metrics such as the Sharpe ratio and maximum drawdown. This article consolidates the knowledge of several publications into a single work, providing practitioners with a clear framework to support the application of meta-labeling to investment strategies. The relationships between binary classification metrics and strategy performance are explained, alongside answers to many frequently asked questions regarding the technique. The author also deconstructs meta-labeling into three components, using a controlled experiment to show how each component helps to improve strategy metrics and what types of features should be considered in the model specification phase. + +## [Calibration and Position Sizing (Working Paper)] From 432b6b4c1ef8e8c91b78d82d940e635b2d7388fa Mon Sep 17 00:00:00 2001 From: Jacques Joubert Date: Fri, 24 Jun 2022 17:27:01 +0100 Subject: [PATCH 2/8] Update README.md --- README.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 873e9f6..4ee2550 100644 --- a/README.md +++ b/README.md @@ -6,4 +6,15 @@ Code base for the meta-labeling papers published with the Journal of Financial D Meta-labeling is a machine learning (ML) layer that sits on top of a base primary strategy to help size positions, filter out false-positive signals, and improve metrics such as the Sharpe ratio and maximum drawdown. This article consolidates the knowledge of several publications into a single work, providing practitioners with a clear framework to support the application of meta-labeling to investment strategies. The relationships between binary classification metrics and strategy performance are explained, alongside answers to many frequently asked questions regarding the technique. The author also deconstructs meta-labeling into three components, using a controlled experiment to show how each component helps to improve strategy metrics and what types of features should be considered in the model specification phase. -## [Calibration and Position Sizing (Working Paper)] +## Calibration and Position Sizing (Working Paper) + +Working on this paper + + +## Meta-Labeling Model Architectures (Working Paper) + +Working on this paper + +## Ensemble Model Selection Framework for Meta-Labeling (Working Paper) + +Working on this paper From 190457cddefc7e60c7ee4babef56832c1fa23444 Mon Sep 17 00:00:00 2001 From: Jacques Joubert Date: Tue, 30 Aug 2022 14:45:43 +0100 Subject: [PATCH 3/8] Update README.md --- README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4ee2550..19323ab 100644 --- a/README.md +++ b/README.md @@ -6,12 +6,11 @@ Code base for the meta-labeling papers published with the Journal of Financial D Meta-labeling is a machine learning (ML) layer that sits on top of a base primary strategy to help size positions, filter out false-positive signals, and improve metrics such as the Sharpe ratio and maximum drawdown. This article consolidates the knowledge of several publications into a single work, providing practitioners with a clear framework to support the application of meta-labeling to investment strategies. The relationships between binary classification metrics and strategy performance are explained, alongside answers to many frequently asked questions regarding the technique. The author also deconstructs meta-labeling into three components, using a controlled experiment to show how each component helps to improve strategy metrics and what types of features should be considered in the model specification phase. -## Calibration and Position Sizing (Working Paper) - -Working on this paper +## Model Architectures (Journal of Financial Data Science, Fall 2022) +Separating the side and size of a position allows for sophisticated strategy structures to be developed. Modeling the size component can be done through a meta-labeling approach. This article establishes several heterogeneous architectures to account for key aspects of meta-labeling. They serve as a guide for practitioners in the model development process, as well as for researchers to further build on these ideas. An architecture can be developed through the lens of feature- and or strategy-driven approaches. The feature-driven approach exploits the way the information in the data is structured and how the selected models use that information, while a strategy-driven approach specifically aims to incorporate unique characteristics of the underlying trading strategy. Furthermore, the concept of inverse meta-labeling is introduced as a technique to improve the quantity and quality of the side forecasts. -## Meta-Labeling Model Architectures (Working Paper) +## Calibration and Position Sizing (Working Paper) Working on this paper From 95cc1fcdda7d28fa8bdc7fd8cc7408b0b016145e Mon Sep 17 00:00:00 2001 From: MichaelMeyer01 <105858978+MichaelMeyer01@users.noreply.github.com> Date: Wed, 31 Aug 2022 16:49:28 +0200 Subject: [PATCH 4/8] Add files via upload --- .../all_or_nothing_threshold.py | 288 ++++++++++++++++++ 1 file changed, 288 insertions(+) create mode 100644 calibration_and_position_sizing/all_or_nothing_threshold.py diff --git a/calibration_and_position_sizing/all_or_nothing_threshold.py b/calibration_and_position_sizing/all_or_nothing_threshold.py new file mode 100644 index 0000000..f662efc --- /dev/null +++ b/calibration_and_position_sizing/all_or_nothing_threshold.py @@ -0,0 +1,288 @@ +# Imports - not filtered yet + +# Part 1 +import numpy as np +import pandas as pd + +# Part 2 +from sklearn.calibration import CalibratedClassifierCV +from sklearn.preprocessing import StandardScaler +import quantstats as qs + +# Part 3 +from scipy.stats import norm +from statsmodels.distributions.empirical_distribution import ECDF + +# Other +from sklearn.model_selection import train_test_split +from sklearn.linear_model import LogisticRegression +from scipy.optimize import minimize + +# My imports +from data_generation import single_regime, dual_regime, prep_data + +# Silence some warnings +pd.options.mode.chained_assignment = None # default='warn' + +from sklearn.metrics import make_scorer + + +# Make mean ABS scorer +# TODO: COme back to this +def mean_abs_error(y_true, y_predict): + return np.abs(np.array(y_true) - np.array(y_predict)).mean() + + +mean_abs_scorer = make_scorer(mean_abs_error, greater_is_better=False) + +# clear results +filename = "results.csv" +# opening the file with w+ mode truncates the file +f = open(filename, "w+") +f.close() + +# --- Computation Part --- +# ------------------------------------------ + +for z in range(0, 1000, 1): + + # --- Data Prep --- + # ------------------------- + + # Constants + steps = 10000 + prob_switch = 0.20 + stdev = 0.014543365294448746 # About the same as IBM stdev + + # Create dual data set + data = dual_regime(total_steps=steps, prob_switch=prob_switch, stdev=stdev) + + # Prep data, add primary model, get meta_labels + model_data, data = prep_data(data=data, with_flags=True) + + # --- Modeling --- + # -------------------------- + # Train test split + train, test = train_test_split(model_data, test_size=0.4, shuffle=False) + + X_train_regime = train[['rets', 'rets2', 'rets3', 'regime']] + X_test_regime = test[['rets', 'rets2', 'rets3', 'regime']] + + y_train = train['target'] + y_test = test['target'] + + # Add standardScalar as a best practice although in this setting its not really needed. + # Logistic regression is a convex optimisation problem and the global minima is always found. + # We only scale r1, 2, 3 - regime is left unscaled. + scaler = StandardScaler() + X_train_regime_scaled = scaler.fit_transform(X_train_regime[['rets', 'rets2', 'rets3']]) + regime = X_train_regime['regime'].values.reshape((-1, 1)) + X_train_regime_scaled = np.append(X_train_regime_scaled, regime, axis=1) + + # Test data + X_test_regime_scaled = scaler.transform(X_test_regime[['rets', 'rets2', 'rets3']]) + regime = X_test_regime['regime'].values.reshape((-1, 1)) + X_test_regime_scaled = np.append(X_test_regime_scaled, regime, axis=1) + + # ======================================================================================= + # Calibration + # ======================================================================================= + + # Train model (FP) + meta_model_regime = LogisticRegression(random_state=0, penalty='none') + # meta_model_regime.fit(X_train_regime_scaled, y_train) + + # Create calibrator which will use the base logistic model from above + calibrated_model_isotonic = CalibratedClassifierCV(base_estimator=meta_model_regime, + method='isotonic', cv=5, n_jobs=-1, ensemble=True) + calibrated_model_isotonic.fit(X_train_regime_scaled, y_train) + + # Get iso model train probs, and return pandas Series with index as date. + prob_isotonic_train = calibrated_model_isotonic.predict_proba(X_train_regime_scaled)[:, 1] + prob_isotonic_train = pd.Series(prob_isotonic_train, index=X_train_regime.index) + + # Get unscaled prob from secondary model, i.e., the Logistic Regression. + # Get base model train scores + prob_train = np.array([cmodel.base_estimator.predict_proba(X_train_regime_scaled)[:, 1] + for cmodel in calibrated_model_isotonic.calibrated_classifiers_]).mean(axis=0) + prob_train = pd.Series(prob_train, index=X_train_regime.index) + + # Check that the base model and calibrated models align + assert (prob_train.shape == prob_isotonic_train.shape) + + # Get iso model test scores, and return pandas Series with index as date. + prob_isotonic_test = calibrated_model_isotonic.predict_proba(X_test_regime_scaled)[:, 1] + prob_isotonic_test = pd.Series(prob_isotonic_test, index=X_test_regime.index) + + # Get unscaled prob from secondary model, i.e., the Logistic Regression. + # Get base model train scores + prob_test = np.array([cmodel.base_estimator.predict_proba(X_test_regime_scaled)[:, 1] + for cmodel in calibrated_model_isotonic.calibrated_classifiers_]).mean(axis=0) + prob_test = pd.Series(prob_test, index=X_test_regime.index) + + # Check that the base model and calibrated models align + assert (prob_test.shape == prob_isotonic_test.shape) + + # ======================================================================================= + # Add the calibrated and raw probabilities plus the pred to the train and test data sets. + + # # Exp 1: Trade only if P > 0.5 + # # Only take positions with a positive expected payout, i.e., greater than 50% success. + # prob_train[prob_train<0.5] = 0 + # prob_test[prob_test < 0.5] = 0 + # prob_isotonic_train[prob_isotonic_train < 0.5] = 0 + # prob_isotonic_test[prob_isotonic_test < 0.5] = 0 + # # /End Exp 1 + + # Add proba [0, 1] + train['prob'] = prob_train + train['prob_iso'] = prob_isotonic_train + test['prob'] = prob_test + test['prob_iso'] = prob_isotonic_test + + # Add Predictions {0, 1} + train['pred'] = 0 + train['pred_iso'] = 0 + train.loc[prob_train > 0.5, 'pred'] = 1 + train.loc[prob_isotonic_train > 0.5, 'pred_iso'] = 1 + test['pred'] = 0 + test['pred_iso'] = 0 + test.loc[prob_test > 0.5, 'pred'] = 1 + test.loc[prob_isotonic_test > 0.5, 'pred_iso'] = 1 + + # --- Prep Strategy Data --- + # --------------------------------- + # Save forecasts to original data + # Set new columns + data['pred'] = 0 + data['prob'] = 0 + data['prob_iso'] = 0 + data['pred_iso'] = 0 + + # Assign column values + data.loc[train.index, 'pred'] = train['pred'] + data.loc[train.index, 'prob'] = train['prob'] + data.loc[train.index, 'pred_iso'] = train['pred_iso'] + data.loc[train.index, 'prob_iso'] = train['prob_iso'] + data.loc[test.index, 'pred'] = test['pred'] + data.loc[test.index, 'prob'] = test['prob'] + data.loc[test.index, 'pred_iso'] = test['pred_iso'] + data.loc[test.index, 'prob_iso'] = test['prob_iso'] + + # Subset train data + data_train_set = data.loc[train.index[0]:train.index[-1]] + data_test_set = data.loc[test.index[0]:test.index[-1]] + + # Save this to CSV for use in the Kelly analysis notebook + data_train_set.to_csv('train.csv') + data_test_set.to_csv('test.csv') + + # ------------------------------------------------------------------------------------------------------------ + # --- Bet Sizing --- + # ------------------------------------------------------------------------------------------------------------ + + # Get target rets series + target_train = data_train_set['target_rets'] + target_train_p = train['target_rets'] + target_test = data_test_set['target_rets'] + target_test_p = test['target_rets'] + + # ---------------------------------------------------------------- + # A7 - All-or-nothing [Checked] + # ---------------------------------------------------------------- + + # Position sizes on test data + sharpe_r = {} + mean_r = {} + std_dev = {} + mmd = {} + + # normal + for i in range(35, 70, 2): + all_or_nothing = prob_test + all_or_nothing_isotonic = prob_isotonic_test + + threshold = i / 100 + # All or nothing + all_or_nothing = all_or_nothing[all_or_nothing > threshold] + all_or_nothing = all_or_nothing.apply(lambda x: 1 if x >= threshold else 0) + + # Assign position sizes + data_test_set['all_or_nothing_size'] = 0 + + data_test_set.loc[prob_test.index, 'all_or_nothing_size'] = all_or_nothing + + # Get daily rets + data_test_set['all_or_nothing_rets'] = (data_test_set['all_or_nothing_size'] * target_test).shift(1) + + sr = {'{}_aon_sr'.format(threshold): data_test_set['all_or_nothing_rets'].mean() / data_test_set[ + 'all_or_nothing_rets'].std() * np.sqrt( + 252)} + + mean = {'{}_aon_avg'.format(threshold): (1 + data_test_set['all_or_nothing_rets'].mean()) ** 252 - 1} + + stdev = {'{}_aon_std'.format(threshold): data_test_set['all_or_nothing_rets'].std() * np.sqrt(252)} + + mm = {'{}_aon_mm'.format(threshold): qs.stats.max_drawdown( + pd.DataFrame((data_test_set['all_or_nothing_rets'] + 1).cumprod()).dropna())['all_or_nothing_rets']} + + sharpe_r.update(sr) + mean_r.update(mean) + std_dev.update(stdev) + mmd.update(mm) + # final_row = pd.DataFrame(final.values(), index=final.keys()).T + + # calibrated + for i in range(35, 70, 2): + all_or_nothing = prob_test + all_or_nothing_isotonic = prob_isotonic_test + + threshold = i / 100 + + all_or_nothing_isotonic[all_or_nothing_isotonic >= threshold] + all_or_nothing_isotonic = all_or_nothing_isotonic.apply(lambda x: 1 if x >= threshold else 0) + + # Assign position sizes + data_test_set['all_or_nothing_iso_size'] = 0 + data_test_set.loc[all_or_nothing_isotonic.index, 'all_or_nothing_iso_size'] = all_or_nothing_isotonic + + # Get daily rets + data_test_set['all_or_nothing_iso_rets'] = (data_test_set['all_or_nothing_iso_size'] * target_test).shift(1) + + sr = { + '{}_aon_iso_sr'.format(threshold): data_test_set['all_or_nothing_iso_rets'].mean() / data_test_set[ + 'all_or_nothing_iso_rets'].std() * np.sqrt(252)} + + mean = { + '{}_aon_iso_avg'.format(threshold): (1 + data_test_set['all_or_nothing_iso_rets'].mean()) ** 252 - 1} + + stdev = { + '{}_aon_iso_std'.format(threshold): data_test_set['all_or_nothing_iso_rets'].std() * np.sqrt(252)} + + mm = {'{}_aon_iso_mm'.format(threshold): qs.stats.max_drawdown( + pd.DataFrame((data_test_set['all_or_nothing_iso_rets'] + 1).cumprod()))['all_or_nothing_iso_rets']} + + # Compute Max DDs + # Check for negative values (MDDs) and correct + sharpe_r.update(sr) + mean_r.update(mean) + std_dev.update(stdev) + mmd.update(mm) + + + # final_row = pd.DataFrame(final.values(), index=final.keys()).T + + final = {**sharpe_r, **mean_r, **stdev, **mmd} + final_row = pd.DataFrame(final.values(), index=final.keys()).T + # --- Save Report --- + # ------------------------------------------ + # Save results to csv + if z == 0: + final_row.to_csv('aon.csv') + data_final = pd.read_csv('aon.csv', index_col=0) + else: + data_final = pd.read_csv('aon.csv', index_col=0) + concat = pd.concat([data_final, final_row]).reset_index(drop=True) + concat.to_csv('aon.csv') + + print('Simulation ',z) From db68fa8a12339449ecba9ed75a1a7c6a9fafc206 Mon Sep 17 00:00:00 2001 From: MichaelMeyer01 <105858978+MichaelMeyer01@users.noreply.github.com> Date: Wed, 31 Aug 2022 16:52:41 +0200 Subject: [PATCH 5/8] Add files via upload --- .../position_sizing_with_calibration.py | 625 ++++++++++++++++++ 1 file changed, 625 insertions(+) create mode 100644 calibration_and_position_sizing/position_sizing_with_calibration.py diff --git a/calibration_and_position_sizing/position_sizing_with_calibration.py b/calibration_and_position_sizing/position_sizing_with_calibration.py new file mode 100644 index 0000000..3b23fd7 --- /dev/null +++ b/calibration_and_position_sizing/position_sizing_with_calibration.py @@ -0,0 +1,625 @@ +# Imports - not filtered yet + +# Part 1 +import numpy as np +import pandas as pd + +# Part 2 +from sklearn.calibration import CalibratedClassifierCV +from sklearn.preprocessing import StandardScaler +import quantstats as qs + +# Part 3 +from scipy.stats import norm +from statsmodels.distributions.empirical_distribution import ECDF + +# Other +from sklearn.model_selection import train_test_split +from sklearn.linear_model import LogisticRegression + +from scipy.optimize import minimize + +# My imports +from data_generation import single_regime, dual_regime, prep_data + +# Silence some warnings +pd.options.mode.chained_assignment = None # default='warn' + +from sklearn.metrics import make_scorer + + +# Make mean ABS scorer +# TODO: COme back to this +def mean_abs_error(y_true, y_predict): + return np.abs(np.array(y_true) - np.array(y_predict)).mean() + + +mean_abs_scorer = make_scorer(mean_abs_error, greater_is_better=False) + +# clear results +filename = "results.csv" +# opening the file with w+ mode truncates the file +f = open(filename, "w+") +f.close() + +# --- Computation Part --- +# ------------------------------------------ + +for z in range(0, 2, 1): + + # --- Data Prep --- + # ------------------------- + + # Constants + steps = 10000 + prob_switch = 0.20 + stdev = 0.014543365294448746 # About the same as IBM stdev + + # Create dual data set + data = dual_regime(total_steps=steps, prob_switch=prob_switch, stdev=stdev) + + # Prep data, add primary model, get meta_labels + model_data, data = prep_data(data=data, with_flags=True) + + # --- Modeling --- + # -------------------------- + # Train test split + train, test = train_test_split(model_data, test_size=0.4, shuffle=False) + + X_train_regime = train[['rets', 'rets2', 'rets3', 'regime']] + X_test_regime = test[['rets', 'rets2', 'rets3', 'regime']] + + y_train = train['target'] + y_test = test['target'] + + # Add standardScalar as a best practice although in this setting its not really needed. + # Logistic regression is a convex optimisation problem and the global minima is always found. + # We only scale r1, 2, 3 - regime is left unscaled. + scaler = StandardScaler() + X_train_regime_scaled = scaler.fit_transform(X_train_regime[['rets', 'rets2', 'rets3']]) + regime = X_train_regime['regime'].values.reshape((-1, 1)) + X_train_regime_scaled = np.append(X_train_regime_scaled, regime, axis=1) + + # Test data + X_test_regime_scaled = scaler.transform(X_test_regime[['rets', 'rets2', 'rets3']]) + regime = X_test_regime['regime'].values.reshape((-1, 1)) + X_test_regime_scaled = np.append(X_test_regime_scaled, regime, axis=1) + + # ======================================================================================= + # Calibration + # ======================================================================================= + + # Train model (FP) + # logistic regression + meta_model_regime = LogisticRegression(random_state=0, penalty='none') + + # meta_model_regime = svm.SVC(random_state=0,probability=True) + # meta_model_regime.fit(X_train_regime_scaled, y_train) + # meta_model_regime = RandomForestClassifier(n_estimators=5) + # meta_model_regime = LinearDiscriminantAnalysis() + + + # Create calibrator which will use the base logistic model from above + calibrated_model_isotonic = CalibratedClassifierCV(base_estimator=meta_model_regime, + method='isotonic', cv=5, n_jobs=-1, ensemble=True) + calibrated_model_isotonic.fit(X_train_regime_scaled, y_train) + + # Get iso model train probs, and return pandas Series with index as date. + prob_isotonic_train = calibrated_model_isotonic.predict_proba(X_train_regime_scaled)[:, 1] + prob_isotonic_train = pd.Series(prob_isotonic_train, index=X_train_regime.index) + + # Get unscaled prob from secondary model, i.e., the Logistic Regression. + # Get base model train scores + prob_train = np.array([cmodel.base_estimator.predict_proba(X_train_regime_scaled)[:, 1] + for cmodel in calibrated_model_isotonic.calibrated_classifiers_]).mean(axis=0) + prob_train = pd.Series(prob_train, index=X_train_regime.index) + + # Check that the base model and calibrated models align + assert (prob_train.shape == prob_isotonic_train.shape) + + # Get iso model test scores, and return pandas Series with index as date. + prob_isotonic_test = calibrated_model_isotonic.predict_proba(X_test_regime_scaled)[:, 1] + prob_isotonic_test = pd.Series(prob_isotonic_test, index=X_test_regime.index) + + # Get unscaled prob from secondary model, i.e., the Logistic Regression. + # Get base model train scores + prob_test = np.array([cmodel.base_estimator.predict_proba(X_test_regime_scaled)[:, 1] + for cmodel in calibrated_model_isotonic.calibrated_classifiers_]).mean(axis=0) + prob_test = pd.Series(prob_test, index=X_test_regime.index) + + # Check that the base model and calibrated models align + assert (prob_test.shape == prob_isotonic_test.shape) + + # ======================================================================================= + # Add the calibrated and raw probabilities plus the pred to the train and test data sets. + + # # Exp 1: Trade only if P > 0.5 + # # Only take positions with a positive expected payout, i.e., greater than 50% success. + # prob_train[prob_train<0.5] = 0 + # prob_test[prob_test < 0.5] = 0 + # prob_isotonic_train[prob_isotonic_train < 0.5] = 0 + # prob_isotonic_test[prob_isotonic_test < 0.5] = 0 + # # /End Exp 1 + + # Add proba [0, 1] + train['prob'] = prob_train + train['prob_iso'] = prob_isotonic_train + test['prob'] = prob_test + test['prob_iso'] = prob_isotonic_test + + # Add Predictions {0, 1} + train['pred'] = 0 + train['pred_iso'] = 0 + train.loc[prob_train > 0.5, 'pred'] = 1 + train.loc[prob_isotonic_train > 0.5, 'pred_iso'] = 1 + test['pred'] = 0 + test['pred_iso'] = 0 + test.loc[prob_test > 0.5, 'pred'] = 1 + test.loc[prob_isotonic_test > 0.5, 'pred_iso'] = 1 + + # --- Prep Strategy Data --- + # --------------------------------- + # Save forecasts to original data + # Set new columns + data['pred'] = 0 + data['prob'] = 0 + data['prob_iso'] = 0 + data['pred_iso'] = 0 + + # Assign column values + data.loc[train.index, 'pred'] = train['pred'] + data.loc[train.index, 'prob'] = train['prob'] + data.loc[train.index, 'pred_iso'] = train['pred_iso'] + data.loc[train.index, 'prob_iso'] = train['prob_iso'] + data.loc[test.index, 'pred'] = test['pred'] + data.loc[test.index, 'prob'] = test['prob'] + data.loc[test.index, 'pred_iso'] = test['pred_iso'] + data.loc[test.index, 'prob_iso'] = test['prob_iso'] + + # Subset train data + data_train_set = data.loc[train.index[0]:train.index[-1]] + data_test_set = data.loc[test.index[0]:test.index[-1]] + + # Save this to CSV for use in the Kelly analysis notebook + data_train_set.to_csv('train.csv') + data_test_set.to_csv('test.csv') + + # ------------------------------------------------------------------------------------------------------------ + # --- Bet Sizing --- + # ------------------------------------------------------------------------------------------------------------ + + # Get target rets series + target_train = data_train_set['target_rets'] + target_train_p = train['target_rets'] + target_test = data_test_set['target_rets'] + target_test_p = test['target_rets'] + + # ---------------------------------------------------------------- + # A1 - Linear Scaling [Checked] + # ---------------------------------------------------------------- + + # Linear scaling: min, max from train, p from test. + linear_size_test = (prob_test[prob_test > 0.5] - prob_train[prob_train > 0.5].min()) / ( + prob_train[prob_train > 0.5].max() - prob_train[prob_train > 0.5].min()) + linear_size_iso_test = (prob_isotonic_test[prob_isotonic_test > 0.5] - prob_isotonic_train[ + prob_train > 0.5].min()) / ( + prob_isotonic_train[prob_train > 0.5].max() - + prob_isotonic_train[prob_train > 0.5].min()) + + # Assign position sizes + data_test_set['lin_size'] = 0 + data_test_set['lin_iso_size'] = 0 + data_test_set.loc[linear_size_test.index, 'lin_size'] = linear_size_test + data_test_set.loc[linear_size_iso_test.index, 'lin_iso_size'] = linear_size_iso_test + + # Get daily rets of the strategy (vectorised backtest), shifted by 1 to remove lookahead bias + data_test_set['lin_rets'] = (data_test_set['lin_size'] * target_test).shift(1) + data_test_set['lin_iso_rets'] = (data_test_set['lin_iso_size'] * target_test).shift(1) + + + # ---------------------------------------------------------------- + # A2 - Optimal linear fit [Checked] + # ---------------------------------------------------------------- + + def check_stats(rets): + if np.std(rets) == 0.0: + stdev = 10000 + else: + stdev = np.std(rets) + + if (np.mean(rets) <= 0.00001) and (np.mean(rets) >= -0.00001): + mean = -10000 + else: + mean = np.mean(rets) + + return mean, stdev + + + def target_linear(x): + # Linear function + f = lambda p: min(max(x[0] * p + x[1], 0), 1) + f = np.vectorize(f) + # Backtest + rets = f(prob_train[prob_train > 0.5]) * target_train_p[prob_train > 0.5] + # Solve for no positions taken + mean, stdev = check_stats(rets) + # Sharpe Ratio + sr = mean / stdev + return -sr + + + def target_linear_iso(x): + # Linear function + f = lambda p: min(max(x[0] * p + x[1], 0), 1) + f = np.vectorize(f) + # Backtest + rets = f(prob_isotonic_train[prob_isotonic_train > 0.5]) * target_train_p[prob_isotonic_train > 0.5] + # Solve for no positions taken + mean, stdev = check_stats(rets) + # Sharp Ratio + sr = mean / stdev + return -sr + + + # Train model on training data + x0 = np.array([1, 0]) + res = minimize(target_linear, x0, method='nelder-mead', options={'xatol': 1e-8, 'disp': False}) + model = res.x + # Get test position sizes + lops_size = model[0] * prob_test + model[1] + + # Scale size [0, 1] + lops_size[lops_size > 1] = 1 + lops_size[lops_size < 0] = 0 + + # Assign position sizes + data_test_set['lop_size'] = 0 + data_test_set.loc[lops_size.index, 'lop_size'] = lops_size + + # Get daily rets + data_test_set['lop_rets'] = (data_test_set['lop_size'] * target_test).shift(1) + + # Do ISO version + # Train model on training data + x0 = np.array([1, 0]) + res = minimize(target_linear_iso, x0, method='nelder-mead', options={'xatol': 1e-8, 'disp': False}) + model = res.x + # Get test position sizes + lops_iso_size = model[0] * prob_isotonic_test + model[1] + + # Scale size [0, 1] + lops_iso_size[lops_iso_size > 1] = 1 + lops_iso_size[lops_iso_size < 0] = 0 + + # Assign position sizes + data_test_set['lops_iso_size'] = 0 + data_test_set.loc[lops_iso_size.index, 'lops_iso_size'] = lops_iso_size + + # Get daily rets + data_test_set['lop_iso_rets'] = (data_test_set['lops_iso_size'] * target_test).shift(1) + + + # ---------------------------------------------------------------- + # B1 - de Prado's Bet Sizing [Checked] A + # ---------------------------------------------------------------- + + def de_prado_bet_size(prob_series, clip=True): + # Can't compute for p = 1 or p = 0, leads to inf. + p = prob_series.copy() + p[p == 1] = 0.99999 + p[p == 0] = 0.00001 + + # Getting max value from training set + num_classes = 2 + dp_sizes = (p - 1 / num_classes) / ((p * (1 - p)) ** 0.5) + + dp_t_sizes = dp_sizes.apply(lambda s: norm.cdf(s)) + dp_bet_sizes = dp_t_sizes + + # no sigmoid function, only clipping? + dp_bet_sizes[dp_bet_sizes < 0.5] = 0 + + return dp_bet_sizes + + + # Get sizes for test data + dp_size = de_prado_bet_size(prob_test, clip=True) + dp_size_iso = de_prado_bet_size(prob_isotonic_test, clip=True) + + # Assign position sizes + data_test_set['dp_size'] = 0 + data_test_set['dp_iso_size'] = 0 + data_test_set.loc[dp_size.index, 'dp_size'] = dp_size + data_test_set.loc[dp_size_iso.index, 'dp_iso_size'] = dp_size_iso + + # Get daily rets + data_test_set['dp_rets'] = (data_test_set['dp_size'] * target_test).shift(1) + data_test_set['dp_iso_rets'] = (data_test_set['dp_iso_size'] * target_test).shift(1) + + if (data_test_set['dp_iso_rets'].std() == 0) or (data_test_set['dp_iso_rets'].mean() == 0): + print('DP') + print(dp_size_iso.mean()) + + # ---------------------------------------------------------------- + # B2 - ECDF [Checked] A + # ---------------------------------------------------------------- + + # Fit ECDF on training data for prob greater than > 0 + ecdf = ECDF(prob_train[prob_train > 0.5]) + ecdf_iso = ECDF(prob_isotonic_train[prob_isotonic_train > 0.5]) + + # ECDF Position Sizing on test data + ecdf_size = prob_test.apply(lambda x: ecdf(x) if x > 0.5 else 0) + ecdf_size_iso = prob_isotonic_test.apply(lambda x: ecdf_iso(x) if x > 0.5 else 0) + + # Daily data update with position sizes + data_test_set['ecdf_size'] = 0 + data_test_set['ecdf_size_iso'] = 0 + data_test_set.loc[ecdf_size.index, 'ecdf_size'] = ecdf_size + data_test_set.loc[ecdf_size_iso.index, 'ecdf_size_iso'] = ecdf_size_iso + + # Backtest + data_test_set['ecdf_rets'] = (data_test_set['ecdf_size'] * target_test).shift(1) + data_test_set['ecdf_iso_rets'] = (data_test_set['ecdf_size_iso'] * target_test).shift(1) + + + # ---------------------------------------------------------------- + # B3 - Sigmoid optimal fit [Checked] + # ---------------------------------------------------------------- + + def target_sigmoid(x): + # Apply sigmoid position sizing + f = lambda p: min(max(1 / (1 + np.exp(-x[0] * p - x[1])), 0), 1) + f = np.vectorize(f) + + # Backtest + sharpe ratio + rets = f(prob_train[prob_train > 0.5]) * target_train_p[prob_train > 0.5] + # Solve for no positions taken + mean, stdev = check_stats(rets) + # Sharpe Ratio + sharp_ratio = mean / stdev + return -sharp_ratio + + + def target_iso_sigmoid(x): + # Apply sigmoid position sizing + f = lambda p: min(max(1 / (1 + np.exp(-x[0] * p - x[1])), 0), 1) + f = np.vectorize(f) + + # Backtest + sharpe ratio + rets = f(prob_isotonic_train[prob_isotonic_train > 0.5]) * target_train_p[prob_isotonic_train > 0.5] + # Solve for no positions taken + mean, stdev = check_stats(rets) + # Sharpe Ratio + sharp_ratio = mean / stdev + return -sharp_ratio + + + # Train model on training data + x0 = np.array([1, 0]) + res = minimize(target_sigmoid, x0, method='nelder-mead', options={'xatol': 1e-8, 'disp': False}) + model = res.x + # Get size on test + sig_size = 1 / (1 + np.exp(-model[0] * prob_test - model[1])) + + sig_size = sig_size[prob_test > 0.5] + + # Train model on training data + x0 = np.array([1, 0]) + res = minimize(target_iso_sigmoid, x0, method='nelder-mead', options={'xatol': 1e-8, 'disp': False}) + model = res.x + # Get size on test + sig_iso_size = 1 / (1 + np.exp(-model[0] * prob_isotonic_test - model[1])) + + sig_iso_size = sig_iso_size[prob_isotonic_test > 0.5] + + # Assign position sizes + data_test_set['sop_size'] = 0 + data_test_set.loc[sig_size.index, 'sop_size'] = sig_size + data_test_set['sop_size_iso'] = 0 + data_test_set.loc[sig_iso_size.index, 'sop_size_iso'] = sig_iso_size + + # Get daily rets + data_test_set['sop_rets'] = (data_test_set['sop_size'] * target_test).shift(1) + data_test_set['sop_rets_iso'] = (data_test_set['sop_size_iso'] * target_test).shift(1) + + if (data_test_set['sop_rets_iso'].std() == 0) or (data_test_set['sop_rets_iso'].mean() == 0): + print('SOP_ISO') + print(sig_iso_size.mean()) + + if (data_test_set['sop_rets'].std() == 0) or (data_test_set['sop_rets'].mean() == 0): + print('SOP') + print(sig_size.mean()) + + # ---------------------------------------------------------------- + # A3 - Model output size + # ---------------------------------------------------------------- + # Normal bet sizing from probabilities + + # Position sizes on test data + model_output = prob_test + model_output_iso = prob_isotonic_test + + # All or nothing + model_output[model_output >= 0.5] = prob_test + model_output[model_output < 0.5] = 0 + + model_output_iso[model_output_iso >= 0.5] = prob_isotonic_test + model_output_iso[model_output_iso < 0.5] = 0 + + # Assign position sizes + data_test_set['norm_prob_size'] = 0 + data_test_set['norm_prob_iso_size'] = 0 + data_test_set.loc[model_output.index, 'norm_prob_size'] = model_output + data_test_set.loc[model_output_iso.index, 'norm_prob_iso_size'] = prob_isotonic_test + + # Get daily rets + data_test_set['norm_prob_rets'] = (data_test_set['norm_prob_size'] * target_test).shift(1) + data_test_set['norm_prob_iso_rets'] = (data_test_set['norm_prob_iso_size'] * target_test).shift(1) + + # ---------------------------------------------------------------- + # A4 - All-or-nothing [Checked] + # ---------------------------------------------------------------- + + # Position sizes on test data + all_or_nothing = prob_test + all_or_nothing_isotonic = prob_isotonic_test + + # All or nothing + all_or_nothing[all_or_nothing >= 0.5] = 1 + all_or_nothing[all_or_nothing < 0.5] = 0 + all_or_nothing_isotonic[all_or_nothing_isotonic >= 0.5] = 1 + all_or_nothing_isotonic[all_or_nothing_isotonic < 0.5] = 0 + + # Assign position sizes + data_test_set['all_or_nothing_size'] = 0 + data_test_set['all_or_nothing_iso_size'] = 0 + data_test_set.loc[all_or_nothing.index, 'all_or_nothing_size'] = all_or_nothing + data_test_set.loc[all_or_nothing_isotonic.index, 'all_or_nothing_iso_size'] = all_or_nothing_isotonic + + # Get daily rets + data_test_set['all_or_nothing_rets'] = (data_test_set['all_or_nothing_size'] * target_test).shift(1) + data_test_set['all_or_nothing_iso_rets'] = (data_test_set['all_or_nothing_iso_size'] * target_test).shift(1) + + data_test_set.to_csv('data_test_set.csv') + # ---------------------------------------------------------------- + # --- Statistics --- + # ------------------------------------- + + # drop Nas + data_test_set.dropna(inplace=True) + + test_cumrets = pd.DataFrame({'norm': ((data_test_set['norm_prob_rets'] + 1).cumprod()), + 'norm_iso': ((data_test_set['norm_prob_iso_rets'] + 1).cumprod()), + + 'aon': ((data_test_set['all_or_nothing_rets'] + 1).cumprod()), + 'aon_iso': ((data_test_set['all_or_nothing_iso_rets'] + 1).cumprod()), + + 'lin': ((data_test_set['lin_rets'] + 1).cumprod()), + 'lin_iso': ((data_test_set['lin_iso_rets'] + 1).cumprod()), + + 'lop': ((data_test_set['lop_rets'] + 1).cumprod()), + 'lop_iso': ((data_test_set['lop_iso_rets'] + 1).cumprod()), + + 'dp': ((data_test_set['dp_rets'] + 1).cumprod()), + 'dp_iso': ((data_test_set['dp_iso_rets'] + 1).cumprod()), + + 'ecdf': ((data_test_set['ecdf_rets'] + 1).cumprod()), + 'ecdf_iso': ((data_test_set['ecdf_iso_rets'] + 1).cumprod()), + + 'sop': ((data_test_set['sop_rets'] + 1).cumprod()), + 'sop_iso': ((data_test_set['sop_rets_iso'] + 1).cumprod()), + + 'primary': ((data_test_set['prets'] + 1).cumprod()), + 'BAH': ((data_test_set['rets'] + 1).cumprod())}) + + sr = {'norm_sr': data_test_set['norm_prob_rets'].mean() / data_test_set['norm_prob_rets'].std() * np.sqrt(252), + 'norm_iso_sr': data_test_set['norm_prob_iso_rets'].mean() / data_test_set[ + 'norm_prob_iso_rets'].std() * np.sqrt(252), + + 'aon_sr': data_test_set['all_or_nothing_rets'].mean() / data_test_set['all_or_nothing_rets'].std() * np.sqrt( + 252), + 'aon_iso_sr': data_test_set['all_or_nothing_iso_rets'].mean() / data_test_set[ + 'all_or_nothing_iso_rets'].std() * np.sqrt(252), + + 'lin_sr': data_test_set['lin_rets'].mean() / data_test_set['lin_rets'].std() * np.sqrt(252), + 'lin_iso_sr': data_test_set['lin_iso_rets'].mean() / data_test_set['lin_iso_rets'].std() * np.sqrt(252), + + 'lop_sr': data_test_set['lop_rets'].mean() / data_test_set['lop_rets'].std() * np.sqrt(252), + 'lop_iso_sr': data_test_set['lop_iso_rets'].mean() / data_test_set['lop_iso_rets'].std() * np.sqrt(252), + + 'dp_sr': data_test_set['dp_rets'].mean() / data_test_set['dp_rets'].std() * np.sqrt(252), + 'dp_iso_sr': data_test_set['dp_iso_rets'].mean() / data_test_set['dp_iso_rets'].std() * np.sqrt(252), + + 'ecdf_sr': data_test_set['ecdf_rets'].mean() / data_test_set['ecdf_rets'].std() * np.sqrt(252), + 'ecdf_iso_sr': data_test_set['ecdf_iso_rets'].mean() / data_test_set['ecdf_iso_rets'].std() * np.sqrt(252), + + 'sop_sr': data_test_set['sop_rets'].mean() / data_test_set['sop_rets'].std() * np.sqrt(252), + 'sop_iso_sr': data_test_set['sop_rets_iso'].mean() / data_test_set['sop_rets_iso'].std() * np.sqrt(252), + + 'primary_sr': data_test_set['prets'].mean() / data_test_set['prets'].std() * np.sqrt(252), + 'BAH_sr': data_test_set['rets'].mean() / data_test_set['rets'].std() * np.sqrt(252)} + + mean = {'norm_avg': (1 + data_test_set['norm_prob_rets'].mean()) ** 252 - 1, + 'norm_iso_avg': (1 + data_test_set['norm_prob_iso_rets'].mean()) ** 252 - 1, + + 'aon_avg': (1 + data_test_set['all_or_nothing_rets'].mean()) ** 252 - 1, + 'aon_iso_avg': (1 + data_test_set['all_or_nothing_iso_rets'].mean()) ** 252 - 1, + + 'lin_avg': (1 + data_test_set['lin_rets'].mean()) ** 252 - 1, + 'lin_iso_avg': (1 + data_test_set['lin_iso_rets'].mean()) ** 252 - 1, + + 'lin_avg': (1 + data_test_set['lin_rets'].mean()) ** 252 - 1, + 'lin_iso_avg': (1 + data_test_set['lin_iso_rets'].mean()) ** 252 - 1, + + 'lop_avg': (1 + data_test_set['lop_rets'].mean()) ** 252 - 1, + 'lop_iso_avg': (1 + data_test_set['lop_iso_rets'].mean()) ** 252 - 1, + + 'dp_avg': (1 + data_test_set['dp_rets'].mean()) ** 252 - 1, + 'dp_iso_avg': (1 + data_test_set['dp_iso_rets'].mean()) ** 252 - 1, + + 'ecdf_avg': (1 + data_test_set['ecdf_rets'].mean()) ** 252 - 1, + 'ecdf_iso_avg': (1 + data_test_set['ecdf_iso_rets'].mean()) ** 252 - 1, + + 'sop_avg': (1 + data_test_set['sop_rets'].mean()) ** 252 - 1, + 'sop_iso_avg': (1 + data_test_set['sop_rets_iso'].mean()) ** 252 - 1, + + 'primary_avg': (1 + data_test_set['prets'].mean()) ** 252 - 1, + 'BAH_avg': (1 + data_test_set['rets'].mean()) ** 252 - 1} + + if (mean['sop_avg'] == 0) or (mean['sop_iso_avg'] == 0): + print('SOP') + print(sig_size.mean()) + + stdev = {'norm_std': data_test_set['norm_prob_rets'].std() * np.sqrt(252), + 'norm_iso_std': data_test_set['norm_prob_iso_rets'].std() * np.sqrt(252), + + 'aon_std': data_test_set['all_or_nothing_rets'].std() * np.sqrt(252), + 'aon_iso_std': data_test_set['all_or_nothing_iso_rets'].std() * np.sqrt(252), + + 'lin_std': data_test_set['lin_rets'].std() * np.sqrt(252), + 'lin_iso_std': data_test_set['lin_iso_rets'].std() * np.sqrt(252), + + 'lop_std': data_test_set['lop_rets'].std() * np.sqrt(252), + 'lop_iso_std': data_test_set['lop_iso_rets'].std() * np.sqrt(252), + + 'dp_std': data_test_set['dp_rets'].std() * np.sqrt(252), + 'dp_iso_std': data_test_set['dp_iso_rets'].std() * np.sqrt(252), + + 'ecdf_std': data_test_set['ecdf_rets'].std() * np.sqrt(252), + 'ecdf_iso_std': data_test_set['ecdf_iso_rets'].std() * np.sqrt(252), + + 'sop_std': data_test_set['sop_rets'].std() * np.sqrt(252), + 'sop_iso_std': data_test_set['sop_rets_iso'].std() * np.sqrt(252), + + 'primary_std': data_test_set['prets'].std() * np.sqrt(252), + 'BAH_std': data_test_set['rets'].std() * np.sqrt(252)} + + # Compute Max DDs + mdds = qs.stats.max_drawdown(test_cumrets) + # Check for negative values (MDDs) and correct + clean_mdds = {} + for ind, val in mdds.iteritems(): + new_name = ind + '_mdd' + + if val == 0.0: + val = -(1 - test_cumrets[ind][-1]) + mdds[ind] = val + clean_mdds[new_name] = val + + final = {**sr, **mean, **stdev, **clean_mdds} + final_row = pd.DataFrame(final.values(), index=final.keys()).T + + # --- Save Report --- + # ------------------------------------------ + # Save results to csv + if z == 0: + final_row.to_csv('results.csv') + data_final = pd.read_csv('results.csv', index_col=0) + else: + data_final = pd.read_csv('results.csv', index_col=0) + concat = pd.concat([data_final, final_row]).reset_index(drop=True) + concat.to_csv('results.csv') + + print(z) + data_test_set[['pred', 'target_rets']].plot() From 181bd34818ca16182c511b09171ff332c612928a Mon Sep 17 00:00:00 2001 From: MichaelMeyer01 <105858978+MichaelMeyer01@users.noreply.github.com> Date: Wed, 31 Aug 2022 16:53:56 +0200 Subject: [PATCH 6/8] Add files via upload --- .../kelly_criterion_analysis.ipynb | 2199 +++++++++++++++++ 1 file changed, 2199 insertions(+) create mode 100644 calibration_and_position_sizing/kelly_criterion_analysis.ipynb diff --git a/calibration_and_position_sizing/kelly_criterion_analysis.ipynb b/calibration_and_position_sizing/kelly_criterion_analysis.ipynb new file mode 100644 index 0000000..5a4a0e3 --- /dev/null +++ b/calibration_and_position_sizing/kelly_criterion_analysis.ipynb @@ -0,0 +1,2199 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "64f82ae4-1c40-492c-9056-25f16b26c64d", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "from matplotlib import pyplot as plt\n", + "\n", + "pd.options.mode.chained_assignment = None # default='warn'" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "32e99bf2-db2f-41de-8da4-c7b4303b11df", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
retsflagstargettarget_retspmodelpretsrets2rets3regimepredprobprob_isopred_iso
1995-04-120.00779201.00.01144410.0077920.002082-0.0320660.000.4206540.3599550
1995-04-130.01144400.0-0.01269810.0114440.0077920.0020820.010.5499500.5587661
1995-04-14-0.01269800.0-0.0136940-0.0126980.0114440.0077920.000.0000000.0000000
1995-04-15-0.01369401.00.0104990-0.000000-0.0126980.0114440.000.0000000.0000000
1995-04-160.01049901.00.00886910.000000-0.013694-0.0126980.010.5113050.4364680
\n", + "
" + ], + "text/plain": [ + " rets flags target target_rets pmodel prets rets2 \\\n", + "1995-04-12 0.007792 0 1.0 0.011444 1 0.007792 0.002082 \n", + "1995-04-13 0.011444 0 0.0 -0.012698 1 0.011444 0.007792 \n", + "1995-04-14 -0.012698 0 0.0 -0.013694 0 -0.012698 0.011444 \n", + "1995-04-15 -0.013694 0 1.0 0.010499 0 -0.000000 -0.012698 \n", + "1995-04-16 0.010499 0 1.0 0.008869 1 0.000000 -0.013694 \n", + "\n", + " rets3 regime pred prob prob_iso pred_iso \n", + "1995-04-12 -0.032066 0.0 0 0.420654 0.359955 0 \n", + "1995-04-13 0.002082 0.0 1 0.549950 0.558766 1 \n", + "1995-04-14 0.007792 0.0 0 0.000000 0.000000 0 \n", + "1995-04-15 0.011444 0.0 0 0.000000 0.000000 0 \n", + "1995-04-16 -0.012698 0.0 1 0.511305 0.436468 0 " + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_train = pd.read_csv('train.csv', index_col=0, parse_dates=True)\n", + "data_test = pd.read_csv('test.csv', index_col=0, parse_dates=True)\n", + "\n", + "data_train.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "82015d92-d2bb-4dac-b7f0-42b03adb868f", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Subset on trades\n", + "data = data_train[data_train['pmodel'] == 1]\n", + "\n", + "# Show hist of model output\n", + "data['prob'].hist()\n", + "plt.title('Meta-Model Output: Train-Set')\n", + "plt.xlabel('Model Output')\n", + "plt.ylabel('Freq')\n", + "\n", + "plt.vlines(x=0.5, ymin=0, ymax=700, colors='Black', linestyles='--', linewidth=2.5)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "7477601e-36ac-4891-a9cb-add274af946b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "E[gain]: 0.014\n", + "E[loss]: -0.012\n" + ] + } + ], + "source": [ + "# Get the expected win and loss %\n", + "true_pos = data[(data['pred_regime'] == 1) & (data['target']==1)]\n", + "false_pos = data[(data['pred_regime'] == 1) & (data['target']==0)]\n", + "\n", + "exp_gain = true_pos['target_rets'].mean()\n", + "exp_loss = false_pos['target_rets'].mean()\n", + "\n", + "print('E[gain]:', np.round(exp_gain, 3))\n", + "print('E[loss]:', np.round(exp_loss, 3))\n", + "\n", + "# Define Kelly Criterion\n", + "def kelly(p, win, loss):\n", + " return (p / abs(loss)) - ((1-p)/win)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "5b25d578-a44e-48df-bfd5-360439c0f84d", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Max level: 45.55\n" + ] + } + ], + "source": [ + "# Compute position sizes\n", + "b = kelly(p=data['prob_regime'], win=exp_gain, loss=exp_loss)\n", + "\n", + "b.hist()\n", + "plt.title('Kelly Position Sizes: Train-Set')\n", + "plt.xlabel('Kelly Position Sizes: x1 Gearing')\n", + "plt.ylabel('Freq')\n", + "plt.vlines(x=0.0, ymin=0, ymax=700, colors='Black', linestyles='--', linewidth=2.5)\n", + "plt.show()\n", + "\n", + "print('Max level:', np.round(b.max(), 2))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "3fdec2bd-4701-4486-9581-7b6d4c568add", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.0" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "kelly(p=0.468, win=0.014, loss=0.012)" + ] + }, + { + "cell_type": "markdown", + "id": "e5ca9875-c6f2-42c9-86ab-0c8eda42bf58", + "metadata": {}, + "source": [ + "At p=0.468 the position size jumps to 1. Thus all the prob higher than 0.5 will just be full 1x invested. Not very useful. " + ] + }, + { + "cell_type": "markdown", + "id": "ac5c6063-78c0-4adc-889f-31fdfa36081b", + "metadata": { + "tags": [] + }, + "source": [ + "---\n", + "\n", + "# Frequentist analog\n", + "\n", + "Lets see if we can map the baysian probability with a frequentist one.\n", + "\n", + "* Manual mapping\n", + "* Model calibration\n", + "* Lit review\n" + ] + }, + { + "cell_type": "markdown", + "id": "7c1d5f47-2810-4bf7-b6a9-397de79ed375", + "metadata": {}, + "source": [ + "## Put it into deciles and then check how often that decile occurred" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "44b27898-dff4-4738-a137-2a5b3531f40f", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "data['cat'], b, = pd.qcut(data['prob_regime'], q=10, retbins=True)\n", + "\n", + "# Compute probability per decile\n", + "acc = data.groupby(['cat', 'target']).count()['prob_regime'].unstack()\n", + "accuracy = acc[1] / acc.sum(axis=1)\n", + "\n", + "# Plot probability of true, per decile\n", + "accuracy.plot.bar()\n", + "plt.title('Frequentist Probability per Decile')\n", + "plt.xlabel('Decile: Model Output')\n", + "plt.ylabel('Probability (Frequentist)')\n", + "plt.hlines(y=0.5, xmin=-1, xmax=accuracy.shape[0], colors='Black', linestyles='--', linewidth=2)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "e95d3f36-16f8-4fa3-a29d-d48ca5975110", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.0651594516740914" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Kelly is too sensitive, any p > 0.467 = 1x gearing or greater\n", + "kelly(p=0.467, win=exp_gain, loss=exp_loss)" + ] + }, + { + "cell_type": "markdown", + "id": "b8363217-fa2f-4a39-9209-c6bed1ae501a", + "metadata": {}, + "source": [ + "Note: Each decile will have its own expected win / loss" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "49a0358f-f3ba-43de-8023-c6ee110bbe3a", + "metadata": {}, + "outputs": [], + "source": [ + "exp_wins = data[data['target_rets']>0].groupby(['cat'])['target_rets'].mean()\n", + "exp_losses = data[data['target_rets']<0].groupby(['cat'])['target_rets'].mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "f15a3962-35d6-49c1-9c0e-61fba5860b4b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "P: 0.407 \tW: 0.012 \tL: -0.013\n", + "Size -17.59 \tScaled 0.0\n", + "------------------------------------------\n", + "\n", + "P: 0.288 \tW: 0.01 \tL: -0.016\n", + "Size -54.51 \tScaled 0.0\n", + "------------------------------------------\n", + "\n", + "P: 0.381 \tW: 0.012 \tL: -0.015\n", + "Size -27.16 \tScaled 0.0\n", + "------------------------------------------\n", + "\n", + "P: 0.45 \tW: 0.012 \tL: -0.015\n", + "Size -16.33 \tScaled 0.0\n", + "------------------------------------------\n", + "\n", + "P: 0.475 \tW: 0.012 \tL: -0.012\n", + "Size -4.1 \tScaled 0.0\n", + "------------------------------------------\n", + "\n", + "P: 0.575 \tW: 0.012 \tL: -0.012\n", + "Size 11.03 \tScaled 1.0\n", + "------------------------------------------\n", + "\n", + "P: 0.6 \tW: 0.014 \tL: -0.011\n", + "Size 25.34 \tScaled 1.0\n", + "------------------------------------------\n", + "\n", + "P: 0.609 \tW: 0.014 \tL: -0.01\n", + "Size 29.62 \tScaled 1.0\n", + "------------------------------------------\n", + "\n", + "P: 0.642 \tW: 0.014 \tL: -0.01\n", + "Size 35.63 \tScaled 1.0\n", + "------------------------------------------\n", + "\n", + "P: 0.753 \tW: 0.016 \tL: -0.011\n", + "Size 52.75 \tScaled 1.0\n", + "------------------------------------------\n", + "\n" + ] + } + ], + "source": [ + "pstore, sstore = [], []\n", + "for i in range(0, 10):\n", + " indx = i\n", + " b = kelly(accuracy[indx], exp_wins[indx], exp_losses[indx])\n", + " p = np.round(accuracy[indx], 3)\n", + " print('P:', p, '\\tW:', np.round(exp_wins[indx], 3), '\\tL:', np.round(exp_losses[indx], 3))\n", + " scaled = np.round(np.min([np.max([b, 0]), 1]), 2)\n", + " print('Size', np.round(b, 2), '\\tScaled', scaled) \n", + " print('------------------------------------------\\n')\n", + " pstore.append(p)\n", + " sstore.append(scaled)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "82a03dd9-5649-423c-b741-89afc38760d3", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Plot position sizes for deciles\n", + "plt.bar([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], sstore)\n", + "plt.title('Position Size to Probability')\n", + "plt.ylabel('Position Size')\n", + "plt.xlabel('Decile')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "ab73628c-589c-4f5e-aa3f-d165d5386314", + "metadata": {}, + "source": [ + "---\n", + "## Probability Calibration\n", + "\n", + "Readings:\n", + "* https://towardsdatascience.com/calibrating-classifiers-559abc30711a\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "8f86883b-72a5-454c-80f4-2e500669ffec", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.calibration import calibration_curve, CalibrationDisplay" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "e39c3bd6-52a6-4d6e-933f-fff983c35ee1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Min: 0.18 \tMax: 0.75 \n", + "\n" + ] + }, + { + "data": { + "image/png": "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t2/P0KFDSU1NLdTyjzzyCO3ateORRx4p9Lb/+c9/njBcpUqVQq/DV08++SQvvvgiABMnTsx9tqdZs2YkJCQUeb3R0dF89dVXBc+YR79+/YiKOv1anZYIiomq059Ot27duPDCCwvVom9MSXfGGWcQHR3Npk2bCA8PZ+bMmQUvBGRmZgLw5ptvsn79+tzLpIWRNxEUl6effpqLL77Y5/lz9tWboiYCf7FEUAyeeOIJ7r77bgDOPvtsPvjgA+rVqxfkqExZ1a9fP+bMmQM4t5b269eP999/H4DU1FT69evHggULAEhMTKRfv358+umnACQkJNCvXz+++OILAPbu3Vvo7Z933nls376dlJQURo8eTffu3enSpQuff/45AHPmzGHo0KFcddVVXHrppVx99dWkpKTQs2dPFixYwIEDBxg8eDDdu3ene/fu/PTTT4BTY2vUqFF06NCBjh07smjRIsaNG8exY8fo3LnzSZdYR4wYkbtNgOHDh7NkyQldogAwZcoUOnToQKdOnRg3bhwAs2bNonv37nTq1InBgwd7PcMZOXIkn3zySe7wCy+8QI8ePejRowfbt2/Pnedvf/sb/fv357HHHmPNmjX06dOHLl260KdPH3777TeOHz/OxIkTWbBgAZ07d2bBggX5vnfHjh3jhhtuoGPHjlx//fW5l5lPl901VAzS0tJIS0sjKyvL7ggyZVpmZiZff/01l112Gc8++ywXXnghs2fP5siRI/To0SP3G/TKlSvZuHEjNWvWBJzLOdHR0QDceOONPPjgg/Tt25ddu3YxYMAAYmJimDRpEtWqVePXX38F4PDhwwwePJgZM2bkLutp7NixTJ06lYEDB5KYmMjPP//Me++9d8I8X3/9NYsXL2b16tVUqlSJQ4cOAXDttddy6623AvD444/zzjvvcO+9955y388880zWrFnD3LlzeeCBB/jXv/4FwLZt21i2bBkhISEkJSWxYsUKQkNDWbZsGePHj2fRokU8/fTTREVFMWPGDADGjx/v9b178803qVSpEhs3bmTjxo107dq1CH+lk1kiCIDk5GT+8Y9/MGrUKDp37szkyZPtrg5TbJYvX577Oiws7IThSpUqnTBcrVq1E4Zr1659wvBZZ53l0zZzvpWDc0YwZswY+vTpw5IlS3KvqaelpbFr1y4ALrnkktwkkNeyZcvYsmVL7nBSUhJHjx5l2bJlJ5Rcr1GjxiljuuCCC7j77rvZv38/n376KYMHDyY09MRD3rJlyxg1ahSVKlUCyI1p06ZNPP744xw5coTk5GQGDBhQ4HswbNiw3N8PPvhg7vihQ4fmfgFMTEzklltu4ffff0dEyMjI8Lqub7/91ut7t2LFCu677z4AOnbsSMeOHQuMyxeWCALg+PHjLFy4kObNm9O5c2dLAqbMy2kj8KSqLFq0iHPPPfeE8atXr6Zy5cr5ris7O5uVK1dyxhlnnLS+wv4vjRgxgvnz5/PRRx8xe/bsk6bnt86RI0eyePFiOnXqxJw5c05IjvnxXI/na899nTBhAv379+ezzz5jx44d9OvXz+u68nvv8q7bX6yNwE8OHTrESy+9hKpSs2ZNYmJieOCBB4IdljFBM2DAAF599dXcGyVy6mYV5NJLL829RALkJpi84w8fPgw4Zz35fbMeOXIk06ZNA/D6pP6ll17K7Nmzc9sAci4NHT16lPr165ORkcH8+fN9ijun3WXBggX07t3b6zyJiYk0bNgQILcdB6Bq1aocPXo0dzi/9+7888/PjWfTpk25pelPlyUCP1m4cCGPPfZY7h+sWrVqQY7ImOCaMGECGRkZdOzYkfbt2zNhwgSflps+fTpRUVF07NiRtm3b5t6B9Pjjj3P48GHat29Pp06d+P777wG47bbb6Nixo9fncerVq0ebNm0YNWqU121ddtllXH311URGRtK5c+fcSzGTJk2iZ8+eXHLJJbRu3dqnuNPT0+nZsyevvPIKU6dO9TrPo48+yt///nf+8pe/nNCxVP/+/dmyZUtuY3F+792dd95JcnIyHTt2ZMqUKfTo0cOn2AoiORmntIiMjFR/3DfrD3v37iU2Npbu3buTnZ3N1q1badu2bbDDMuVMTEyMPZGej9TUVDp06MD69evL1Zczb58JEVmnqpHe5rczgtMwdOhQbrrpJrKysqhQoYIlAWNKkGXLltG6dWvuvffecpUEisIaiwtp165dnHXWWYSHh/Pqq69yxhln2C2hxpRAF198ce5dSubU7IygEHKKxE2ZMgWAzp07e23VN8aY0sQSgQ9SUlIAp0jcU089xYgRI4IckTHG+I8lggJ89NFHJxSJe+ihh2jatGmQozLGGP+xRJCPnLupunfvzoABAwgPDw9yRMYYExiWCLyYMGECd955J+AUiZs3bx5169YNclTGnL7IZ5bSbNyXJ/1EPrP0tNa7d+9ebrjhBs4++2zatm3LX//6V7Zt20b79u39FPmJZZ9/+OEH2rVrR+fOnYmPj2fIkCF+2055ZHcNeZGRkUFGRoYViTNlTkLy8UKN94Wqcs0113DLLbfk1gKKjo5m3759RV6nN08//XTu6/nz5/Pwww/nPijmWQW0IPZ/fTJLBDiPk48fP54xY8bQuXNnnnvuOasPZEqlp77YzJbdSUVa9vo3V3od37bBmTxx1cnlGXJ8//33hIWFcccdd+SO69y5Mzt27Mgd3rFjByNGjMi98WLGjBn06dOHPXv2cP3115OUlERmZiZvvPEGffr0YcyYMURFRSEijB49mgcffJCRI0dy5ZVXcuTIET7++GO++eYbli1bxrPPPsuVV17Jpk2byMrKYty4cSxfvpz09HTuvvtubr/9dpYvX85TTz1F/fr1iY6OPqGonbFEADhnAJ9++imtWrWyInHGFNKmTZvo1q3bKeepW7cuS5cuJSIigt9//51hw4YRFRXFBx98wIABA/jHP/5BVlYWqampREdHEx8fz6ZNmwA4cuTICesaO3YsP/74I1deeSVDhgw5IeG88847VKtWjbVr15Kens5f/vIXLr30UgDWrFnDpk2baN68uV/3vywot4ng4MGDzJ49m4cffpiaNWuydetWqlatGuywjDktp/rmDtBs3Jf5Tltwu/dCaf6QkZHBPffcQ3R0NCEhIWzbtg1wbsYYPXo0GRkZDBo0iM6dO9OiRQv+/PNP7r33Xq644orcA7kvvv32WzZu3Jh7qSgxMZHff/+d8PBwevToYUkgHwFtLBaRy0TkNxHZLiLjvEwXEZnuTt8oIv7pZcEHn376KePHj8+tbGhJwJiiadeuHevWrTvlPFOnTqVevXps2LCBqKgojh932iTOP/98VqxYQcOGDRkxYgRz586lRo0abNiwgX79+vHaa68xduxYn2NRVV599VWio6OJjo7mv//9b24iOVXp6/IuYIlAREKA14DLgbbAMBHJW4zncqCV+3Mb8Eag4gHYvXs3q1evBmDMmDFs2rSJLl26BHKTxpQotat4vw06v/G+uPDCC0lPT2fWrFm549auXcvOnTtzhxMTE6lfvz4VKlRg3rx5uZU3d+7cSd26dbn11lsZM2YM69evJyEhgezsbAYPHsykSZNYv369z7EMGDCAN954I7cs9bZt23LbJUz+AnlpqAewXVX/BBCRj4CBgGcrzUBgrjo37a8SkeoiUl9V9wQioOuuu479+/cTExNDSEiIlYcw5U7U45f4fZ0iwmeffcYDDzzA5MmTiYiIoFmzZrn9AADcddddDB48mIULF9K/f//cb+fLly/nhRdeICwsjCpVqjB37lzi4+MZNWoU2dnZADz33HM+xzJ27Fh27NhB165dUVXq1KnD4sWL/bm7ZVLAylCLyBDgMlUd6w6PAHqq6j0e8/wLmKyqP7rD3wGPqWpUnnXdhnPGQJMmTbp5ftMojA0bNlCpUiVatWpVpOWNKYmsDLXJq7BlqAN5RuDt1pu8WceXeVDVt4C3wOmPoKgBderUqaiLGmNMmRXIxuI4oLHHcCNgdxHmMcYYE0CBTARrgVYi0lxEwoEbgCV55lkC3OzePdQLSAxU+4AxZVlp62nQBE5RPgsBuzSkqpkicg/wDRACzFbVzSJyhzt9JvAV8FdgO5AKeO9Y1BiTr4iICA4ePEitWrXsYchyTlU5ePAgERERhVrO+iw2ppTLyMggLi6OtLS0YIdiSoCIiAgaNWpEWFjYCeOD1VhsjCkGYWFh9sSsOS1WhtoYY8o5SwTGGFPOWSIwxphyrtQ1FovIAaBojxZDbSDBj+GUBrbP5YPtc/lwOvvcVFXreJtQ6hLB6RCRqPxazcsq2+fywfa5fAjUPtulIWOMKecsERhjTDlX3hLBW8EOIAhsn8sH2+fyISD7XK7aCIwxxpysvJ0RGGOMycMSgTHGlHNlMhGIyGUi8puIbBeRcV6mi4hMd6dvFJGuwYjTn3zY5+Huvm4UkZ9FpNT30lPQPnvM111Estxe80o1X/ZZRPqJSLSIbBaR/xR3jP7mw2e7moh8ISIb3H0u1VWMRWS2iOwXkU35TPf/8UtVy9QPTsnrP4AWQDiwAWibZ56/Al/j9JDWC1gd7LiLYZ/7ADXc15eXh332mO//cEqeDwl23MXwd66O0y94E3e4brDjLoZ9Hg88776uAxwCwoMd+2ns8/lAV2BTPtP9fvwqi2cEPYDtqvqnqh4HPgIG5plnIDBXHauA6iJSv7gD9aMC91lVf1bVw+7gKpze4EozX/7OAPcCi4D9xRlcgPiyzzcCn6rqLgBVLe377cs+K1BVnM4YquAkgsziDdN/VHUFzj7kx+/Hr7KYCBoCsR7Dce64ws5TmhR2f8bgfKMozQrcZxFpCFwDzCzGuALJl7/zOUANEVkuIutE5OZiiy4wfNnnGUAbnG5ufwXuV9Xs4gkvKPx+/CqL/RF466Ip7z2yvsxTmvi8PyLSHycR9A1oRIHnyz5PAx5T1awy0nOXL/scCnQDLgLOAFaKyCpV3Rbo4ALEl30eAEQDFwJnA0tF5AdVTQpwbMHi9+NXWUwEcUBjj+FGON8UCjtPaeLT/ohIR+Bt4HJVPVhMsQWKL/scCXzkJoHawF9FJFNVFxdLhP7n62c7QVVTgBQRWQF0AkprIvBln0cBk9W5gL5dRP4LtAbWFE+Ixc7vx6+yeGloLdBKRJqLSDhwA7AkzzxLgJvd1vdeQKKq7inuQP2owH0WkSbAp8CIUvzt0FOB+6yqzVW1mao2Az4B7irFSQB8+2x/DpwnIqEiUgnoCcQUc5z+5Ms+78I5A0JE6gHnAn8Wa5TFy+/HrzJ3RqCqmSJyD/ANzh0Hs1V1s4jc4U6fiXMHyV+B7UAqzjeKUsvHfZ4I1AJed78hZ2oprtzo4z6XKb7ss6rGiMi/gY1ANvC2qnq9DbE08PHvPAmYIyK/4lw2eUxVS215ahH5EOgH1BaROOAJIAwCd/yyEhPGGFPOlcVLQ8YYYwrBEoExxpRzlgiMMaacs0RgjDHlnCUCY4wp5ywRGL8QERWReR7DoSJyQET+Fcy4CktEdohIbff1zwXMO1JEGhRy/c3yqyp5OoqyXrcMxUm3EIvI1TlVPkXkSRF52H39tIhc7L5+wH1OwZQBlgiMv6QA7UXkDHf4EiA+iPHkEpEiPS+jqn0KmGUkUKhEcLpEJCTQ21DVJao62cv4iaq6zB18ALBEUEZYIjD+9DVwhft6GPBhzgQRqezWWV8rIr+IyEB3fDMR+UFE1rs/fdzx/dxvrJ+IyFYRmS9eCga580wTp4+FTSLSwx3/pIi8JSLfAnNFpI6ILHK3v1ZE/uLOV0tEvnVjehOPOi4ikuzx+lER+VWcmveTxenbIBKYL07t/zNEpJuI/Mct9vaNuBUh3fEbRGQlcLe3N87d3xUi8pmIbBGRmSJSIScO99v4aqC3iPzN3ddNIvKAx2pCReQ9cWrUf5LzjV1EJrr7vMl9Tzzfx5u8vHcjRWSGlxjniMgQEbkPJwF+LyLfi8gYEZnqMd+tIvKyt/00JVSwa2/bT9n4AZKBjjilHCJwioD1A/7lTv8ncJP7ujpO7ZvKON8qI9zxrYAo93U/IBGnjkoFYCXQ18t2lwOz3Nfn49ZwB54E1gFnuMMf5CwPNAFi3NfTgYnu6ytwinfVztkn9/flwM9AJXe4pse2I93XYe48ddzh63GeggXnKd8L3Ncv4KXOvLu/aTh190OApbj9J7gxXee+7oZTYbMyTsnlzUAXoJk731/c+WYDD3vG676eB1xVwHs3Epjh8T7mrGeOR0w7PN6nyjh9BoS5wz8DHYL9mbQf33/sjMD4japuxDkgDcN5DN7TpcA4EYnGOQBF4ByQw4BZbnmAhUBbj2XWqGqcOiWFo911e/Ohu/0VwJkiUt0dv0RVj7mvLwZmuNtf4s5XFecA+L67/JfAYU52MfCuqqa683mrFX8u0B6n8mU08DjQSESqAdVVNaensHlelvXc3z9VNcvdp5wKsVk4fSrgjvtMVVNUNRmnftR57rRYVf3Jff2+x/L9RWS1+x5fCLTz2GZ+753P1Clw93/AlSLSGich/FrY9ZjgKXO1hkzQLQFexPmGW8tjvACDVfU3z5lF5ElgH06FzAo434pzpHu8ziL/z2veOik5wyke4yoAvT0SQ872vS2fl/g4z2ZV7Z1n/dV9WDZHfvuR5iaHnO34vLyIRACv45y5xLrvd4QP2yyst3F6CtsKvFvEdZggsTMC42+zgae9fCP8Brg35/q0iHRxx1cD9rjf+kfgXBYprOvddfbFqcSY6GWeb4F7cgZEpLP7cgUw3B13OVAjn2VHe1xzr+mOPwpUdV//BtQRkd7uPGEi0k5VjwCJbmzkbCsfPcSpslnB3acfvcyzAhgkIpVEpDJOxzs/uNOa5Gwf56zsR/530E8QkSpA3n6bfXnvvPHcd1R1NU5p5BvxaBsypYMlAuNX7qWcV7xMmoRzGWijOLc5TnLHvw7cIiKrcHrXSvGybEEOi3Or50ycTne8uQ+IdBtStwB3uOOfAs4XkfU4l692edmnf+Oc6US5l30edifNAWa640JwDrLPi8gGnEtZOXcdjQJecxuLTzgjyWMlMBnYBPwX+MxLLOvd7a4BVuNUF/3FnRyD815uBGoCb7iJaBZOu8JinLLOnnx577x5C/haRL73GPcx8JP+r0tUU0pY9VFTqonIcpzGzKhgx3I6RKQfzn5cGeRQikycZ0amqup3wY7FFI6dERhjTouIVBeRbcAxSwKlk50RGGNMOWdnBMYYU85ZIjDGmHLOEoExxpRzlgiMMaacs0RgjDHl3P8DRwv6yqE0xakAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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CADPTuLGjBnDrbfeGuCIjDGhzBJBMfvwww9p1KgRCQkJADz66KM0bNgwsEEZc4bCwsJo27YtrVq1on///hw7dqxA6z/yyCNERUXxyCOPFHjfzz333GmfK1asWOBt+Oqpp57ixRdfBGDs2LHZz/Y0bNiQpKSkQm83Li6OL774Iv8Fc+jWrRuxsWfeV6clgmKi6oyn06FDBy6//PIC1egbU9KVK1eOuLg4Nm7cSGRkJNOmTct/JSAjIwOA6dOns3bt2uxi0oLImQiKy7hx47jiiit8Xj7rWL0pbCIoKpYIisGTTz7JPffcA8D555/PBx98QK1atQIclSmtunXrxsyZMwGnaWm3bt14//33ATh27BjdunVj/vz5ACQnJ9OtWzcWLlwIQFJSEt26deOzzz4DYO/evQXef9euXdm+fTupqakMHTqUjh070q5dOz799FMAZs6cSf/+/bn++uu56qqruOGGG0hNTaVz587Mnz+fAwcO0LdvXzp27EjHjh353//+Bzh9bA0ZMoTWrVvTpk0bPv74Y0aNGsXx48dp27btX4pYBw0alL1PgFtvvZXFi08bEgWAiRMn0rp1a6Kjoxk1ahQAb731Fh07diQ6Opq+fft6vcMZPHgwH330UfbnF154gU6dOtGpUye2b9+evcyDDz5I9+7deeyxx/jpp5/o0qUL7dq1o0uXLmzdupWTJ08yduxY5s+fT9u2bZk/f36u5+748eMMGDCANm3acPPNN2cXM58pazVUDNLS0khLSyMzM9NaBJlSLSMjgy+//JKePXvy7LPPcvnllzNjxgwOHz5Mp06dsq+gf/jhB9avX0/VqlUBpzgnLi4OgFtuuYUHHniASy65hF27dtGjRw+2bNnC+PHjqVy5Mhs2bADg0KFD9O3bl6lTp2av62n48OFMmjSJXr16kZyczMqVK3nvvfdOW+bLL7/kk08+YdWqVZQvX54///wTgBtvvJE77rgDgCeeeIJ33nmHe++9N89jP/vss/npp5+YNWsWI0eO5PPPPwdg27ZtLF26lLCwMI4cOcLy5csJDw9n6dKljB49mo8//phx48YRGxvL1KlTARg9erTXczd9+nTKly/P+vXrWb9+Pe3bty/EX+mvLBH4wdGjR3n88ccZMmQIbdu2ZcKECdaqwxSbZcuWZb+PiIg47XP58uVP+1y5cuXTPlevXv20z+eee65P+8y6KgfnjmDYsGF06dKFxYsXZ5epp6WlsWvXLgCuvPLK7CSQ09KlS9m8eXP25yNHjpCSksLSpUtP63L9nHPOyTOmyy67jHvuuYf9+/ezcOFC+vbtS3j46T95S5cuZciQIZQvXx4gO6aNGzfyxBNPcPjwYY4ePUqPHj3yPQcDBw7M/veBBx7Int6/f//sC8Dk5GRuv/12fv31V0SE9PR0r9v65ptvvJ675cuXc9999wHQpk0b2rRpk29cvrBE4AcnT55kwYIFNGrUiLZt21oSMKVeVh2BJ1Xl448/plmzZqdNX7VqFRUqVMh1W6dOneKHH36gXLlyf9leQf8vDRo0iDlz5jBv3jxmzJjxl/m5bXPw4MF88sknREdHM3PmzNOSY248t+P53vNYx4wZQ/fu3Vm0aBE7duygW7duXreV27nLue2iYnUEReTPP//kpZdeQlWpWrUqW7ZsYeTIkYEOy5iA6dGjB6+++mp2Q4msfrPyc9VVV2UXkQDZCSbn9EOHDgHOXU9uV9aDBw9m8uTJAF6f1L/qqquYMWNGdh1AVtFQSkoKtWvXJj09nTlz5vgUd1a9y/z587nooou8LpOcnEzdunUBsutxACpVqkRKSkr259zO3aWXXpodz8aNG7O7pj9TlgiKyIIFC3jsscey/2CVK1cOcETGBNaYMWNIT0+nTZs2tGrVijFjxvi03pQpU4iNjaVNmza0bNkyuwXSE088waFDh2jVqhXR0dF89913ANx55520adPG6/M4tWrVokWLFgwZMsTrvnr27MkNN9xATEwMbdu2zS6KGT9+PJ07d+bKK6+kefPmPsV94sQJOnfuzCuvvMKkSZO8LvPoo4/yr3/9i4svvvi0gaW6d+/O5s2bsyuLczt3d999N0ePHqVNmzZMnDiRTp06+RRbfiQr4wSLmJgYLYp2s0Vh7969xMfH07FjR06dOsUvv/xCy5YtAx2WCTFbtmyxJ9JzcezYMVq3bs3atWtD6uLM23dCRNaoaoy35e2O4Az079+f2267jczMTMqUKWNJwJgSZOnSpTRv3px77703pJJAYVhlcQHt2rWLc889l8jISF599VXKlStnTUKNKYGuuOKK7FZKJm92R1AAWZ3ETZw4EYC2bdt6rdU3xphgYonAB6mpqYDTSdzTTz/NoEGDAhyRMcYUHUsE+Zg3b95pncQ99NBDnHfeeQGOyhhjio4lglxktabq2LEjPXr0IDIyMsARGWOMf1gi8GLMmDHcfffdgNNJ3OzZs6lZs2aAozLmzMU8s4SGo/7zl1fMM0vOaLt79+5lwIABnH/++bRs2ZJrrrmGbdu20apVqyKK/PRun1esWEFUVBRt27YlMTGRfv36Fdl+QpG1GvIiPT2d9PR06yTOlDpJR08WaLovVJU+ffpw++23Z/cFFBcXx759+wq9TW/GjRuX/X7OnDk8/PDD2Q+KefYCmh/7f/1XlghwHicfPXo0w4YNo23btjz//PPWP5AJSk9/tonNu48Uat2bp//gdXrLOmfz5PV/7Z4hy3fffUdERAR33XVX9rS2bduyY8eO7M87duxg0KBB2Q0vpk6dSpcuXdizZw8333wzR44cISMjgzfeeIMuXbowbNgwYmNjERGGDh3KAw88wODBg7nuuus4fPgwH374IV9//TVLly7l2Wef5brrrmPjxo1kZmYyatQoli1bxokTJ7jnnnv4xz/+wbJly3j66aepXbs2cXFxp3VqZywRAM4dwMKFC2natKl1EmdMAW3cuJEOHTrkuUzNmjVZsmQJZcuW5ddff2XgwIHExsbywQcf0KNHDx5//HEyMzM5duwYcXFxJCYmsnHjRgAOHz582raGDx/O999/z3XXXUe/fv1OSzjvvPMOlStXZvXq1Zw4cYKLL76Yq666CoCffvqJjRs30qhRoyI9/tIgZBPBwYMHmTFjBg8//DBVq1bll19+oVKlSoEOy5gzkteVO0DDUf/Jdd78f3jvKK0opKenM2LECOLi4ggLC2Pbtm2A0xhj6NChpKen07t3b9q2bUvjxo35/fffuffee7n22muzf8h98c0337B+/frsoqLk5GR+/fVXIiMj6dSpkyWBXPi1slhEeorIVhHZLiKjvMwXEZnizl8vIkUzyoIPFi5cyOjRo7N7NrQkYEzhREVFsWbNmjyXmTRpErVq1WLdunXExsZy8qRTJ3HppZeyfPly6taty6BBg5g1axbnnHMO69ato1u3brz22msMHz7c51hUlVdffZW4uDji4uL4448/shNJXl1fhzq/JQIRCQNeA64GWgIDRSRnZzxXA03d153AG/6KB2D37t2sWrUKgGHDhrFx40batWvnz10aU6JUr+i9GXRu031x+eWXc+LECd56663saatXr2bnzp3Z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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "bins = 10\n", + "print('Min:', np.round(data['prob_regime'].min(), 2), '\\tMax:', np.round(data['prob_regime'].max(), 2), '\\n')\n", + "\n", + "CalibrationDisplay.from_predictions(y_true=data['target'], y_prob=data['prob_regime'], n_bins=bins, strategy='uniform')\n", + "plt.title('Uniform: Probabilities Calibration')\n", + "CalibrationDisplay.from_predictions(y_true=data['target'], y_prob=data['prob_regime'], n_bins=bins, strategy='quantile')\n", + "plt.title('Quantile: Probabilities Calibration')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "1c81ab71-7b93-4428-977e-ff37a6f9d247", + "metadata": {}, + "source": [ + "* Why do many models produce such biased probability estimates, especially for very low and high values?\n", + "* Reasons are slightly different for each model depending on how it works.\n", + "* A lot of other classifiers, such as naive Bayes, SVMs, or decision trees will also produce an S-shaped calibration curve.\n", + "* **The general reason for this is that most classification models optimize for and are scored by binary metrics.**\n", + "\n", + "Notes:\n", + "* Logistic regression is a rare beast that actually produces calibrated probabilities.\n", + " * The secret behind it is that it optimizes for log-odds, which makes probabilities actually present in the model’s cost function.\n", + "* Approaches:\n", + " * Platt-scaling (Sigmoid)\n", + " * Platt-scaling is better at correcting S-shaped probability estimates\n", + " * Isotonic regression\n", + " * Handle any bias shape but at the cost of being prone to overfitting.\n", + " * In practice, recommend going for Platt-scaling, unless you see it not working well and your data set is large.\n", + "* The calibration model should be based on different data than that to which a random forest was fit. \n", + " * Hence, you either need a separate validation set\n", + " * Or you can simply use cross-validation\n", + " \n", + "* **CalibratedClassifierCV**" + ] + }, + { + "cell_type": "markdown", + "id": "4895080e-b173-4c45-86dd-434dc20afd11", + "metadata": {}, + "source": [ + "\n", + "### Calibration Conclusion \n", + "* Many classification models, such as random forest, decision trees, support vector machines, or naive Bayes return biased probability estimates of class membership.\n", + "* These biased probabilities can be used for thresholding, but cannot be held as certainty measures. For instance, if according to such a model, one sample has a probability of 70% of belonging to some class, and another one has 50%, then the former is indeed more likely to belong to this class, but the probability of this being true need not in reality amount to 70%.\n", + "* This is especially true for very high and low predicted probability: if the model predicts 2%, the real probability is likely more than this; if it predicts 97%, it’s typically less.\n", + "* The process of fixing the biased probabilities is known as calibration. It boils down to training a calibrating classifier on top of the initial model. Two popular calibration models are logistic and isotonic regression.\n", + "* Training a calibration model requires having a separate validation set or performing cross-validation to avoid overfitting.\n", + "* It’s all very easy to do in scikit-learn." + ] + }, + { + "cell_type": "markdown", + "id": "9ec1b7bc-516b-4d14-96aa-79f59d229d85", + "metadata": {}, + "source": [ + "---\n", + "\n", + "## Test Calibration algos" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "247c2881-6c46-4ec4-aa14-9cdf6a95788e", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.calibration import CalibratedClassifierCV\n", + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.preprocessing import StandardScaler" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "d4e63783-f109-45d7-9e99-46597dab3613", + "metadata": {}, + "outputs": [], + "source": [ + "X_train_regime = data_train[['rets', 'rets2', 'rets3', 'regime']][data_train['pmodel']==1]\n", + "X_test_regime = data_test[['rets', 'rets2', 'rets3', 'regime']][data_test['pmodel']==1]\n", + "y_train = data_train['target'][data_train['pmodel']==1]\n", + "y_test = data_test['target'][data_test['pmodel']==1]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "c6376db3-fb74-4805-ace8-e5ed833f653c", + "metadata": {}, + "outputs": [], + "source": [ + "scaler = StandardScaler()\n", + "X_train_regime_scaled = scaler.fit_transform(X_train_regime)\n", + "X_test_regime_scaled = scaler.transform(X_test_regime)" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "id": "be70cd7a-15c5-4b30-bbc4-41e4c12e72bc", + "metadata": {}, + "outputs": [], + "source": [ + "# Train model (FP)\n", + "meta_model_regime = LogisticRegression(random_state=0, penalty='none')\n", + "# meta_model_regime.fit(X_train_regime_scaled, y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "id": "e0086766-7ad0-4744-96d9-b16a3a9bd222", + "metadata": {}, + "outputs": [], + "source": [ + "# Apply calibration\n", + "# {'sigmoid', 'isotonic'}\n", + "calibrated_model_sigmoid = CalibratedClassifierCV(base_estimator=meta_model_regime, method='sigmoid', cv=5, n_jobs=-1)\n", + "calibrated_model_sigmoid.fit(X_train_regime_scaled, y_train)\n", + "\n", + "calibrated_model_isotonic = CalibratedClassifierCV(base_estimator=meta_model_regime, method='isotonic', cv=5, n_jobs=-1)\n", + "calibrated_model_isotonic.fit(X_train_regime_scaled, y_train)\n", + "\n", + "probs_sigmoid = calibrated_model_sigmoid.predict_proba(X_train_regime_scaled)[:, 1]\n", + "probs_isotonic = calibrated_model_isotonic.predict_proba(X_train_regime_scaled)[:, 1]" + ] + }, + { + "cell_type": "markdown", + "id": "f441d56a-c913-47e6-86cf-bf0234800a1b", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1b8c406e-52af-45a5-8c18-a3302a22f4e4", + "metadata": {}, + "outputs": [], + "source": [ + "# Get iso model scores\n", + "probs_isotonic = calibrated_model_isotonic.predict_proba(X_train_regime_scaled)[:, 1]\n", + "\n", + "# Get base model scores\n", + "base_scores = np.array([cmodel.base_estimator.predict_proba(X_train_regime_scaled)[:, 1]\n", + " for cmodel in calibrated_model_isotonic.calibrated_classifiers_]).mean(axis=0)\n", + "\n", + "# Check that the base model and calibrated models align\n", + "assert (base_scores.shape == probs_isotonic.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ef4d284e-1cdc-4454-9162-07f9c8b6014c", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "5c8e632d-9482-4400-bd19-3e598a39fdf3", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "fa27c927-970e-4d8e-afb5-ec4463fed05b", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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O29jTBlcz4BNzEzs58vg5xAREclVjDG3nc0RgJO4CswkYCZQwxhzd8oEaXcAdXCtAAOuO8JVzmvqSvuni7X2EPA7rosERYwxvsaYa9J5+CygpjGmT8pxRYHXgSkpw8qz6gdghDGmeMp8Oc+jfEDyGRXnIlkTiWvCsqXGmGhcRfl64JL1Oq214cBtwNvAcVwn1TAyv+zaQ0A0rsnS/sE1gdzYy/T7Zkq/1YFFZ99PmRAuKq0J4ay1G3BdcHgDOIFr8rWluJ4Fc4d0fQ4REZFcqBmuHCEKmAY8Yq3dZa09DtyIK184jmv4+40p52yAj4BeKbOpf5yO/TOiD65Ra5uBo8CjZ99IyQfapnaQtfYornlshqYctx6IAO7PRAypeRVXXrQWWIdrotdX3dS2SK5gMrG0oIi4gXEtF7YfuMdaO8/peERERERExDm6cy6SjYwxXYwxhVPW7XwG1yQxqQ2BFxERERGRfETFuUj2aolrnfFwXMuf3HLeciAiIiIiIpJPaVi7iIiIiIiIiMN051xERERERETEYT5OB5BRoaGhtlKlSk6HISIikm4rVqwIt9YWdzqOvEh5gYiI5DZp5QW5rjivVKkSYWFhTochIiKSbsaYPU7HkFcpLxARkdwmrbxAw9pFREREREREHKbiXERERERERMRhKs5FREREREREHKbiXERERERERMRhKs5FREREREREHKbiXERERERERMRhKs5FREREREREHKbiXERERERERMRhKs5FREREREREHOax4twYM9YYc9QYsz6N940x5mNjzHZjzFpjzFWeikVEREScpbxARETk8jx553w80PUy718PVE/5GgJ84cFYRERExFnjUV4gIiKSJo8V59baBcCJy+xyMzDBuvwLFDbGlPZUPCIiIuIc5QUiIiKX5+Qz52WBfee93p+y7RLGmCHGmDBjTNixY8eyJTgREcl/JkyYwF133YW11ulQ8iPlBSIikmPs3r2b6667jk2bNmVbn04W5yaVbalmQ9bar6y1Ta21TYsXL+7hsEREJL86deoUhw8fJjIy0ulQ8iPlBSIikmMEBASwb98+9uzZk219Olmc7wfKn/e6HHDQoVhERCSfmjp1KvPmzQPgwQcf5M8//6RgwYIOR5UvKS8QERFHHThwgDfffBNrLaVKlWLTpk107Xq56VLcy8nifBrQN2V21quBCGvtIQfjERGRfCY+Pp5nn32WTz75BAAvLy+8vLTKqEOUF4iIiKMmTpzIK6+8wo4dOwDw9vbO1v59PNWwMeYHoB0QaozZD7wA+AJYa0cCM4EbgO3AGWCAp2IRERE536JFi2jevDl+fn7MmTOH0qU175inKS8QEZGc6Pjx4xw8eJD69evz6KOP0rNnTypVquRILB4rzq21d13hfQs84Kn+RUREUrN69WratGnDhx9+yCOPPEKFChWcDilfUF4gIiI50S233MKxY8fYsGED3t7ejhXm4MHiXEREJCeJiIigUKFCNGrUiAkTJtCrVy+nQxIREREHREVFERgYiLe3N++99x5+fn7ZPoQ9NXqwTkRE8rxx48ZRtWpV9u/fD0CfPn0IDAx0OCoRERHJbseOHaNhw4a89957ADRv3pxGjRo5G1QKFeciIpLnXXPNNfTo0YOQkBCnQxEREREHhYaG0r17d1q2bOl0KJdQcS4iInnShx9+yKOPPgpA1apV+eqrryhUqJCzQYmIiEi227BhAx06dODw4cMYY/jggw9o27at02FdQsW5iIjkSYcOHWL37t0kJiY6HYqIiIg4yNvbm927d7N7926nQ7ksTQgnIiJ5grWWcePG0bRpUxo0aMBrr72Gt7c3xhinQxMREZFstn37dmbNmsWDDz5IrVq12Lp1Kz4+Obv81Z1zERHJEyIiInjmmWcYOXIkAD4+PirMRURE8qkvvviC559/nvDwcIAcX5iDinMREcnl/vnnH6y1FC5cmEWLFvHpp586HZKIiIg44MCBA+zYsQOAV155hXXr1hEaGupwVOmn4lxERHKtWbNm0bZtW6ZOnQq4Jn7z8tKpTUREJL9JSkqiffv2DBo0CIACBQpQtmxZh6PKmJx/b19EROQikZGRhISE0LlzZ8aMGcPNN9/sdEgiIiLigMjISIKDg/H29ubzzz+nYsWKToeUabq9ICIiucrbb79N/fr1iYiIwMvLi4EDB+Lr6+t0WCIiIpLNtm/fTs2aNfn+++8B6NixI9WrV3c4qszTnXMREclVrr32Wg4cOKCCXEREJJ+rXLky119/PXXq1HE6FLfQnXMREcnRkpOTef7553njjTcAaNGiBR999BEFChRwODIRERHJbkuXLqVz585ERUXh7e3NmDFjaNy4sdNhuYXunIuISI7m5eXFjh07CAwMxFqr5dFERETy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NDj1GVbT2i4iIpLjbPwVyreAkFJOR+KYggULkpCQQHR0GkukpoNyAhHJLrpzLnnCrFmzOHDgAIMGDaJdu3YsWrQoS7Ooh43o5MboREREstnxHXBkPXR5w+lIst2xY8d4/fXXeeONNwgICODvv/9WTiAiuYLunEueMHLkSL744guSkpIAtLyZiIjkb5umub7nwyHtq1at4osvvmDJkiWAcgIRyT1051xyrcWLF1OtWjVKlCjBuHHjCAwMxNtb8xWJiIiwcRqUuQoKl3c6kmxx+vRpwsLC6NChA507d2bXrl2ULl3a6bBERDJEd84lVwoPD6djx4688MILABQpUoSAgACHoxIREckBTu2DgyuhTnenI8k2jz76KLfccgunTp0CUGEuIrmS7pxLrnL06FFKlChBaGgoP//8c4aXSBMREcnzNk13fa+dt4vz2NhY4uPjKViwIK+88gqDBw+mcOHCToclIpJpunMuucacOXOoWLEiCxYsAKBLly6EhIQ4HJWIiEgOs/FXKFkPilV1OhKPSUhI4Oqrr2bo0KEAlC1blpYtWzoclYhI1ujOueR41lqMMbRq1Yp7772X2rVrOx2SiIhIzhR5GPYthXZPOx2JR5zNCXx9fRk8eDDVqlVzOiQREbfRnXPJ0SZMmECXLl1ISkoiODiYTz75hOLFizsdloiISM60aTpgoc7NTkfidnv37qV169b8+++/ADzwwAN06dLF4ahERNxHxbnkaD4+PlhrOX36tNOhiIiI5HybpkFoDShRy+lI3K5QoULExcVx4sQJp0MREfEIFeeS40yePJmff/4ZgLvuuos5c+ZQpEgRh6MSERHJ4aKPw+5FeWoiuH379jF8+HCSk5MpVKgQYWFh3HDDDU6HJSLiESrOJUdJSkrivffeY9SoUQAYYzDGOByViIhILrDlN7BJeWoJtT///JNPP/2UDRs2ACgnEJE8TcW55Ah//vkn0dHReHt7M23aNKZNm+Z0SCIiIrnLxmlQuCKUauB0JFly7NgxlixZAkC/fv3YunUr9evXdzgqERHPU3Eujtu6dSudOnXigw8+AKBkyZL4+GghARERkXSLOQU7/3bdNc/ld5f79OnDHXfcQXx8PMYYypQp43RIIiLZQhWQOObYsWMUL16cGjVq8Msvv9C5c2enQxIREcmdts6C5ASoc4vTkWTK6dOn8fPzIyAggA8++IDExET8/PycDktEJFvpzrk44rvvvqNy5cps2rQJgO7duxMQEOBwVCIiIrnUxmlQsCyUucrpSDLs9OnTNGzYkBEjRgBQu3ZtDWMXkXxJd84lW1lrMcbQsWNHBg0aRNmyZZ0OSUREJHeLi4Idf0KT/uCVe+67nM0JChYsyKBBg7juuuucDklExFG55y+45HoffPABd999N9ZaSpYsyUcffUTBggWdDktERCR32zYHEmNz1RJqGzdupEWLFmzfvh2AESNG0LJlS4ejEhFxlopzyTaJiYnEx8cTFxfndCgiIiJ5x6ZpEFQcKlztdCTpVrBgQWJiYjhy5IjToYiI5Bga1i4eY61l1KhR1K5dm7Zt2/LEE09o3XIRERF3SoiBrXOgwe3g5e10NJe1ZcsWJk+ezHPPPUe5cuVYs2YNXrloGL6IiKfpL6J4TExMDG+99Rbjx48HwMvLS4W5iIiIO23/ExKiXUuo5XBTpkzhww8/5MCBAwAqzEVELqK/iuJ2s2fPJikpiQIFCrBgwQJGjRrldEgiIiJ506ZpEFgEKrV1OpJU7du3j3Xr1gHw1FNPsWHDBk0GKyKSBhXn4lYLFy6ka9eufP311wCULVtWV8ZFREQ8ITEetsyCmt3A29fpaC5hreXGG2+kf//+WGvx8fGhVKlSToclIpJj6ZlzcYvw8HBCQ0Np06YNkydP5tZbb3U6JBERkbxt13yIi8hxQ9pPnDhB4cKF8fLy4quvviI0NFSPtYmIpINHb2kaY7oaY7YYY7YbY4an8v49xpi1KV+LjTENPRmPeMYHH3xArVq1OHToEMYYbrvtNnx8dN1HRET+o5zAAzb+Cv4FoUo7pyM5Z9++fdSpU4ePP/4YgBYtWlC1alWHoxIRyR08VkEZY7yBz4BOwH5guTFmmrV243m77QKutdaeNMZcD3wFtPBUTOJe1lqMMVx//fUcOnSIIkWKOB2SiIjkQMoJPCApETb/BjW6gI+/09GcywnKlStHnz596NChg9MhiYjkOp68c94c2G6t3WmtjQcmAjefv4O1drG19mTKy3+Bch6MR9zEWsuzzz7L448/DkCtWrV4++23CQgIcDgyERHJoZQTuNuefyDmBNR2fkj70qVLadmyJceOHcMYwzvvvEODBg2cDktEJNfxZHFeFth33uv9KdvSMgj43YPxiJsYY4iKiiIqKork5GSnwxERkZxPOYG7bZwGvgWgWkenIyEwMJDIyEiOHDnidCgiIrmaJx8MTm3mD5vqjsa0x3UibpPG+0OAIQAVKlRwV3ySAUlJSbz//vvceOON1K5dmw8++ECzsIuISHq5LSdI2Sd/5wXJybB5BlTvBH4FHAlh5cqV/PPPPzz88MM0aNCAdevWKS8QEckiT/4V3Q+UP+91OeDgxTsZYxoAo4GbrbXHU2vIWvuVtbaptbZp8eLFPRKsXN7x48d56623+O677wB0AhYRkYxwW04AygvYtxSijjg6pH306NG88847REZGAsoLRETcwZN/SZcD1Y0xlY0xfsCdwLTzdzDGVAB+AvpYa7d6MBbJBGsts2fPxlpLiRIlWLVqFa+88orTYYmISO6jnMCdNk0Db3/XZHDZaOvWrezcuROAt99+mzVr1hASEpKtMYiI5GUeK86ttYnAg8BsYBMw2Vq7wRhznzHmvpTdngeKAZ8bY1YbY8I8FY9k3OTJk+natSuzZ88GoHz58lqnVEREMkw5gRtZ63revGoH8M++wjguLo527drxyCOPABAcHEzRokWzrX8RkfzAWJvqI185VtOmTW1YmM7XnnTixAmKFi1KUlISP/74I7fffruGq4mIZIExZoW1tqnTceRF+S4v2L8CRneAW76ARnd7vLuzOQHAn3/+Se3atSlTpozH+xURycvSygtUcckFnnrqKZo1a0ZkZCTe3t7ceeedKsxFRERyik2/gpcP1Lze412tXbuWKlWqMGXKFACuu+46FeYiIh7kydnaJRex1mKM4aabbiIoKIjAwECnQxIREZHznR3SXvkaCCziwW5cOUHt2rW56667aNy4scf6EhGR/+iWaD6XkJDAAw88wLvvvgtAmzZteP755/Hx0XUbERGRHOXIeji5C+rc7LEu5syZQ/v27YmJicHX15cvvviCqlWreqw/ERH5j4rzfM7Hx4ejR49y4sQJp0MRERGRy9k4DYwX1LrRY114e3tz6tQpjh496rE+REQkdbo9mg/Fx8fz5ptvMmTIEEqVKsWkSZP0XLmIiEhOt2kaVGwNQaFubXbBggXs3r2bvn37ct1117Fy5UrlBSIiDtBf3nxo9+7dvPHGG0ydOhVAJ2AREZGc7tgWOLYZand3e9Pvvfce77zzDomJiYDyAhERp+jOeT6RlJTE33//zXXXXUeNGjXYvHkzFStWdDosERERSY+N01zfa7tnSPuqVasoX748oaGhjBkzhoCAAM03IyLiMF0azSc+/vhjOnbsyOrVqwFUmIuIiOQmm36Fcs2hYNaXMjtx4gRt27bl2WefBSA0NJTg4OAstysiIlmjS6R5mLWWU6dOUaRIEYYOHUq5cuVo2LCh02GJiIhIRpzYBYfXQefXstTMyZMnKVKkCEWLFuWHH36gdevWbgpQRETcQcV5Hta/f382bdrEokWLKFCgALfddpvTIYnkOQkJCezfv5/Y2FinQ5EcICAggHLlyuHr6+t0KJKXbDo7pP2mTDcxb948unfvzu+//06bNm246abMtyUiaVNeIOfLaF6g4jwPu/nmm2nSpAne3t5OhyKSZ+3fv5+QkBAqVaqEMcbpcMRB1lqOHz/O/v37qVy5stPhSF6ycRqUbgRFMv9IWtOmTbnzzjupUqWK++ISkUsoL5CzMpMX6JnzPCQ6Opp77rmH7777DoAePXrw8MMPa9ZVEQ+KjY2lWLFiOgELxhiKFSumuyXiXhEH4EAY1Mn4LO0//vgjN910E0lJSYSEhDBq1CjKlMn6M+sikjblBXJWZvICVW15SEBAAAcOHODIkSNOhyKSr+gELGfp/wVxu03TXd9r35zhQ2NjYzlx4gQnT550c1Aicjk6F8hZGf1/QcV5LhcdHc3zzz9PVFQU3t7e/Pnnnzz++ONOhyUiIiLusPFXKFEHQqula/cZM2YwY8YMAHr37s2CBQsIDQ31ZIQiIuImKs5zuTVr1vD6668za9YsAD1fLpIPeXt706hRI+rVq8dtt93GmTNnMnT8sGHDqFu3LsOGDctw36+//voFrz25HNOLL77Iu+++C8Dzzz/P3LlzAahUqRLh4eGZbnf16tXMnDkzw8e1a9eOsLCwTPcrckWRR2DvEqidviHtycnJvPTSS3zwwQdYazHGKC8QyYeUF+TevEDFeS4UHx/PwoULAWjVqhXbtm2jV69eDkclIk4JDAxk9erVrF+/Hj8/P0aOHJmu4xITEwH48ssvWblyJe+8806G+774JJxdXn75ZTp27Jju/c9+1tRk9iQs4nGbZwAW6lx+SPuSJUuIiYnBy8uLX3/9lZkzZ2pYrUg+przgynJqXqDiPBcaMWIEHTt2ZP/+/QCaFVgkB2nXrh3jx48HXMuptGvXjm+//RaAM2fO0K5dOyZNmgRAREQE7dq146effgIgPDycdu3aMX266xnTw4cPZ7j/tm3bsn37dqKjoxk4cCDNmjWjcePG/PrrrwCMHz+e2267jZtuuonOnTvTvXt3oqOjadGiBZMmTeLYsWP07NmTZs2a0axZMxYtWgRAVFQUAwYMoH79+jRo0ICpU6cyfPhwYmJiaNSoEffcc88FcfTp0+dcnwD33HMP06ZNuyTet99+m/r169OwYUOGDx8OwKhRo2jWrBkNGzakZ8+eqV7x79+/P1OmTDn3+p133qF58+Y0b96c7du3n9vn8ccfp3379jz11FMsW7aMVq1a0bhxY1q1asWWLVuIj4/n+eefZ9KkSTRq1IhJkyal+buLiYnhzjvvpEGDBtxxxx3ExMRk+L+PSIZsmgbFqkGJ2mnusmPHDtq0acPbb78NQJkyZfD398+uCEXkCpQXuCgvSB8tpZZLJCUlER0dTcGCBRk2bBht2rShXLlyToclIjlIYmIiv//+O127duW1116jQ4cOjB07llOnTtG8efNzV5SXLFnC2rVrKVq0KOAacrZ69WoA7r77bh577DHatGnD3r176dKlC5s2beKVV16hUKFCrFu3DoCTJ0/Ss2dPPv3003PHnu/ee+/lgw8+4OabbyYiIoLFixfz9ddfX7DP77//zi+//MLSpUspUKAAJ06cAFwrTQwePBhwXYwcM2YMDz300GU/e8GCBVm2bBkTJkzg0UcfPffM7datW5k7dy7e3t6cPn2aBQsW4OPjw9y5c3nmmWeYOnUqL7/8MmFhYXz66acAPPPMM6n+7r788ksKFCjA2rVrWbt2LVdddVUm/iuJpNOZE7BrIbR+BFK5C37q1CkKFy5M1apV+f777+nWrZsDQYpITqa8IPflBSrOcwFrLTfccAP+/v78+uuvFC9enO7dM76kioh43t9//33uZ19f3wteFyhQ4ILXhQoVuuB1aGjoBa9LlSqVrj7PXqUG1xXyQYMG0apVK6ZNm3buWazY2Fj27t0LQKdOnc6dgC82d+5cNm7ceO716dOniYyMZO7cuUycOPHc9iJFilw2pmuvvZYHHniAo0eP8tNPP9GzZ098fC485cydO5cBAwZQoEABgHMxrV+/nhEjRnDq1CmioqLo0qXLFX8Hd91117nvjz322Lntt91227lnbiMiIujXrx/btm3DGENCQkKqbc2Z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xo0bY5bak7tEREQkJ9u9ezdNmjRhyJAhAFSqVClTZ2Q/HV05FxGRHOvYfWP9+vUjX758nHfeeV6HJCIiIh44lhOULFmSkSNH0rlzZ69DOoWunIuISI40aNAgevXqhXOOYsWKcfvttxMSosOeiIhIbjNr1iyqVq3K0qVLAejfvz/ly5f3OKpT6cq5iIjkSE2bNqVMmTIkJSURFqbDnYiISG5Vp04dmjdvnuUngVW2IiIiOcLhw4d5+OGH6dq1K127dmXAgAFehyQiIiIe+fHHH/nyyy8ZPXo0JUuW5Ouvv/Y6pDPS+D4REckRzIwZM2Ywf/58r0MRERERj61cuZK5c+eyd+9er0MJmIpzERHJto4ePcqbb77J0aNHiYiI4M8//zw++6qIiIjkLnPmzGHOnDkA3H333URHR2eZmdgDoWHtIiKSbc2aNYu77rqLMmXKcOWVV5IvXz6vQxIREREPJCUlMWDAAMqUKcP06dMJCQkhb968Xod1VlSci4hItpKcnMzy5cupX78+F198MdHR0TRt2tTrsERERMQDy5cvp1atWoSFhfH1119TtmxZr0NKNw1rFxGRbOXhhx+mdevW7NixA0CFuYiISC61atUqGjduzKuvvgpArVq1KFiwoMdRpZ+unIuISJbnnOPo0aPkzZuXO++8k3r16lG6dGmvwxIREREPHDlyhLx581K7dm1eeeUVrr32Wq9DyhC6ci4iIllacnIyV1xxBbfffjsAVapUoV+/fpiZx5GJiIhIZpsyZQo1atRg69atAAwePJgSJUp4HFXG0JVzERHJ0kJCQmjSpAkFChTAOaeiXEREJBerX78+TZs2zZH5gK6ci4hIlnPgwAH69+/PggULAHjiiSe47777cuSBWERERE5v0qRJPProowDUqFGDKVOmUK5cOY+jyngqzkVEJMtJSkri119/Zd68eV6HIiIiIh6bN28eM2fOJD4+3utQgkrD2kVEJEuIi4tj7Nix3H777RQrVowVK1aQP39+r8MSERERD/zwww9UrFiR+vXr89xzzxESEkJYWM4uX3XlXEREsoTPP/+cO++8k99++w1AhbmIiEguFRsbS79+/Xj++ecByJMnT44vzEFXzkVExEMJCQmsW7eO2rVrc+ONN1KvXj2ioqK8DktEREQ8sGzZMurWrUtkZCS//PILtWrV8jqkTKUr5yIi4pn+/fvTsWNHYmNjMTMV5iIiIrnU7NmzadCgARMmTACgYcOGREREeBxV5tKVcxERyVTJyckkJycTFhbG/fffz+WXX05kZKTXYYmIiIgHjh49Sp48ebjgggt44YUX6NGjh9cheUZXzkVEJNPEx8dz0UUX8dRTTwFw/vnnc/nll3sclYiIiHjhgw8+oH79+hw8eJCQkBAefPBBChYs6HVYnlFxLiIimSYiIoL69etTvXp1r0MRERERj9WrV48mTZqQmJjodShZgopzEREJql27dtGnTx82btwIwBtvvEG/fv28DUpEREQynXOOd999l5dffhmAli1bMmnSJIoVK+ZxZFmDinMREQmq2NhYpk2bRnR0tNehiIiIiIfMjBkzZjB9+nSSk5O9DifLUXEuIiIZbv/+/YwZMwaAqlWrsn79eq644gqPoxIREREvTJo0ia1btwIwZswYvvnmG0JCVIqeTHtEREQy3DvvvMPAgQP5559/ADQbu4iISC61fft2br75Zl599VUA8ufPj5l5HFXWpOJcREQyRFxcHOvXrwfggQceYN68edSsWdPjqERERMQLK1asAKBs2bLMnDmTESNGeBxR1qfiXEREMkSPHj3o1asXSUlJ5MmThyZNmngdkoiIiHjgyy+/pG7dukyfPh2AqKgowsLCPI4q69MeEhGRdEtISCAsLAwz47HHHgMgNDTU46hERETECwkJCYSHh9O9e3dGjBhBq1atvA4pW9GVcxERSZc9e/bQqlUrRo8eDcBFF13ERRdd5HFUIiIi4oUXXniB1q1bc/ToUSIiInj44YeJiIjwOqxsRcW5iIikS7FixahVqxalS5f2OhQRERHxWK1atWjUqBGJiYleh5JtqTgXEZGAbdy4keuuu459+/YREhLCp59+ymWXXeZ1WCIiIpLJkpKSeOGFF/j4448B6N27N++//z758+f3OLLsS8W5iIgEbM+ePfz8888sXrzY61BERETEY99//z0zZszwOowcQ8W5iIic1s6dO5k0aRIATZs2ZePGjbRv397boERERCTTOecYO3YsBw8eJDQ0lO+++47333/f67ByDBXnIiJyWsOHD+eWW25hz549ABQoUMDjiERERMQLy5Yt45ZbbjlekBcoUAAz8ziqnEPFuYiInOLAgQNs374dgGeffZY///yTEiVKeByViIiIeGHlypUA1K9fn99+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vDhz587NEveYi4iISObbtGkT69evB+D5559n8eLFFClSxNugRETOgYpzyTamTp1Ku3btmDp1KgDVq1cPynNKM9pul8bsq5GlMjcQERGRHCIhIYF27dpx2223AVCgQAHKli17hrVERLI2jfmRLO/gwYMUKlSI7t2788EHH9C9e3evQwpIiQJ52BNzlGZH3jllefSQTh5FJSIikn0dywnCw8MZNWoUNWrU8DqkgBzLCVJbLiJyjB6lJlna8OHDGTt2LIsWLaJgQU2yJiLZkx6lFjzKC3KPlStX0q5dO9544w2uvvpqr8MREUk3PUpNsqWOHTty4MABwsPDvQ5FREREPFSjRg26d+9OnTp1vA5FRCQosv4Nu5KrJCUl8eijj/Liiy8CcMEFF/DSSy8RERHhcWQiIiKS2X777TcuueQS4uLiCAsLY8yYMTRo0MDrsEREgkLFuWQpISEhrFmzhg0bNngdioiIiHjsyJEjbNiwgS1btngdiohI0GlYu3guKSmJ119/neuuu46yZcsyYcIEPZ9UREQkl5o/fz4rV67k+uuvp2PHjixbtkx5gYjkCrpyLp7bsGEDjz/+OB9//DGADsAiIiK52LPPPsvQoUM5etQ3u7nyAhHJLfS/nXjCOcfvv//OBRdcQPXq1Vm8eDE1a9b0OiwRERHxwKpVqyhWrBglS5Zk1KhRhIWFkSePHjMmIrmLrpyLJ0aNGkWbNm2YN28eALVq1cLMPI5KREREMtvBgwdp2bIlDz30EAAlS5akaNGiHkclIpL5dOVcMtWhQ4coWLAgN954IxERETRt2tTrkERERMQDx3KCQoUK8cEHH9CqVSuvQxIR8ZSunEumGTx4MB07diQhIYH8+fPTr18/QkL0KygiIpLb/PHHH1SuXJnZs2cDcPnll1O2bFmPoxIR8ZaunEum6dChA2XKlNHwdRERkVyuQYMGdOvWjfLly3sdiohIlqHLlhI08fHx3HHHHXzyyScAXHHFFQwZMkSzroqIiORC33//PVdccQVJSUkUKFCATz75hGrVqnkdlohIlqHiXIImPDycpUuXsnbtWq9DEREREY/t3buXtWvXsnv3bq9DERHJklScS4Y6cuQII0aMICYmhtDQUP7v//6PoUOHeh2WiIiIeGDmzJl89913AFx//fXMmzePMmXKeByViEjWpPHFkqEWLVrE448/Tvny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hyIick6mTZvGeeedx1133ZWrDsAiGSUkJIQ5c+YEPPRURCQrU14QGE0I57F169Yxd+5c+vTpQ8uWLVm3bh0RERFehyUick4uvvji47PAikhgEhMTefvtt7nllluIjIzk119/VU4gIjmC8oLA6Mq5x4YPH84999xzfNIBHYRFRERypwULFnDvvfcefzyRcgIRkdxFxbkHduzYwfbt2wF4+eWXmT9/PgULFvQ4KhEREclszjkWL14MQPPmzVmwYAG33HKLx1GJiIgXVJxnsmMzB95xxx0AFCtWjEqVKnkclYiIiHjh2WefpXnz5qxbtw6Axo0bexuQiIh4RvecZ5L4+HgiIiLImzcvr7zySqrP9hMREZGczznHkSNHiIiIYODAgZQuXZqqVat6HZaIiHhMxXkmWL58OV26dOH999+nc+fOXHHFFV6HJCIeiHrmF/bEHD1leYkCeYge0ind2y1QoAAxMTHnEhrR0dGMGzeOkSNHpvr5hg0b+P333+nTp09A7UUkdc45brrpJg4ePMjkyZMpVaoUAwYM8DosEfGA8gI5mYrzTFC1alWioqIoXry416GIiIdSOwCfbnlmioqKIioq7cdwb9iwgU8//fT4QfhM7UUkdWZGVFQUcXFxOOcwM69DEhGPKC+Qk6k4D5K//vqLl19+mY8//ph8+fLx1VdfeR2SiATZU98sY/m2g+la95pRf6S6vG65Qgztcfa3wSxatIhBgwYRFxdH9erVGTNmDEWLFmXevHnHH9PUpk0bfvjhB5YuXcqMGTN46aWX+Pbbb5k5cyb33HMP4CskZs2axSOPPMKKFSto3LgxN910E02aNDnePiYmhrvuuovo6GjMjKFDh2qEkEgKMTExPPDAA1x33XW0b9+eu+++2+uQRCQTKC9QXnC2NCFckGzdupW5c+eyceNGr0MRkVzoxhtv5IUXXmDJkiU0aNCAp556CoD+/fvz7rvv8scffxAaGprqui+99BJvvfUWixYtYvbs2eTLl48RI0bQtm1bFi1axH333XdC++HDh1O4cGH+/vtvlixZQseOHYP+/eT/27v34KjKNI/j34cQjAY2ROIdhUBxB7llHRBGQQeFiCIsIzdB3BlYSxikMrMLY1nCzKDFjJaDFs4gMoLDsLrKDCyIF7xEQBAMAUQIF4OgIsigIBKBSOTdP/qEbUKHdA7pnE7696k6xelz3nPO0w+dep/3XLqlJjEzVqxYQX5+ftChiEiCUl1QM+jKeRXaunUrn3zyCbfffjsDBw6kb9++XHjhhUGHJSLVpKIz2U0nLyt33f/8R/cqi+PIkSN888033HjjjQDcc889/PSnP+Wbb77h6NGjXH/99QAMHz6cV1555azte/ToQU5ODiNGjGDQoEE0btz4nMd76623Tv8uM0B6enqVvReRmqq4uJhnnnmG+++/n9TUVDZu3KiaQCTBqC4IUV0QPV05r0I5OTnk5ORQUlICoE5YROKKcy6qdpMnT2bOnDkcP36cbt26sX379gr3q+dmRc70xhtv8MADD7B8+XJANYGIxB/VBfFHg/PztHv3br79NvQsyZw5c1i9ejV16+qGBBE5W0b9epVa7ldaWhrp6emsWrUKgPnz53PjjTeSnp5OgwYNWLt2LcAZZ7XD7dq1iw4dOjBp0iSysrLYvn07DRo04OjRoxHb33LLLcycOfP068OHD1fp+xGpKUpKSti6dSsAd9xxB/n5+WRnZwcclYjEK9UFUpZGkefh0KFDdO7cmREjRvD0009z9dVXBx2SiMSx8/lZlHM5duzYGbeY5eTk8Pzzz5/+4pdmzZoxd+5cAP7yl78wZswYUlNT6dWrF2lpaWftb8aMGeTm5pKUlETbtm3p168fderUoW7dunTs2JHRo0fTuXPn0+0feughxo0bR/v27UlKSmLKlCkMGjQoJu9VJJ5NmDCBF198kcLCQi6++GK6dOkSdEgiEsdUF0hZFu3tDPEiKyvLrV+/PtAYiouLueCCCwCYN28evXv3pkmTJoHGJCLB2LZtG23atAk6jKgVFRVRv359AKZPn87+/ft58sknA46qdon0mTCzfOecfmMmBoKuC5xznDx5knr16rFz507y8/MZNmxYYPGISLBUF0hZlakLdFt7Ja1Zs4bMzEw2bdoEwOjRozUwF5EaY9myZXTq1In27duzatUqHnrooaBDEqmxSkpKyM7OJicnB4CWLVtqYC4iNYrqgvii29orqVWrVnTt2lVf7CIiNdKQIUMYMmRI0GGI1Ap169ala9euFX5zsYhIvFJdEF905TwKb7/9Nj//+c9xztGoUSOWLl1Kq1atgg5LREREqtmhQ4cYOXIkBQUFAEybNo37tjNkQwAAEl9JREFU7rsv4KhERKQ20OA8CgUFBaxevZqD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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, axs = plt.subplots(2, 2, figsize=(17, 12))\n", + "\n", + "# 1st\n", + "CalibrationDisplay.from_predictions(y_true=data['target'], y_prob=data['prob_regime'], ax=axs[0, 0], n_bins=bins, strategy='uniform')\n", + "CalibrationDisplay.from_predictions(y_true=data['target'], y_prob=probs_sigmoid, ax=axs[0, 0], n_bins=bins, strategy='uniform')\n", + "axs[0, 0].legend(['Perfectly calibrated', 'Logistic', 'Calibrated'], loc='lower right')\n", + "axs[0, 0].set_title('Sigmoid: Uniform')\n", + "\n", + "# 2nd\n", + "CalibrationDisplay.from_predictions(y_true=data['target'], y_prob=data['prob_regime'], ax=axs[1, 0], n_bins=bins, strategy='quantile')\n", + "CalibrationDisplay.from_predictions(y_true=data['target'], y_prob=probs_sigmoid, ax=axs[1, 0], n_bins=bins, strategy='quantile')\n", + "axs[1, 0].legend(['Perfectly calibrated', 'Logistic', 'Calibrated'], loc='lower right')\n", + "axs[1, 0].set_title('Sigmoid: Quantile')\n", + "\n", + "# 3rd\n", + "CalibrationDisplay.from_predictions(y_true=data['target'], y_prob=data['prob_regime'], ax=axs[0, 1], n_bins=bins, strategy='uniform')\n", + "CalibrationDisplay.from_predictions(y_true=data['target'], y_prob=probs_isotonic, ax=axs[0, 1], n_bins=bins, strategy='uniform')\n", + "axs[0, 1].legend(['Perfectly calibrated', 'Logistic', 'Calibrated'], loc='lower right')\n", + "axs[0, 1].set_title('Isotonic: Uniform')\n", + "\n", + "# 4th\n", + "CalibrationDisplay.from_predictions(y_true=data['target'], y_prob=data['prob_regime'], ax=axs[1, 1], n_bins=bins, strategy='quantile')\n", + "CalibrationDisplay.from_predictions(y_true=data['target'], y_prob=probs_isotonic, ax=axs[1, 1], n_bins=bins, strategy='quantile')\n", + "axs[1, 1].legend(['Perfectly calibrated', 'Logistic', 'Calibrated'], loc='lower right')\n", + "axs[1, 1].set_title('Isotonic: Quantile')\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "e5af657a-e195-4534-872b-8111b2b75291", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
retsflagstargettarget_retspmodelpretsrets2rets3regimepred_regimeprob_regimemeta_rets_regimecatprobs_isotonic
1995-01-220.02484701.00.02930510.000000-0.0300590.0017480.01.00.5924890.000000(0.582, 0.605]0.617378
1995-01-230.02930500.0-0.00311810.0293050.024847-0.0300590.00.00.4385450.029305(0.437, 0.487]0.370995
1995-01-280.01455401.00.02118310.000000-0.010735-0.0185850.00.00.4897510.000000(0.487, 0.515]0.433661
1995-01-290.02118301.00.02197610.0211830.014554-0.0107350.01.00.5202950.000000(0.515, 0.539]0.483861
1995-01-300.02197601.00.01566810.0219760.0211830.0145540.01.00.6265800.021976(0.605, 0.638]0.639011
.............................................
2011-05-200.00791100.0-0.01293310.000000-0.008262-0.0079410.01.00.5303790.000000(0.515, 0.539]0.472978
2011-05-230.00058000.0-0.00679210.000000-0.002575-0.0129330.01.00.5009090.000000(0.487, 0.515]0.464035
2011-05-290.00254001.00.00801310.000000-0.000871-0.0064360.01.00.5302430.000000(0.515, 0.539]0.472978
2011-05-300.00801301.00.02377510.0080130.002540-0.0008710.01.00.5574060.008013(0.539, 0.561]0.572039
2011-05-310.02377501.00.01947610.0237750.0080130.0025400.01.00.5820310.023775(0.561, 0.582]0.610236
\n", + "

2994 rows × 14 columns

\n", + "
" + ], + "text/plain": [ + " rets flags target target_rets pmodel prets rets2 \\\n", + "1995-01-22 0.024847 0 1.0 0.029305 1 0.000000 -0.030059 \n", + "1995-01-23 0.029305 0 0.0 -0.003118 1 0.029305 0.024847 \n", + "1995-01-28 0.014554 0 1.0 0.021183 1 0.000000 -0.010735 \n", + "1995-01-29 0.021183 0 1.0 0.021976 1 0.021183 0.014554 \n", + "1995-01-30 0.021976 0 1.0 0.015668 1 0.021976 0.021183 \n", + "... ... ... ... ... ... ... ... \n", + "2011-05-20 0.007911 0 0.0 -0.012933 1 0.000000 -0.008262 \n", + "2011-05-23 0.000580 0 0.0 -0.006792 1 0.000000 -0.002575 \n", + "2011-05-29 0.002540 0 1.0 0.008013 1 0.000000 -0.000871 \n", + "2011-05-30 0.008013 0 1.0 0.023775 1 0.008013 0.002540 \n", + "2011-05-31 0.023775 0 1.0 0.019476 1 0.023775 0.008013 \n", + "\n", + " rets3 regime pred_regime prob_regime meta_rets_regime \\\n", + "1995-01-22 0.001748 0.0 1.0 0.592489 0.000000 \n", + "1995-01-23 -0.030059 0.0 0.0 0.438545 0.029305 \n", + "1995-01-28 -0.018585 0.0 0.0 0.489751 0.000000 \n", + "1995-01-29 -0.010735 0.0 1.0 0.520295 0.000000 \n", + "1995-01-30 0.014554 0.0 1.0 0.626580 0.021976 \n", + "... ... ... ... ... ... \n", + "2011-05-20 -0.007941 0.0 1.0 0.530379 0.000000 \n", + "2011-05-23 -0.012933 0.0 1.0 0.500909 0.000000 \n", + "2011-05-29 -0.006436 0.0 1.0 0.530243 0.000000 \n", + "2011-05-30 -0.000871 0.0 1.0 0.557406 0.008013 \n", + "2011-05-31 0.002540 0.0 1.0 0.582031 0.023775 \n", + "\n", + " cat probs_isotonic \n", + "1995-01-22 (0.582, 0.605] 0.617378 \n", + "1995-01-23 (0.437, 0.487] 0.370995 \n", + "1995-01-28 (0.487, 0.515] 0.433661 \n", + "1995-01-29 (0.515, 0.539] 0.483861 \n", + "1995-01-30 (0.605, 0.638] 0.639011 \n", + "... ... ... \n", + "2011-05-20 (0.515, 0.539] 0.472978 \n", + "2011-05-23 (0.487, 0.515] 0.464035 \n", + "2011-05-29 (0.515, 0.539] 0.472978 \n", + "2011-05-30 (0.539, 0.561] 0.572039 \n", + "2011-05-31 (0.561, 0.582] 0.610236 \n", + "\n", + "[2994 rows x 14 columns]" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data['probs_isotonic'] = probs_isotonic\n", + "data" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "2952ac3b-544e-4865-9c71-807fd5fa05ed", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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4rc129iTgnPOuSRPCs65nZIkLr300uT4lClTmDhxYsbzT5s2jQ4dOlBQUEDPnj2ZNm1avWO48847mTFjRnJ5K1ZsuQv//PPPZ/HixfVe5rbyXlKd29HMPKPyeN5QmHlH46x7xAONs54G0KJFCx5++GGuuOIK9tijttdQ1+yMM87gtttuY/Xq1fTs2ZPTTz+d/Pz8umcMxowZkxyeNm0avXr1Ys89o9dST506dati2lZ+puCc2yk1a9aM0aNHc9NNN1Wb9sknnzB48GD69OnD4MGDWb58ea3L6tixI127duWTTz5h3rx59OvXj969e3Puuefy7bffAjB+/Hh69uxJnz59uOyy6OVxEydOZMqUKTz44IO89tprjBw5koKCAsrKyigqKuK1114DYNasWfTu3ZtevXoxbty45HpbtWrFVVddRd++fRkwYACrVq3a9u2yzUtwzrltNG3atErNL5s2baJp06aV6hQUFHDzzTcnxxcuXMjFF1+cdnmjRo1i1KhRda537Nix9OnTh8svv7xS+YUXXsjZZ59NcXExf/zjH/nFL37Bo48+WuNyPvroI5YtW0bnzp057LDDmDdvHvvvvz9nn302d9xxB2effTaPPPII7733HpJYu3Ztpfl/9rOfcdtttzFlyhQKCwsrTVuxYgXjxo3j9ddfp127dgwZMoRHH32Uk046ifXr1zNgwAAmTZrE5Zdfzt13382ECRPq/N618aTgXA7oMv6JBlvW1OarOLpH5k0YuWDZsmXMnz+/XvOsXbu2xnky7YNo99135+yzz+bWW2+lZcuWyfKXXnqJhx9+GICzzjqrWtKo8MADD/DCCy/QokULbrnlFj7//HO6du3K/vvvD0BxcTG///3vufDCC8nLy+P888/n+OOP54QTTsj4ey5YsICioiI6dIg6NR05ciTPPfccJ510ErvssktyWYcccghz527N68Ur86TgnMu6Ll26MHDgwOR4TWcKqdq2bVtpnqrLy9TFF1/MwQcfzDnnnFNjnZpu7ay4pgDRw2sffvhh2nrNmjXj1VdfZd68ecyePZvbbruNZ57J7E21tb3zpnnz5snYmjZtSnl5eUbLrI0nBedc1lVt7snk6eCCggISicQ2r7t9+/acfvrp3HPPPZx77rkA/PjHP2b27NmcddZZ3H///RxxxBEZLevAAw9k2bJlLF26lG7dunHf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gw8+YOzYsSxatIi2bdtWe1/Cd999xxlnnMEtt9zCW2+9xdNPP03Lli2zsQkq8aTgnNup9e/fn3vvvZeJEyfyzjvv0Lp1axYsWEBRUREdOnSgWbNmjBw5kueee67avC+88AInn3wyu+22G61ateKUU05Jnml07dqVgoICAA455BCWLVtWad7333+fTp060b9/fwB23313mm3LdZQG4knBObdTO+qoo3juuefYa6+9OOuss5gxY0bG3WXXVq9FixbJ4aZNm1JeXvlFSjtz19nO7RBuvvlmbrrppmS7sdsxfPLJJ3Ts2JELLriA8847jzfeeIPDDjuM+fPn88UXX7Bp0yZmzZrFwIEDAWjevDnff/89ECWURx99lA0bNrB+/XoeeeQRjjzyyIzWe+CBB7JixQoWLFgARD3DVk0c2ZD9cxXnthMFBQWsXbs22SSQy55esio5XNajvNL41jg65U1usahyC2lZI3SdXSGRSHDjjTfSvHlzWrVqxYwZM+jUqRPXX389gwYNwsw47rjjGDZsGBC9ka1Pnz4cfPDB3H///YwaNYpDDz2UzZs3M3r0aPr161etqSidXXbZhQceeICLLrqIsrIyWrZsydNPP02rVq1i/sa186TgnNspVTyjUFxcTHFxcbXpI0aMYMSIEdXKb7jhBm644Ybk+CWXXMIll1xS6R0QXbp04d13303Wueyyy5LDqT2s9u/fP21X3dnkzUfOOeeSPCk4l6GLL744+c+5HZU3HzmXoYr72Nu2bZvtUHYIuXr3zY4k07uoUsV6piCpraQHJb0naYmkwyW1lzRX0gfhs11K/SskLZX0vqShccbmnMuevLw8vvzyy63aabnMmBlffvkleXl59Zov7jOFW4AnzexnknYBdgWuBOaZ2WRJ44HxwDhJPYHhwEHAnsDTkvY3s00xx+ica2SdO3empKSEzz//PO30jRs31ntnlm25GHNeXh6dO3eu1zyxJQVJuwNHAaMAzOw74DtJw4CiUG06kADGAcOA2Wb2LfCxpKXAocBLccXonMuO5s2b07Vr1xqnJxIJ+vXr14gRbbvtMeZ04jxT2A/4HLhXUl/gdeCXQL6ZrQQws5WSOob6ewGp92aVhLJKJI0GRgPk5+eTSCQaPPDS0tJYlhunnI85r3prYGmTNiTSlDeoBtwma9euTX429La+tHfDPbRUpsq3UW7Oa09Zj+q3VtZHIi/DXUUDbZec/z2nsT3GnE6cSaEZcDBwkZm9IukWoqaimqS74lStwdHM7gLuAigsLLQ4Xo2YSCS2u1cu5nzMM++oVpTIG0rRxr/Hu96iuvvVz1TFBea2bds2+LYeNf6JBlvW1OYzK42X9RhByyUza6idmaJMH15roO2d87/nNLbHmNOJ80JzCVBiZq+E8QeJksQqSZ0AwufqlPp7p8zfGVgRY3zOOeeqiC0pmNlnwKeSDghFg4HFwONAxeODxcBjYfhxYLikFpK6At2BV+OKzznnXHVx3310EXB/uPPoI+AcokQ0R9J5wHLgNAAzWyRpDlHiKAfG+p1HLpeMGjWKLl267BBNBM7VJNakYGYLgcI0kwbXUH8SMCnOmJzbWp4U3M7Au7lwzjmX5EnBOedckicF5zI0bdq05D/ndlSeFJzL0LRp05g+fbonBbdD86TgnHMuyZOCc865JE8KzjnnkjwpOOecS/I3r7kd28wzGm5Zqxdv+cxkuSMarjM+5xqLnyk455xL8qTgnHMuyZuPnMtQwb5tWdukPQV7b852KM7FxpOCcxm6+ax+jfNiIOeyyJuPnHPOJXlScM45l+TNR85laOGyNSwsf4+2zdbwRdl3ddY/vwHfu+xcY/Gk4FyGLv7TQuYvmcvAHh2YcGrPbIfjXCy8+cg551xSrElB0jJJ70haKOm1UNZe0lxJH4TPdin1r5C0VNL7kobGGZtzzrnqGuNMYZCZFZhZxbuaxwPzzKw7MC+MI6knMBw4CDgGuF1S00aIzznnXJCN5qNhwPQwPB04KaV8tpl9a2YfA0uBQxs/POec23nFfaHZgKckGfAHM7sLyDezlQBmtlJSx1B3L+DllHlLQlklkkYDowHy8/NJJBINHnRpaWksy41TzsecV701sLRJGxJpynPV2iZvAZ+ztkl7ynqMqLP+pVYef1BplKlybJvzMou3Nom8DHcVDfQbzPnfcxrbY8zpxJ0UfmJmK8KOf66k92qpqzRlVq0gSix3ARQWFlpRUVGDBJoqkUgQx3LjlPMxz7yjWtH29nRw281fJT9bLplZZ/3ffv+ruENKa2rzyrGV9RiRUby1KeqRn2HFhukZNud/z2lsjzGnE2vzkZmtCJ+rgUeImoNWSeoEED5Xh+olwN4ps3cGVsQZn3POucpiSwqSdpPUumIYGAK8CzwOFIdqxcBjYfhxYLikFpK6At2BV+OKzznnXHVxNh/lA49IqljPTDN7UtICYI6k84DlwGkAZrZI0hxgMVAOjDWzTTHG51y9JCYMSjZ5Pb1kVbbDcS4WsSUFM/sI6Jum/EtgcA3zTAImxRWTc8652vkTzc4555I8KTjnnEvypOBchoqufZZBp55H0bXPZjsU52LjScE551ySJwXnnHNJnhScc84leVJwzjmX5EnBOedckicF55xzSZ4UnHPOJXlScM45lxT3+xSc22HcfGYBifICipot5Iuy77IdjnOx8DMF5zJU0KUdBb0OpKBLu2yH4lxs/EzBuZhMbX5jtkNwrt4ySgqSLqltupn9rmHCcc45l02ZnikUAv2J3o4G8FPgOeDTOIJyLhddfN+bJD59i6K9N3NC4Z7ZDse5WGSaFPYADjazdQCSJgJ/NrPz4wrMuVyz8JO1vLXkc9pu7uBJwe2wMr3QvA+QervFd0CXBo/GOedcVmWaFO4DXpU0UdI1wCvAjExmlNRU0puS/hrG20uaK+mD8Nkupe4VkpZKel/S0Pp+Geecc9smo6QQ3p18DrAGWAucY2bXZbiOXwJLUsbHA/PMrDswL4wjqScwHDgIOAa4XVLTDNfhnHOuAdTnOYVdgW/M7BagRFLXumaQ1Bk4HpiaUjwMmB6GpwMnpZTPNrNvzexjYClwaD3ic845t40ySgqhyWgccEUoag78KYNZbwYuBzanlOWb2UqA8NkxlO9F5buZSkKZc865RpLp3UcnA/2ANwDMbIWk1rXNIOkEYLWZvS6pKIN1KE2ZpVnuaGA0QH5+PolEIoNF109paWksy41TzsecV/0SUWmTNiTSlOeqtU3eAj5nbZP2lPUYke1wMrY5b9vjTeRluKtooN9gzv+e09geY04n06TwnZmZJAOQtFsG8/wEOFHScUAesLukPwGrJHUys5WSOgGrQ/0SYO+U+TsDK6ou1MzuAu4CKCwstKKiogy/QuYSiQRxLDdOOR/zzDuqFSXyhlK08e9ZCGbrtN38VfKz5ZKZWY4mc2U9RmxzvEU98jOs+MA2radCzv+e09geY04n02sKcyT9AWgr6QLgaeDu2mYwsyvMrLOZdSG6gPyMmZ1J9ABccahWDDwWhh8HhktqEa5XdAderde3cS5Go47sQvHpJzLqyC7ZDsW52NR5piBJwAPAgcA3wAHA1WY2dyvXOZkoyZwHLAdOAzCzRZLmAIuBcmCsmW3aynU41+BGDexKl3B28/SSVdkOx7lY1JkUQrPRo2Z2CLBVicDMEkAiDH8JDK6h3iRg0taswznn3LbLtPnoZUn9Y43EOedc1mV6oXkQMEbSMmA90Z1CZmZ94grMuVwzbf7HJNY+xrK2K+nccddsh+NcLGpNCpL2MbPlwLGNFI9zOWva88uYv2QBy3p0YMKpPbMdjnOxqOtM4VGi3lE/kfSQmZ3aCDE555zLkrquKaQ+ULZfnIE455zLvrqSgtUw7JxzbgdUV/NRX0nfEJ0xtAzDsOVC8+6xRuecc65R1ZoUzMy7rnbOuZ1IfbrOds45t4PzpOCccy4p04fXnNvpFezblrVN2lOw9+a6Kzu3nfKk4FyGbj6rX7K7b+8Qz+2ovPnIOedckicF55xzSd585FyGFi5bw8Ly92jbbE22Q3EuNp4UnMvQxX9ayPwlcxnoHeK5HZg3HznnnEvypOCccy4ptqQgKU/Sq5LekrRI0q9DeXtJcyV9ED7bpcxzhaSlkt6XNDSu2JxzzqUX55nCt8C/mFlfoAA4RtIAYDwwz8y6A/PCOJJ6AsOBg4BjgNsled9LzjnXiGJLChYpDaPNwz8DhgHTQ/l04KQwPAyYbWbfmtnHwFLg0Ljic845V12s1xQkNZW0EFgNzDWzV4B8M1sJED47hup7AZ+mzF4SypxzzjWSWG9JNbNNQIGktsAjknrVUl1pyqq92EfSaGA0QH5+PolEogEiray0tDSW5cYp52POq36JqLRJGxJpynPV2iZvAZ+ztkl7ynqMyHY4Gduct+3xJvIy3FU00G8w53/PaWyPMafTKM8pmNlaSQmiawWrJHUys5WSOhGdRUB0ZrB3ymydgRVplnUXcBdAYWGhFRUVNXi8iUSCOJYbp5yPeeYd1Yoq+hHaXrTd/FXys+WSmVmOJnNlPUZsc7xFPfIzrPjANq2nQs7/ntPYHmNOJ867jzqEMwQktQSOBt4DHgeKQ7Vi4LEw/DgwXFILSV2B7sCrccXnXH0lJgzi2YfuITFhULZDcS42cZ4pdAKmhzuImgBzzOyvkl4C5kg6D1gOnAZgZoskzQEWA+XA2ND85JxzrpHElhTM7G2gX5ryL4HBNcwzCZgUV0zOua2TaVfh549/IqN6yyYfvy3huBj5E83OOeeSPCk4l6Gia59l0KnnUXTts9kOxbnYeFJwzjmX5EnBOedckicF55xzSf6SHbfDy/TOmbqsWf9dpU/ndkR+puCccy7Jk4JzzrkkTwrOOeeSPCk455xL8gvNzmXo34d046v8gbRfNT/boTgXG08KzmWo2w9bUdbjAFrq9WyH4lxsvPnIOedckicF55xzSd585FyGbn9qKR889Fu6t17Pfwzplu1wnIuFJwXnMvThZ6W8u/yfNNmnTbZDcS423nzknHMuyZOCc865pNiSgqS9JT0raYmkRZJ+GcrbS5or6YPw2S5lniskLZX0vqShccXmnHMuvTjPFMqBS82sBzAAGCupJzAemGdm3YF5YZwwbThwEHAMcLukpjHG55xzrorYkoKZrTSzN8LwOmAJsBcwDJgeqk0HTgrDw4DZZvatmX0MLAUOjSs+55xz1TXK3UeSugD9gFeAfDNbCVHikNQxVNsLeDlltpJQ5pzbTkxtfmNmFWfOqH163lCYeUfmKx7xQOZ1Xa1iTwqSWgEPAReb2TeSaqyapszSLG80MBogPz+fRCLRQJFuUVpaGsty45TzMedVv0RU2qQNiTTlDa2sR3mDLGfzbiuBr9m8Wz5lPUY0yDIbw+a89jkXbyKv9l1PvX8bOfDbz/n/gxmKNSlIak6UEO43s4dD8SpJncJZQidgdSgvAfZOmb0zsKLqMs3sLuAugMLCQisqKmrwuBOJBHEsN045H3Oao75E3lCKNv499lU31JvXjukmevU4gc7ff0DLJTMbZJmNoazHiJyLt6hHfq3T6/3bKMr+mULO/x/MUJx3Hwm4B1hiZr9LmfQ4UByGi4HHUsqHS2ohqSvQHXg1rvicq6+hfX/IiFN/ytC+P8x2KM7FJs4zhZ8AZwHvSFoYyq4EJgNzJJ0HLAdOAzCzRZLmAIuJ7lwaa2abYozPOedcFbElBTN7gfTXCQAG1zDPJGBSXDE555yrnfd95FyG/v7WZ5Qs/gudv//Mm5DcDsuTgnMZeuqtz3h7+fv02aeNJwW3w/K+j5xzziX5mYJzbvs384zsrHcHfGjOk4LbZl3GP1FnnanNqz8rUNajPO0zBEfXcQ+7cy4+3nzknHMuyZOCc865JG8+cjmnobqlcM7Vn58pOOecS/IzBecy9KMftmLzbvn8qPX6bIfiXGw8KTiXof8Y0i0nexx1riF585FzzrkkTwrOOeeSvPnIuQwt/ayUr+x92q8qpdsPW2U7HOdi4UnBuQzd8dRS3l7+On32acNvzy7IdjjOxcKTwk4ok24pnHM7J7+m4JxzLsmTgnPOuSRPCs4555JiSwqS/ihptaR3U8raS5or6YPw2S5l2hWSlkp6X9LQuOJyzjlXszjPFKYBx1QpGw/MM7PuwLwwjqSewHDgoDDP7ZKaxhibc865NGJLCmb2HPBVleJhwPQwPB04KaV8tpl9a2YfA0uBQ+OKzTnnXHqNfUtqvpmtBDCzlZI6hvK9gJdT6pWEsmokjQZGA+Tn55NIJBo8yNLS0liWG6eMYv7qIwD+p095/AFVUcaIamWb89pT1qN6ea7avNtK4Gs275a/fcWdg9s5kVf7rqe0SRsSedtBK3LK/7ntcb+RTq48p6A0ZZauopndBdwFUFhYaEVFRQ0eTCKRII7lximjmGfeAeTO+wq2t87lbjq1E2U9Lo1i3o7izsXtXFTHK1cTeUMp2vj3RopmGxRteUfz9rjfSKex7z5aJakTQPhcHcpLgL1T6nUGVjRybM45t9Nr7KTwOFAchouBx1LKh0tqIakr0B14tZFjc865nV5szUeSZgFFwB6SSoBrgMnAHEnnAcuB0wDMbJGkOcBioBwYa2ab4orNOedcerElBTP7eQ2TBtdQfxIwKa54nNtWl85YyNvL53uHeG6H5k80O+ecS/Kk4JxzLsmTgnPOuSRPCs4555I8KTjnnEvypOCccy4pV7q5cM7tROrqaqWsR3m9u2M5uo6uM1xm/EzBOedckp8pOJehfx/Sja/yB9J+1fxsh+JcbDwpbAe6jH+izjqX9i5nVB31pjbPjd5Rt1fdftiKsh4H0FKvZzsU52LjzUfOOeeSPCk455xL8uYj5zJ0+1NL+eCh39K99Xr+Y0i3bIfjXCw8KTiXoQ8/K+Xd5f+kyT5tsh2Kc7Hx5iPnnHNJfqbgnHNba+YZW4bzhibfg94oRjxQd52t4GcKzjnnkjwpOOecS8q55iNJxwC3AE2BqWY2OcshNbzUU84MZPLQWZlGMLX5zK2NyDnngBw7U5DUFPg9cCzQE/i5pJ7Zjco553YeuXamcCiw1Mw+ApA0GxgGLI5lbTUdsTf2BSPnnMsRMrNsx5Ak6WfAMWZ2fhg/CzjMzC5MqTMaGB1GDwDejyGUPYAvYlhunDzmxuExNw6POV77mlmHdBNy7UxBacoqZS0zuwu4K9YgpNfMrDDOdTQ0j7lxeMyNw2POnpy6pgCUAHunjHcGVmQpFuec2+nkWlJYAHSX1FXSLsBw4PEsx+ScczuNnGo+MrNySRcCfye6JfWPZrYoC6HE2jwVE4+5cXjMjcNjzpKcutDsnHMuu3Kt+cg551wWeVJwzjmX5EkhhaSLJL0vaZGk/04pv0LS0jBtaDZjTEfSZZJM0h4pZTkZs6QbJb0n6W1Jj0hqmzItJ2OGqPuVENdSSeOzHU86kvaW9KykJeE3/MtQ3l7SXEkfhM922Y61KklNJb0p6a9hfHuIua2kB8PveYmkw7eHuOviSSGQNIjo6ek+ZnYQMCWU9yS6C+og4Bjg9tAdR06QtDfwr8DylLJcjnku0MvM+gD/B1wBuR3zdtT9SjlwqZn1AAYAY0Oc44F5ZtYdmBfGc80vgSUp49tDzLcAT5rZgUBfovi3h7hr5Ulhi38HJpvZtwBmtjqUDwNmm9m3ZvYxsJSoO45ccRNwOZUf8svZmM3sKTMrD6MvEz2LAjkcMyndr5jZd0BF9ys5xcxWmtkbYXgd0U5qL6JYp4dq04GTshJgDSR1Bo4HpqYU53rMuwNHAfcAmNl3ZraWHI87E54UttgfOFLSK5LmS+ofyvcCPk2pVxLKsk7SicA/zeytKpNyNuYqzgX+Nwzncsy5HFtakroA/YBXgHwzWwlR4gA6ZjG0dG4mOrDZnFKW6zHvB3wO3BuavaZK2o3cj7tOOfWcQtwkPQ38MM2kq4i2RTui0+7+wBxJ+5FB1xtxqiPmK4Eh6WZLU5YTMZvZY6HOVUTNHfdXzJamfq7cL53LsVUjqRXwEHCxmX0jpQs/N0g6AVhtZq9LKspyOPXRDDgYuMjMXpF0C9thU1E6O1VSMLOja5om6d+Bhy16cONVSZuJOrjKatcbNcUsqTfQFXgr/KfvDLwh6VByNOYKkoqBE4DBtuVBmVzu4iSXY6tEUnOihHC/mT0cildJ6mRmKyV1AlbXvIRG9xPgREnHAXnA7pL+RG7HDNFvosTMXgnjDxIlhVyPu07efLTFo8C/AEjaH9iFqMfDx4HhklpI6gp0B17NVpAVzOwdM+toZl3MrAvRj/RgM/uMHI0Zki9RGgecaGYbUiblbMxsJ92vKDo6uAdYYma/S5n0OFAchouBxxo7tpqY2RVm1jn8hocDz5jZmeRwzADh/9mnkg4IRYOJuvjP6bgzsVOdKdThj8AfJb0LfAcUh6PYRZLmEP3By4GxZrYpi3HWycxyOebbgBbA3HCG87KZjcnlmHOo+5W6/AQ4C3hH0sJQdiUwmag59Dyiu9ROy0549bI9xHwRcH84UPgIOIfoQDvX466Vd3PhnHMuyZuPnHPOJXlScM45l+RJwTnnXJInBeecc0meFJxzziV5UnAZkVSaMnxc6AVyn1rqL6votTV13gzW00VSmaSFkhZLulNSvX6nkgol3RqGiyT9OGXaGEln12d5NayjiaRbJb0r6R1JC8LzFUj6m1J6f21Mkn4QekotlXRbLfWaSbou/B0Xhn9XNWAcv5FU60OMLjf5cwquXiQNBv4HGGJmy+uqv5U+NLMCSc2AZ4g6FXu49lm2MLPXgNfCaBFQCrwYpt3ZQDGeAexJ1Kvu5tCp2/qwjuMaaB1bYyPw/4Be4V9NriXqiqS3mW2U1Bq4tCECkNTUzK5uiGW5xudnCi5jko4E7gaON7MPQ9mZkl4NR5p/qK27a0n3SRqWMn5/6NQvrdCb6otAN0n7Spqn6D0M8yrOUiSdFo7W35L0XCgrkvTX0CncGOA/Q3xHSpoo6bJQr0DSy9rybod2oTwh6Ybwvf4vfO+qOgErzWxziLXEzNaE+ZdJ2iOclVQchX8s6dkwfYiklyS9IenPivoqQtLkcHb0tqQpdfwtTpb0tCKdQpw/NLP1ZvYCUXKoad5dgQuI+u3ZGOJfZ2YTU+qk/btKukPSa4re1/DrlPrLJF0t6QXgNEnTJP0sZdqvw/d9R9KBobyDoncOvBHW8YlS3gnissOTgstUC6JH9k8ys/cAJPUgOmL+iZkVAJuAkbUsYyrRU59IagP8GPhbTZXDzmsw8A7Rk9AzwnsY7gduDdWuBoaaWV+gUoIxs2XAncBNZlZgZs9XWcUMYFxY5jvANSnTmpnZocDFVcorzAF+Gnaav5XUr2oFM7szbJf+RN2Q/C7s9CYAR5vZwURnNJdIag+cDBwU4rk2bIMTJf0mzbIfAT4DxhIl6mtC1wuZ6AYsD91rV1PH3/UqMysE+gADJfVJmXWjmR1hZrPTLPaL8H3vAC4LZdcQdWtxMPAIUGNzpGs8nhRcpr4nOmo/L6VsMHAIsEBRtwqDiboUTsvM5hMd9XcEfg48lPJuhVQ/Csv7B/CEmf0vcDgwM0y/DzgiDP8DmCbpAqIuKDISklLbEBNEfd8flVKlornqdaBLmu9SAhxA9JKgzcC80LSWzi1EO7+/EPXC2xP4R/iOxcC+wDdER/dTJZ0CbAjrebyWppiLwvq/NbNZdX3nmkg6JyS3TxW9tKm2v+vpkt4A3iR6IVLqy4YeqGU16bbnEUTvpsDMngTWbO13cA3Hrym4TG0GTgeelnSlmV1H1KX0dDO7oh7LuY/oqHM40fsU0vkwHKHWxgDMbIykw4he0rJQUl3zZerb8LmJGv6fhBcy/S/wv5JWEV37mJdaR9Ioop3+hRVFwFwz+3nV5Snq4XYw0ba5kNBBYy32Ivq75EtqUtGUlYGlwD6SWodmo3uJ3gvwLlFiTft3VXQh/TKgv5mtkTSNqGfTCutrWWe67Zm7fXrvxPxMwWUs9Gp6AjBSUYdf84CfhSP/ivfq7lvHYqYRNclQz07lXiTaWUKUVF4I6/yRmb0Sjqa/oHIX1wDrgNZpvsvXwJqU6wVnAfOr1quJpIMl7RmGmxA1p3xSpc4hRDvRM1N22C8DP5HULdTZVdL+4bpCGzP7G9H2Kahj/c2Ae4ERRG9YuyTT2MPf8R7gNkl5YXlNiXoGhpr/rrsT7fi/lpRP9HrSbfEC0YEGkoYQvc/EZZmfKbh6MbOvFHV//RzRzmsC8FTYMX5P1Mb9SS3zr5K0hKir8vr4BVEvtr8ieuPVOaH8RkndiY465wFvAQNT5vsL8KCiC9wXVVlmMXBnuHZR0ctlpjoCd0tqEcZfJbrukepCoD3wrKIeYV8zs/PD2cOslHknECWvx8JOWsB/QvLteoVpmpCuBJ43s+dDE88CSU+Y2RJJy4h24LtIOonoTrHFVea/Cvgv4F1J64Ayoia0FWb2naRqf1cze1nSm8CisL3+UY/tlc6vw3Y4gyghrwzbwWWR95LqGlXYAb9D9O6Hr7Mdj8uekBQ3ha7JDwfuyKDZ0MXMzxRco1H0MNMfgd95QnBEdxvNCWcj3xHdJuuyzM8UnHPOJfmFZuecc0meFJxzziV5UnDOOZfkScE551ySJwXnnHNJ/x9Rt4K7neSSYQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Max level: 45.55 \t 72.28\n" + ] + } + ], + "source": [ + "# Compute position sizes\n", + "b = kelly(p=data['prob_regime'], win=exp_gain, loss=exp_loss)\n", + "c = kelly(p=data['probs_isotonic'], win=exp_gain, loss=exp_loss)\n", + "\n", + "b.hist()\n", + "plt.title('Kelly Position Sizes: Train-Set')\n", + "plt.xlabel('Kelly Position Sizes: x1 Gearing')\n", + "plt.ylabel('Freq')\n", + "plt.vlines(x=0.0, ymin=0, ymax=700, colors='Black', linestyles='--', linewidth=2.5)\n", + "\n", + "c.hist(alpha=0.7)\n", + "plt.legend(['No Position', 'Logistic', 'Isotonic'])\n", + "\n", + "plt.show()\n", + "\n", + "print('Max level:', np.round(b.max(), 2), '\\t', np.round(c.max(), 2))" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "85574a00-0057-46b2-bdb0-a4d084236a9c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "data['cat_iso'], _, = pd.qcut(data['probs_isotonic'], q=10, retbins=True)\n", + "\n", + "# Compute probability per decile\n", + "acc = data.groupby(['cat_iso', 'target']).count()['probs_isotonic'].unstack()\n", + "accuracy_iso = acc[1] / acc.sum(axis=1)\n", + "\n", + "# Plot probability of true, per decile\n", + "accuracy_iso.plot.bar()\n", + "plt.title('Frequentist Probability per Decile')\n", + "plt.xlabel('Decile: Model Output')\n", + "plt.ylabel('Probability (Frequentist)')\n", + "plt.hlines(y=0.5, xmin=-1, xmax=accuracy_iso.shape[0], colors='Black', linestyles='--', linewidth=2)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "41d40557-42df-44b4-a277-f7250b2ac76f", + "metadata": {}, + "outputs": [], + "source": [ + "exp_wins_i = data[data['target_rets']>0].groupby(['cat_iso'])['target_rets'].mean()\n", + "exp_losses_i = data[data['target_rets']<0].groupby(['cat_iso'])['target_rets'].mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "7266f39a-98cf-4491-a9c9-8c152ab44640", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "P: 0.407 Pi: 0.352 \tW: 0.011 \tL: -0.015\n", + "Size -17.59 \tScaled 0.0\n", + "------------------------------------------\n", + "\n", + "P: 0.288 Pi: 0.31 \tW: 0.01 \tL: -0.015\n", + "Size -54.51 \tScaled 0.0\n", + "------------------------------------------\n", + "\n", + "P: 0.381 Pi: 0.385 \tW: 0.012 \tL: -0.015\n", + "Size -27.16 \tScaled 0.0\n", + "------------------------------------------\n", + "\n", + "P: 0.45 Pi: 0.459 \tW: 0.011 \tL: -0.014\n", + "Size -16.33 \tScaled 0.0\n", + "------------------------------------------\n", + "\n", + "P: 0.475 Pi: 0.474 \tW: 0.012 \tL: -0.013\n", + "Size -4.1 \tScaled 0.0\n", + "------------------------------------------\n", + "\n", + "P: 0.575 Pi: 0.564 \tW: 0.013 \tL: -0.013\n", + "Size 11.03 \tScaled 1.0\n", + "------------------------------------------\n", + "\n", + "P: 0.6 Pi: 0.609 \tW: 0.014 \tL: -0.009\n", + "Size 25.34 \tScaled 1.0\n", + "------------------------------------------\n", + "\n", + "P: 0.609 Pi: 0.617 \tW: 0.013 \tL: -0.011\n", + "Size 29.62 \tScaled 1.0\n", + "------------------------------------------\n", + "\n", + "P: 0.642 Pi: 0.659 \tW: 0.014 \tL: -0.011\n", + "Size 35.63 \tScaled 1.0\n", + "------------------------------------------\n", + "\n", + "P: 0.753 Pi: 0.744 \tW: 0.016 \tL: -0.011\n", + "Size 52.75 \tScaled 1.0\n", + "------------------------------------------\n", + "\n" + ] + } + ], + "source": [ + "pstore, sstorei = [], []\n", + "for i in range(0, 10):\n", + " indx = i\n", + " b = kelly(accuracy[indx], exp_wins[indx], exp_losses[indx])\n", + " bi = kelly(accuracy_iso[indx], exp_wins[indx], exp_losses[indx])\n", + " p = np.round(accuracy[indx], 3)\n", + " pi = np.round(accuracy_iso[indx], 3)\n", + " print('P:', p, 'Pi:', pi, '\\tW:', np.round(exp_wins_i[indx], 3), '\\tL:', np.round(exp_losses_i[indx], 3))\n", + " scaled = np.round(np.min([np.max([b, 0]), 1]), 2)\n", + " print('Size', np.round(b, 2), '\\tScaled', scaled) \n", + " print('------------------------------------------\\n')\n", + " pstore.append(p)\n", + " sstorei.append(scaled)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "0cc3904e-df41-4aa9-8f14-19d104c4b714", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Plot position sizes for deciles\n", + "plt.bar([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], sstorei)\n", + "plt.title('Position Size to Probability')\n", + "plt.ylabel('Position Size')\n", + "plt.xlabel('Decile')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "251d1f35-d538-4e4f-828c-ce294d30655c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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uOEGAA488EDuu+8+ampqeOaZZzjzzDO33NP6scce449//CNDhgxhyZIlADz99NNMmDCBa6+9loaGhjbfRyUwkEmSVCWWLFnCnDlz2rXN6tWr29xmZzcfTylt19baNwxHjRrFc889R21tLb/85S85/fTTeeaZZ1rd53777ce+++7LrFmzGDZsGHvvvfeWdW+++Saf//znaW5upkePHvzpT3/asu7YY4/d6rpfL730Eqeddhq33XZbm+GvkpQtkEXE24HZRU1vBS4Brs/a64ElwEdTSq9m21wMnAtsBL6QUrqnXPVJklRt6uvrGTNmzA77bDtS1L9//za3qa+v3+G+Bg0axPPPP79ledmyZRx00EHb9dtnn322PD/llFM477zzePnllznggANa3e8ZZ5zB+eefv91o37/9279RV1fHvHnz2LRpEzU1NVvW9enTZ6u+/fr1Y/DgwfzmN7/p3oEspfQ00AAQET2AvwA/A6YCD6SUpkXE1Gz5oog4ApgAHAkcBNwfEW9LKXXNs/MkSepkO5tibE1DQwNNTU279HrHHHMMzzzzDM8++ywHH3wws2bNYubMmdv1W7FiBXV1dUQEjz32GJs2bWL//fdvc78f/OAHeeGFFxg/fjzLly/f0r5mzRoGDRrEHnvswXXXXbfDE/j33HNPbr/9dsaPH09tbS0TJ07cpffYWTpryvJEYHFK6bmIOA1ozNqvA5qAi4DTgFkppdeBZyNiEXAs8LtOqlGSJLVDz549+e53v8v48ePZuHEjn/zkJ7eMRv3gBz8A4LOf/Sy33norV111FT179qR3797MmjVrhxdP7du3LxdddNF27eeddx7/+I//yH/+538yduzY7UbFttWnTx/uuusu3ve+99GnTx9OO+203Xi35RWtzf92+ItE/AT4fUrpuxGxOqXUv2jdqymlfSPiu8AjKaUbs/YfA79KKd26zb4mA5MB6urq3jlr1qyy169d19LSQm1tbd5lqEy60/G9++67WbFiBQMGDOCkk07Ku5xO0Z2Ob1fVr18/hg4dukvbbty4kR49enRwRdps0aJFrFmzZqu2sWPHzk0pjW6tf9lHyCJiT+BU4OKddW2lbbu0mFK6GrgaYPTo0WlnJxwqX01NTTs9KVRdV3c6vpdeeilz5sxhzJgxbV78stp0p+PbVS1cuHCXbxDuzcXLq6amhpEjR5bcvzOuQ3YyhdGxldnyyogYCJA9vpi1LwMGF203CFiOJElSleuMQHYmcHPR8p3AOdnzc4A7itonRMReETEEOBx4rBPqkyRJylVZpywjYm/gfcBnipqnAbdExLnAUuAjACmlBRFxC/AUsAE4329YSpKk7qCsgSyl9Ddg/23aVlH41mVr/a8ArihnTZK0KzZfu6nSr/YtqWvySv2SVILiW81IUkczkElSdzbzjLbX1YyHmVd1Xi3bmjh75320lfqpv+jQ/S2Z9v6d9okIPvaxj2253+SGDRsYOHAgxx13HHfddVfJr1VfX88TTzzR5tX7d9RnzZo1XHDBBfzmN78B4F3vehf/8R//Qb9+/Xb4mtOnT2fy5Mlb3Z6pPZqbm1m+fDmnnHLKLm1frDNO6pckSVWqT58+/PGPf2TdunUA3HfffRx88MGdWsO5557LW9/6VhYvXszixYsZMmQIn/rUp3a63fTp0/nb3/62y6/b3NzML3/5y13evpiBTJJK0NzcTFNTE83NzXmXIlWck08+mV/8ojA6d/PNN3PmmWduWffKK69w+umnM3z4cP7u7/6O+fPnA7Bq1SrGjRvHyJEj+cxnPrPVjcpvvPFGjj32WBoaGvjMZz6zw1skLVq0iLlz5/Iv//IvW9ouueQSnnjiCRYvXkxTUxMf+MAHtqz7/Oc/z4wZM/j3f/93li9fztixYxk7diwAtbW1XHjhhYwaNYoTTzyRl156CSjcZP2JJ54A4OWXX6a+vp433niDSy65hNmzZ9PQ0MDs2bs3omsgk6QSTJkyhbFjxzJlypS8S5EqzoQJE5g1axbr169n/vz5HHfccVvWffWrX2XkyJHMnz+fK6+8krPPPhuAyy67jHe/+908+eSTnHrqqSxduhQoXOx29uzZ/OY3v6G5uZkePXpw0003tfnaTz31FA0NDVvddaBHjx40NDSwYMGCNrf7whe+wEEHHcSDDz7Igw8+CMDatWsZNWoUv//97xkzZgyXXXZZm9vvueeeXH755Zxxxhk0Nzdzxhk7mP4vgeeQSZKk3TJ8+HCWLFnCzTffvN35VA8//DC33XYbAO95z3tYtWoVa9as4aGHHuKnP/0pAO9///vZd999AXjggQeYO3cuxxxzDADr1q3jwAMPbPO1U0qt3hezrfYd2WOPPbYEq4997GN86EMfatf2u8NAJkmSdtupp57Kl770JZqamli1atWW9tbumb05KLUVpM455xy+/vWvl/S6Rx55JE8++SSbNm1ijz0KE3+bNm1i3rx5DBs2jBUrVrBp06Yt/devX1/ye9pcX8+ePbfsoz3bt4dTlpIkabd98pOf5JJLLuHoo4/eqv2EE07YMuXY1NTEAQccwD777LNV+69+9SteffVVAE488URuvfVWXnyxcGfFV155heeee67N1x06dCgjR47ka1/72pa2r33ta4waNYqhQ4dy6KGH8tRTT/H666+zZs0aHnjggS39+vbty2uvvbZledOmTdx6660AzJw5k3e/+91A4dudc+fOBdiyvrXtd4cjZJIkVYlSLlOxWUffXHzQoEF88Ytf3K790ksv5ROf+ATDhw9n77335rrrrgMK55adeeaZjBo1ijFjxnDIIYcAcMQRR/C1r32NcePGsWnTJnr16sX3vvc9Dj300DZf+8c//jEXXHABQ4cOJaXE3//93/PjH/8YgMGDB/PRj36U4cOHc/jhh291w+/Jkydz8sknM3DgQB588EH69OnDggULeOc730m/fv22nKj/pS99iY9+9KPccMMNvOc979my/dixY5k2bRoNDQ1cfPHFu3UeWbQ2lNhVjB49Om3+1oMqU1NTE42NjXmXoTLpTse3sbGROXPmMGbMGJqamvIup+Ps4DpkTTXjaVx/TycWsw2vQ7ZTCxcuZNiwYbu0bUcHsmpQW1tLS0tLh+yrtWMTEXNTSqNb6++UpSRJUs4MZJIkSdBho2O7wkAmSZKUM0/ql6QSVNV5Y5IqjiNkkiRJOTOQSZIk5cwpS0mSqsUOLmOyrd4bNkDPncSAEi49squXirjyyiv58pe/3O7tNrvkkks44YQTeO9737vL+6gkjpBJUgkaGxuJiG5z3TWp3K688srd2v7yyy+vmjAGBjJJktQBXnjhBU444QQaGho46qij+PWvfw3AzTffzNFHH81RRx3FRRddBMDUqVNZt24dDQ0NnHXWWQB8+9vf5qijjuKoo45i+vTpACxZsoRhw4bx6U9/miOPPJJx48axbt06ACZNmrTlNkaPP/44//AP/8CIESM49thjO+x2Rp3JQCZJknbbzJkzGT9+PM3NzcybN4+GhgaWL1/ORRddxH/913/R3NzM448/zu233860adPo3bs3zc3N3HTTTcydO5drr72WRx99lEceeYQf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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Show hist of model output\n", + "plt.figure(figsize=(10, 7))\n", + "data['prob_regime'].hist(bins=13)\n", + "data['probs_isotonic'].hist(alpha=0.7, bins=13)\n", + "plt.title('Meta-Model Output: Train-Set')\n", + "plt.xlabel('Model Output')\n", + "plt.ylabel('Freq')\n", + "plt.vlines(x=0.5, ymin=0, ymax=700, colors='Black', linestyles='--', linewidth=2.5)\n", + "plt.legend(['0.5 Mark', 'Model Output', 'Isotonic'])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "bb751984-4230-4fee-a0a6-08ebed66ab63", + "metadata": { + "tags": [] + }, + "source": [ + "---\n", + "# Position Sizing" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0867585b-5c6a-4bdf-b5e3-2bbe707d7375", + "metadata": {}, + "outputs": [], + "source": [ + "data_train_p = data_train_set[data_train_set['pmodel'] == 1]\n", + "data_test_p = data_test_set[data_test_set['pmodel'] == 1]" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "36a78315-b815-4c24-94dc-bf5e46d01fde", + "metadata": {}, + "outputs": [], + "source": [ + "prob = data['prob_regime']\n", + "prob_iso = data['probs_isotonic']\n", + "\n", + "target_return_train = data['target_rets']" + ] + }, + { + "cell_type": "markdown", + "id": "9fb32b65-ec0e-4593-9ce4-9367fd1da4d8", + "metadata": { + "tags": [] + }, + "source": [ + "## Meta-Labeling on Probs" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "2b53d891-b81a-4cdc-9bc5-b1b487bda15a", + "metadata": {}, + "outputs": [], + "source": [ + "# Daily data update with position sizes\n", + "data_train['meta_bet_size'] = 0\n", + "data_train['meta_bet_size_iso'] = 0\n", + "data_train.loc[data.index, 'meta_bet_size'] = prob\n", + "data_train.loc[data.index, 'meta_bet_size_iso'] = prob_iso" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "d24a8dac-c05b-4880-a886-d3463cb4570c", + "metadata": {}, + "outputs": [], + "source": [ + "# Backtest\n", + "data_train['meta_rets'] = (data_train['meta_bet_size'] * data_train['target_rets']).shift(1)\n", + "data_train['meta_iso_rets'] = (data_train['meta_bet_size_iso'] * data_train['target_rets']).shift(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "6358b141-938f-4527-9804-f0bbef762acf", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "(data_train['meta_rets']+1).cumprod().plot()\n", + "(data_train['meta_iso_rets']+1).cumprod().plot()\n", + "plt.legend(['meta', 'meta_iso'])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "1d1b6483-d742-4824-b935-c97fa98b711d", + "metadata": { + "tags": [] + }, + "source": [ + "## Linear Dependency Models" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "id": "9565deac-51a6-4aa8-8b9d-d429925bea65", + "metadata": {}, + "outputs": [], + "source": [ + "# First part - Linear dependency models\n", + "# A1 - Linear Scaling\n", + "\n", + "def linear_scaling(prob_train, prob_test):\n", + " bet_sizes = (prob_test - prob_train.min()) / (prob_train.max() - prob_train.min())\n", + " return bet_sizes" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "id": "8fbfd5e2-2d2b-45a1-a659-f946258d9067", + "metadata": {}, + "outputs": [], + "source": [ + "# Linear betsizes\n", + "bet_sizes_meta = linear_scaling(prob, prob)\n", + "bet_sizes_iso = linear_scaling(prob_iso, prob_iso)\n", + "\n", + "# daily data update with position sizes\n", + "data_train['lin_bet_size_iso'] = 0\n", + "data_train['lin_bet_size_meta'] = 0\n", + "data_train.loc[data.index, 'lin_bet_size_iso'] = bet_sizes_iso\n", + "data_train.loc[data.index, 'lin_bet_size_meta'] = bet_sizes_meta" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "id": "8506756e-93c3-4a0b-b62f-c7defbcc5f26", + "metadata": {}, + "outputs": [], + "source": [ + "# Backtest\n", + "data_train['lin_meta_rets'] = (data_train['lin_bet_size_meta'] * data_train['target_rets']).shift(1)\n", + "data_train['lin_iso_rets'] = (data_train['lin_bet_size_iso'] * data_train['target_rets']).shift(1)\n", + "# data_train.dropna(inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "id": "e4e3af3f-5c03-4781-815c-ac9fb4f17f53", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "(data_train['lin_meta_rets']+1).cumprod().plot()\n", + "(data_train['lin_iso_rets']+1).cumprod().plot()\n", + "plt.legend(['lin_meta_rets', 'lin_iso_rets'])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "07f85432-db11-4f83-b8d1-256d5d50f992", + "metadata": {}, + "source": [ + "## ECDF" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "id": "51b1e1e0-2da7-4292-bb71-1cc4dd763a5f", + "metadata": {}, + "outputs": [], + "source": [ + "from statsmodels.distributions.empirical_distribution import ECDF" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "id": "5a1e5797-e5cc-4de2-9f33-172b13be8537", + "metadata": {}, + "outputs": [], + "source": [ + "ecdf = ECDF(prob)\n", + "ecdf_iso = ECDF(prob_iso)\n", + "\n", + "# ECDF Position Sizing\n", + "ecdf_size = prob.apply(lambda x: ecdf(x))\n", + "ecdf_size_iso = prob_iso.apply(lambda x: ecdf_iso(x))\n", + "\n", + "# Daily data update with position sizes\n", + "data_train['ecdf_size'] = 0\n", + "data_train['ecdf_size_iso'] = 0\n", + "data_train.loc[data.index, 'ecdf_size'] = ecdf_size\n", + "data_train.loc[data.index, 'ecdf_size_iso'] = ecdf_size_iso\n", + "\n", + "# Backtest\n", + "data_train['ecdf_rets'] = (data_train['ecdf_size'] * data_train['target_rets']).shift(1)\n", + "data_train['ecdf_iso_rets'] = (data_train['ecdf_size_iso'] * data_train['target_rets']).shift(1)\n", + "# data_train.dropna(inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "1fcd006a-68f7-4bdf-8989-8bfa431c9a33", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD4CAYAAAAXUaZHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAwX0lEQVR4nO3deXwV1fn48c9z96xAWMISIKwKgoBGXLAILtW6QbVasf5Ea0u1dWu1Fa1+bV36tbiUupe671j1W7GKioioFdlk37cIYSdAFpLc3OX8/pjJRvbkJvfm5nm/XnndmTPnnnluknlycmbmjBhjUEopFV8c0Q5AKaVU5GlyV0qpOKTJXSml4pAmd6WUikOa3JVSKg65oh0AQJcuXUxmZma0w1BKqTZl6dKlB4wxXWvaFhPJPTMzkyVLlkQ7DKWUalNE5PvatumwjFJKxSFN7kopFYc0uSulVByKiTH3mgQCAXJycigpKYl2KG2Oz+cjIyMDt9sd7VCUUlESs8k9JyeHlJQUMjMzEZFoh9NmGGPIzc0lJyeHfv36RTscpVSUxOywTElJCZ07d9bE3kgiQufOnfU/HqXauZhN7oAm9ibS75tSKqaTu1JKqapCYcPbi3cQCtc9Xbsm9zo4nU5GjhxZ/vXQQw8B1sneqVOnMmjQIIYNG8bo0aOZPXs2YN2QNXz48PL3fPPNN2RnZ5OQkMCoUaMYMmQIo0eP5uWXX47mR1NKtVFvLNrOH95dycvfZNdZL2ZPqMaChIQEli9fXq38nnvuYffu3axevRqv18vevXuZP39++fZ58+bRpUuX8vXs7GwGDBjAsmXLANi6dSuXXHIJ4XCYa6+9tsU/h1IqfhzxBwFYvSuvznrac2+koqIi/vnPf/LEE0/g9XoBSE9P5/LLL29wG/379+exxx7j8ccfb6kwlVJxqkuylXdmr9pTZ7020XP/8wdrWLsrP6JtDu2Zyr0XHVdnneLiYkaOHFm+fueddzJkyBD69OlDampqre8bP348TqcTr9fLwoULa6xzwgknsH79+ibFrpRqX/YVlDB/w34uy+pNstcJQHEgVOd72kRyj5aahmVWrlxZ7/uOHpapiT67VinVUNe9tIRVO/MYd0w3SkMNyx1tIrnX18NuTQMHDmT79u0UFBSQkpLS5HaWLVvGkCFDIhiZUipe7c6z7lsJG0MwFG7Qe3TMvZESExO57rrruPnmmyktLQVg9+7dvPbaaw1uIzs7m9tvv52bbrqppcJUSsWRA4V+AD5ds4dAA5N7m+i5R8vRY+7nnXceDz30EA888AB33303Q4cOxefzkZSUxH333VdnW1u2bGHUqFGUlJSQkpLCTTfdpFfKKNWG3PfBWob2TOUnJ2ZELYZ73l9D9xQvJ8oGHH1OptbJ3GlAcheRF4ALgX3GmGF2WRowE8gEsoHLjTGH7G13AtcBIeBmY8wnzfkw0RQK1XzCwuPxMG3aNKZNm1ZtW3Z2drWyzMxMiouLIx2eUqoVvfDfbQBRTe4AJx2ZxxPeJwmc/Azv1FGvIcMyLwHnHVU2FZhrjBkEzLXXEZGhwBXAcfZ7nhYRZ2ODV0qpWJVzqCiq++8lBwBw7/hvnfXqTe7GmC+Bg0cVTwDKbrF8GZhYqfwtY4zfGLMN2AyMbmjQSikV656Yuzmq+8/Fvgx71bt11mvqCdV0Y8xuAPu1m13eC9hRqV6OXVaNiEwRkSUismT//v1NDEMppVrXzCU72HEwsr33A4V+FmzJZen3h/jXkh1VtoXDhgRKuH5ALreePYjLxthXDwbrHuqN9AnVmqYjrPGiTGPMDGAGQFZWll70rZSKWQePlDJctnLAdGA3nfn169/xwU2nR6z9q59fxNrdFTdqXpbVu3y5NBTm7+6n+OHOpfCzbbA1BRbV32ZTk/teEelhjNktIj2AfXZ5DtC7Ur0MYFcT96GUUjHhhPvnkO27G4Axvv8j1740MVIqJ/aj+QNhRjq2WCtBP4QCDWqzqcMys4DJ9vJk4P1K5VeIiFdE+gGDaNDfGKWUahsuOCaFQnvyrkjpmuKtsp459UMOHbHuo/GHQnSTw9aG716BUGmD2qw3uYvIm8AC4BgRyRGR64CHgHNEZBNwjr2OMWYN8DawFvgY+I0xpu4JEGJYc6b8HT58OEOHDuXuu+/G77f+ypdN/Vu5zbIbocp88cUXXHjhha37QZVStTp6fH10wafklwTZeThylzfXNB3JrTOXA1AarHTT0hd/gf/8zlruc1qdbdY7LGOMmVTLprNqqf8g8GB97bYFzZ3yt7CwkClTpjBlypTy+dsHDBhQY5tKqdgUPirxnr11Gm5e4bFPN/Lo5SMiso+aHrwxf+N+ln5/kI6JnqMCsodlrv43XOertU2dfqCRGjPlb3JyMs8++yz//ve/OXjw6KtJ6zd//vzyHv6oUaMoKCjAGMPvf/97hg0bxvDhw5k5c2azP5NSqnZlibfIVAydzOz0DB+t2g1YPevXvv2+3icj1eWU/p2rrE/7yfEAXPrMgvL526txeWsuL9vc5Gha0+ypsGdVZNvsPhx+9FCdVZo65W9lqamp9OvXj02bNpGens6WLVvK2xwzZgxPPfVUre995JFHeOqppxgzZgyFhYX4fD7ee+89li9fzooVKzhw4AAnnXQSY8eOpUePHg2KRynVOGFjmO5+kkTxw8k3wMJn6BfcSnEgRDAU5t5Za3hz0XZSfC4mjKzxyu9qrn91KfsL/bz5y1PwuBwkea1U3KtjAm9NOYUeHXz84R1rBtqfPbeQpmS/tpHco6SpU/4erfJ4WmOGZcaMGcPvfvc7fvazn3HJJZeQkZHB119/zaRJk3A6naSnp3PGGWewePFiLr744kbHpZSqXygME53fWCveZDhhMomr/g+ArzYf4M1F24GGP5h+875CPl5jPWjj5W+y+eXY/iQHcrkgaT1PDd4AT14O/3OASaP78Oai7RSUBMAHu46ZTM9R50JCGuRuqnc/bSO519PDbk2NnfK3oKCA7OxsBg8eTF5e3Y/FOtrUqVO54IIL+OijjzjllFP47LPPdB54pVpbUaUh1X3roMtgvIF8fPi59sXF5Zv89Tw8o8zkFyouIPQHrff8Ivs2MkJboVLf8U8XD+XNRdvxYA3LhJO6wrEXWBv7nlrvfnTMvZEaM+VvYWEhv/71r5k4cSKdOnVq9L62bNnC8OHDueOOO8jKymL9+vWMHTuWmTNnEgqF2L9/P19++SWjR+sMD0q1FCk+ULESDkH3YQDc4nqvSr01DXxa3FWn9C1fnrN2LwAZpVurVvrf3njF8PzkLLxYJ1Cd7oRGxd02eu5R0tQpf8ePH48xhnA4zI9//GPuueeeJu1/+vTpzJs3D6fTydChQ/nRj36Ex+NhwYIFjBgxAhFh2rRpdO/evbkfVSlVi5Cp1Ae+4FHo0AvmT+MGNjHfnca3W62efWqCu0HtJXkr5lJckZOHMYZDjjTSwpX+Q/Dnw+bPGH/MueXJ3ePT5B4xkZryt0xmZiarV6+uc5/jxo1j3LhxADzxxBM11nn44Yd5+OGH62xHKRUZ63cfpvyZaak9rVdvChTuZcZ1WTw9bwvPzt/C43M38btzBtfbXti+qmbCyJ68v3wXh4oCOE0NV8R89SiOY86jo8e6zt3rS2xU3Doso5RSdVi4xZpdZd6wv0LZSdPMH0D+LlI9DqaO9JPtu5IM2VdHKxXKrpgcnG6ds9t5qJh8kqtWciVAziLYtYxbxvUBrCHhxtDkrpRSdTi9v3W+bFS/rhWFHXpBOAgLn4V/jAVgjGNNg55vWnZTVP8uSQAUB0Ksk/4VFc68B34511qeMY6LjrX+CDjctd+wVJOYTu56ZUjT6PdNqcgJBq0hE7e70ii220rMfHJXedFBk8JL32TX217YGJ53P8zYzy7CQ4Ci0iBFYXu8/ur3Yezt0KXS8M58ewjWFSfJ3efzkZubq4mqkYwx5Obm4vM17hdBKVWzQMA6oel2VTphOuzSavVOcmxo0F2qHQs2cZZzGUl5m/i5czbFpSEIhzjs6QH9x1mVnG4Yfpm1vOFDu8xTY3u1idkTqhkZGeTk5KAP8mg8n89HRkZ0n/OoVLxIKswGwG0qTfLn8sCf8uDxUXDQuoyxCC8N6VKdt/LWimYIcaQ0RJIpJug66mqY8x+BVf+qtM/GddhiNrm73W769esX7TCUUu3csD3W9exyaFv1jZc+D/8cD0B/2cOD/93G9WcMqLO9lb1+yulbpwNwifMrPinw040Sgq6kqhUTOsIlz8F7v7DWG3mde8wOyyilVCxYkGCdMC0fJqms1wlWDx642PkNe/P9HC6qe771oFjDK2FfJ/o79jDt47UkSzGljhquhjluYsVyQsdGxa3JXSmlahEIhdmw85C14kmuveLwsllhDc9/XUMPvxJjrCtqZMhFAPSSXBLws6fYWb2y0w2dB1nL3oZNVlhGk7tSSh1lx8EiPl69h30FfnzYPfG6hkXSrEsZM+QAT3y+ue7Gw9bNkdLNujWqM3kkUEqf7l1qrn/+NDjxWkho3BQmMTvmrpRSLSEcNtzz/momje7DsF4daqzzg2nzypd/6yolbARHXVerOKxe93XOj/hzcHLt9YCQndzplAlAovhJED9JtU1EOOBM66uRtOeulGpXDhWV8vrC7fz0HwsaVN9HKcblq7g7tSYnWSc9k3oMYmA3a/hm9c48lu84XK1quOxGJ6+VzBMpIQE/SUmNG3apjyZ3pVS7UlRq9ZxD9j00S7IPsiS79iel/dCxBGeonuel2uPxw4sXW9etAxc+8TUTn/pvlWqBUJgjJdYzlcuS+89GdSHZEUA8jZteoD6a3JVS7UqxPe+622Glv588u4CfPFtzL96Hn36OvfU36vKAO4khhQspKa3lsXjAoD/OZtMee2pgO7mfmenFYYKNvtSxPprclVLtSlFpCBdBXHVkv1Mda7jL9TrTxzfixqGsawEYULyyxjtVy8oEe1vZ1Tef/dl6dWvPXSmlmqy46AibfVfza/lXlfLKU5286XmQKa4POW/BpIY3fNwlALztvZ+b31xWXvy3ORsB2HbgCABO7DH3sqtf/PYT2rbOb8zHqJcmd6VUu/H5+r3c/KJ1Jcy14ff4ePXu8m397vyImYu3s/NwDePrtzTg2cndymd958NVFe1+vNp6XmqRPVzjEDu5O91w6o0V7884qaEfo0H0UkilVLvx8CcbSRTrhGapcXH9a99xtmMpgmFOOIs73l0FQPbRozGd+lIvTyL+LkPJ3b+nSvHGfQWUBsP4g1ZSdxEiaBy4RCB9WEXF437c5M9VE03uSql2w+NyAFZyD2Jdm/6c51EAMkveqPlN5Xef1s/b4zj8+3IBmO25g45yhFP9T/Ld9kME7EsgvQTw47aS7zE/qnhzx96N+iz10WEZpVS74XYICXZyD1DD7f62XJPCchkKt22AiU83YgcJ5f8ZDHHsoIdYl1hO+ue37C/wI4TpmxTA5bGvjKk8X4zL26jPUh9N7kqpdsPtELqIdQKzU0oi5w+veLj87Wf0KF8O4eRI6gBI6W6NjTd4B0mky2EuHtGzot0fDsYYWLAll22+q/ihfw7ehEozQP76W+srwjS5K6XajR8W/h8zPH8DwOFw8bD3+fJtNy4czydjNvLBlT0RwoSp447U2tjTEDx+cl550eWB9wHYefBItXqAdSK20snYSNExd6VUuzE67+OKLm3+TpJWv15l+zFL/wRLAYGUno3osZfpNtR6fWVCeVGXlf8ApmMObmlKyE3WrJ67iPxWRNaIyGoReVNEfCKSJiJzRGST/dq4qcyUUqoF/O9H6yilloRd+ZJEm2/du43fSVr/akWOkjySPA4K8w9XFIbrf5B2czU5uYtIL+BmIMsYMwxwAlcAU4G5xphBwFx7XSmlomb9nnz+8eXWqidRUyrGxWscVx94duN31Pvk6mUhP47SwoqpgwHycxrfdiM1d8zdBSSIiAtIBHYBE4CX7e0vAxObuQ+llGqWG9+w7hgNmUrJ/bZ1MOEpa9mbCufcV/VNdT2cozaOmlPqtx3uIlnqmXwswpo85m6M2SkijwDbgWLgU2PMpyKSbozZbdfZLSLdanq/iEwBpgD06dOnqWEopVS9nPZ0vac611bdcPwVkJAG/caCNxn6jrEeRP3sGEjq2rSdnXojLHjSWj7/EZg/jaQj+/jTaW5YAnQdAidd1/QP00BNTu72WPoEoB9wGPiXiFzV0PcbY2YAMwCysrKqz7KjlFIR0i3VS8q+xdU3OF1w7PkV6xlZ1uvkD6BXVtN2du6D1n8BgWLwJEHHPvDG5fQtWmNtv+wl6HZs09puhOYMy5wNbDPG7DfGBID3gNOAvSLSA8B+3df8MJVSqulGdyrkHe999Vcs028sNGd+dYfT+k9ApOIKmnx7vhl3I2aabIbmJPftwCkikigiApwFrANmAWXPmZoMvN+8EJVSqnkmbr67asGtq1tv5yn2jVKH7AdnuyI7b3ttmjPmvlBE3gG+A4LAMqxhlmTgbRG5DusPwGWRCFQppZrKVflJStd8FPF5XOrkdENiFziy31pvpZ57s25iMsbcC9x7VLEfqxevlFIxIc+ZRg/snnPmmNYPoOhAxXIr9dx1+gGlVNz73mXfXNSUa9cj4epZFcuNmaumGXT6AaVU3HOGSwjgwn3Fm9EJoP8ZcNtG2LfWOsnaCjS5K6XinjNUQp6zE11cnugFkZJufbUSHZZRSsU9Z8hPQCI7X3qs0+SulIp7rnAJQUfrXKUSKzS5K6Xi2ser90CghKBTe+5KKRUXDh0p5frXluI2JYQ0uSulVHwoCYYA8FFKWIdllFIqPuQXBwHwEaBUonilTBRocldKxaVCf5ALpn/O557fMcixk/TOadEOqVVpcldKxaUHP1xHGgX0d+wBoFOH1ChH1Lo0uSul4tIHK3bhkWD5usvTOnO6xApN7kqpuFToDzLesayiwLT8Q6ljiU4/oJSKS8MTcrnfvFRRcOpvohZLNGjPXSkVl/5q/laxMuiH0Klv9IKJAk3uSqm4NEB2VaxMeCp6gUSJJnelVFzymhJr4fifQnK36AYTBZrclVJxZ/7G/fixb1q66PHoBhMlmtyVUnFn8guL+C400FpppWeWxhpN7kqpuLSXjmwLt97DMWKNJnelVFxyEaZDUvu6cakyvc5dKRU3lm0/xHvf7eS3rn9xofNbSB0e7ZCiRpO7UqpNe/Xb7/mf91fjcznxuh0cLgqQ7fs/a2Ph3ugGF0Wa3JVSbdo9/14NQHEghMshVTce2ReFiGKDjrkrpeJGp0Q3KRThN26r4KevRzegKNKeu1KqzXMSwkcptxQ+w6W+r6zCzB/AkAujG1gUaXJXSrVp17o+5V7XS9U37FnZ6rHEEh2WUUq1aZUTe65Jqdhw2cutH0wM0eSulIobaT0HVqz0Gxu9QGJAs5K7iHQUkXdEZL2IrBORU0UkTUTmiMgm+7VTpIJVSqm6yO5lMOhc+FMeOJzRDieqmttz/zvwsTHmWGAEsA6YCsw1xgwC5trrSinVIg7SoWqBr0PNFduZJid3EUkFxgLPAxhjSo0xh4EJQNlg18vAxOaFqJRSFUJhwztLcwiFDQD7JY21KafBzfYj9U67MYrRxY7m9Nz7A/uBF0VkmYg8JyJJQLoxZjeA/VrjRMoiMkVElojIkv379zcjDKVUe/Lqgmxu/9cK3ly0HQCnCWEcLkjrbw3H9BgR5QhjQ3OSuws4AXjGGDMKOEIjhmCMMTOMMVnGmKyuXbs2IwylVHuyJ98PwMqcwwA4CWLEHcWIYlNzknsOkGOMWWivv4OV7PeKSA8A+7X93v+rlIq4LsnWQzjeXpKDMQaXCWKcnihHFXuanNyNMXuAHSJyjF10FrAWmAVMtssmA+83K0KllKoklSNMdz9JKkf4+UuLcRPAOLXnfrTm3qF6E/C6iHiArcC1WH8w3haR64DtwGXN3IdSSpUbuPlFTnB+w+ZwL57c8GPc3iDG6Y12WDGnWcndGLMcyKph01nNaVcppWoTCgYA+G3frTy5FdwEyS+NclAxSO9QVUq1Kftd3QFw7lrK1PE98RBkV0EoylHFHp04TCnVpoQCFd306xeMA4EJWf2iF1CM0p67UqpNCZUUWAu9Tykv83l9UYomdmlyV0q1GTsOFrFz335KjROu+wQ69rU2LG3fM0DWRJO7UqrN2HW4mET8FGH31Cc+bb2edlP0gopROuaulGozfG4nyRQTcidZBZmnW1MOqGq0566UajO2H8jnMteXpDoD0Q4l5mlyV0q1GQvm/QcAt/9QlCOJfZrclVIxKxAK89icjeSXWD311fuDAITLhmVUrTS5K6Vi1gcrdvH43E1Mn7MJgFSXldy57JUoRtU2aHJXSsWs4oB152l27hEAfuJbDIBDTNRiais0uSulYpYgAHy+3po5fGLgI2tD+nHRCqnN0OSulIpZacXbyPZdyQ8cK/nPyl0VG7yp0QuqjdDr3JVSMavH4aUA/MixkBvfOJ5BngyKEjMY5U2OcmSxT3vuSqmYFbIne7zSNQ+AJCnhEClRjKjt0OSulIpZX27OLV92ECZDDjAgo3sUI2o7NLkrpWJSXlGAzXlSvr7VdxUAfRP1yRwNocldKRWTfjpjAS5qeAhH/q7qZaoaTe5KqZiU4HEyzLHNWvn5pxUbep8cnYDaGL1aRikVk4Z2T+Fne+daK12PgRsWwPLX4Yw7ohtYG6HJXSkVk876/m8kiD2+ntDR+jr3wWiG1KbosIxSKuZs3FvA0MPzoh1Gm6bJXSkVUwKhMD/825d8EsqyCn7yQnQDaqM0uSulYsr5f/8KgDQp4EhyXxh2aZQjaps0uSulou7gkVLCYWumx037CvFSykXOb3GndIlyZG2XnlBVSrUqYwxTXl1Kr44JnD6wC1sPFPKXj9bjdgrzfz8eMGzwXQOA5/C2qMbalmlyV0q1qvOmf8WGvQUAvPRNdnl5IGQ47aHPecL9REXlc+5r5ejihyZ3pVSLMsbw97mbmLd+Hyty8mqsM1Sy2WQyCODiIue3FRt6j26lKONPs5O7iDiBJcBOY8yFIpIGzAQygWzgcmOMPs1WqXbGGMNfPlrHP7+qOrSSTBGrfb8A4MvQcIY7ttFJCgE4seSZioo/nmHdvKSaJBInVG8B1lVanwrMNcYMAuba60qpdmRffgnH3ftJtcTuIlie2AHGOleVJ3aApb4bKiqP+GmLxxnPmpXcRSQDuAB4rlLxBOBle/llYGJz9qGUantufGMZRaUhnIQ427GUbN+VZPuuZLPv6oY1cNpNLRtgO9DcYZnpwB+gyuz56caY3QDGmN0i0q2mN4rIFGAKQJ8+fZoZhlIqlizKzuVcxxL+4flbzRXO/V/olAlvTap5+9g/tFhs7UWTk7uIXAjsM8YsFZFxjX2/MWYGMAMgKytLH2WuVBw5w7Gy5sR+5t3Q/0zIONFa/1OlE6x7VsGzp1vLnqSWDzLONafnPga4WETOB3xAqoi8BuwVkR52r70HsC8SgSqlYs/bi3fwh3dXsuiPZ9EtxVde/rLnr9aC0wOjp4A3xeqNO+oYCe4+HCY+C9lfg8PZwpHHvyaPuRtj7jTGZBhjMoErgM+NMVcBs4DJdrXJwPvNjlIpFZOe/9o6YTr6wbl8uzW3eoXbNlgzOY6bWndiLzNyEkx8KsJRtk8tMf3AQ8A5IrIJOMdeV0rFmZe/yaZ030Zecz+IEOaKGRXXp6+lH98njYDEtChG2L5F5CYmY8wXwBf2ci5wViTaVUrFrntnreFjz3SOdezgLXmAX5beRubUDwGY5ykiO9CHvlGOsT3TicOUUk0yRL7nWMcOAE52rGel75fl25KlmB1FegN8NOl3XynVJLO9d1Yry/ZdyZ60k+h6MJ8L+0kUolJlNLkrpRosryjAiPs+xeNysLEse/xxD+xbB/8cD0D3g4sB6LjjsyhFqUCHZZRSjXDV8wsBKA2GKwrdCdDrBOua9VtXwcBzrPLz9FqKaNKeu1KqQUqDYdbtzOV+1ys4CQHgH3kN3sqVOvaBq96JSnyqKk3uSqkGOXf6lzzjns45zu/Ky7xeXx3vUNGkwzJKqQbZdqCwSmLH4dYJvmKY9tyVUvUqDYb5p/uxioI/1fzQDRU7tOeulKpXoT/IOc6l1krXY6MbjGoQTe5KqXoVFBVXrPxmYfQCUQ2myV0pVa+ifOtJmQfST49yJKqhNLkrper1jznLACgaPDG6gagG0+SulCpXEggRDld/ds6m73cB0LtHemuHpJpIr5ZRSgFw85vLmLXCSuLPXZ3F2UMrEvlU1xsASGrPqMSmGk977kop7v/PWmat2MmJsoEUivjFK0u4452V5dt/4FxtLfQ6MUoRqsbSnrtS7dysFbt4/uttLPb+mq5iXb/+bugH3LbkBvp1TeLU/p0ZUVZZdKbHtkKTu1Lt3C1vLiXbd1WVskudXzFQdjJh9gMAzPd0w9/9RAZHI0DVJDoso1Q79N32Q2RO/ZDvth/iQdcLFRt6n1y+OMKxlQdcz3OeYxEd5AiupE5RiFQ1lfbclYpz327NJT3VR78uSeVlN7y6hN6yl0ue/oZs3+dW4U9fhyEXQjgMu76D587iKtdcrmIuAM7eg6IRvmoi7bkrFYeWbT/Eb17/jlDYcMWMbxn/yBdVtp9ZNJuvvL8l23dlReGQC61XhwMysuCqd6u8JyW9XwtHrSJJe+5KxaGrn/6M4x1bGHDXbpZ4r2d+eASZUyu2Z/uer/qGEVdSzcCz4c4c2LMKVr8L/ce1aMwqsjS5KxVn3li4nTc8DzDckV1edqnzK2aHRnPAdKDaLUpdj4UL/1ZzY94U6Hua9aXaFE3uSsWZV/79IR97s6uVP+d5tHplnbo3bumYu1Jx4pM1e7jg8a/42Ftp/KXzQBj7B/jlvOpvuOaj1gtOtTrtuSsVB8Jhw82vLuAMxwrw2IWTZsIx51VU0l56u6LJXak4kFvoZ4PvmvL14Bl34aqc2FW7o8MySrVxR/xBXv1iRUXBiEm4sq6JWjwqNmjPXak27vaZS0lY/x54YOsZj9N//ORoh6RigCZ3pdq4Ezf+jV94ZgPQu++AKEejYkWTh2VEpLeIzBORdSKyRkRuscvTRGSOiGyyX3VCCqVaSDhs+IVrdvm6u+fwKEajYklzeu5B4DZjzHcikgIsFZE5wDXAXGPMQyIyFZgK3NH8UJVSZXYcLOIH0+YBhmyfXXjvYZ2SV5VrcnI3xuwGdtvLBSKyDugFTADG2dVeBr5Ak7tSEWGMIRg2PPrOF1Xmhdlx6v301sSuKonImLuIZAKjgIVAup34McbsFpFutbxnCjAFoE+fPpEIQ6m4tWlvAR+u2s2y7AN8u3kvz7kfAWfF9t7H6fQAqqpmJ3cRSQbeBW41xuRLA3sPxpgZwAyArKys6k/kVUqVu2X6K1zr/JirnMvp4suv2HBHNjhc1hwwSlXSrOQuIm6sxP66MeY9u3iviPSwe+09gH3NDVKp9ujRTzfw+sLtXHFSbz7y3lW9wpn3QIJer6Bq1uTkLlYX/XlgnTHmsUqbZgGTgYfs1/ebFaFS7VBJIMRpX13Dbc61vPb1WVWP1Kveg4FnRS021TY0p+c+Bvh/wCoRWW6X3YWV1N8WkeuA7cBlzYpQqXZm875CLnnsQ1b61gJwlct6ElLhqF+RfPFf9YoY1SDNuVrma6C23zLtVijVSLsOF9Ml2cu6JZ+z0jelYoPDBaN/RfLY2zWxqwbTO1SVigF780v447RHWRPO5AL3Yi6yr4QJ/eprnD30xiTVeJrclYqytxZtZ8GSpbzoebjqhivf1sSumkyTu1JRtGz7IQpn/YG/OD+vMshpxIEMPjd6gak2T5O7UlE078M3+V2luWH4/RZI6lLrySylGkqTu1JREgyFmbj779b0fb9eCGn9weWp931KNYQ+rEOpKPnLW3Po79hjrXQ7VhO7iihN7kpFyY+2PAhASX8dW1eRp8ldqVay83AxYD3vdGXOYfqEvifPk45v0stRjkzFIx1zV6qFhcOGwXfN4gzHCj4Pj+I+10uMdGwm3XGY1Zm/oYM7IdohqjikyV2pCJu9ajcv/jebn5+eyfWvLaUL+Wz23VBj3X7DTm7l6FR7ocldqQh4f/lO7n3rKwK4+B/Xq7zt+oIX3jqPbN/HNb/hgsfAk0TSsItaN1DVbmhyV6oZ1u3OZ+biHWQt/i3LfQurbPu566jE/se94PLq/DCqVWhyV+3al+tyePfVp+h68hUMyehMZpckTujTkcoPnVm9M4/eaYkEQ2E6J3vLywtKArzz5FSmuGbT03mwasM3fQf5O8GVABlZEA6BUw831Xr0t021G5v3FXL3v1ch2V9ximMdBaN/y8DF9/J3z+ew7GnWL+3NZtOL27xn4uvUE09qVxwd+5C+8AF6Si5hHHwaymLo2Vfzyn+38IOSz3nE/ToAxulBbl4GHTIgHAaHAzoPqNi5JnbVysSY6D/hLisryyxZsiTaYag49vn6vWx87Xdc7/pPjduLe4/FOFwkfv95vW1lh9PJdOwFIOjw4fr9en0ikooKEVlqjMmqaZt2J1Tc2rS3gOe/3kbu7mwe2f8rznQVlW8zKT0pTj+B4IGtJJz/IAmDz7Q2FO6HXcsgHIB9awl9+RjOYBEMPBuGTsAUHaTHuo9hp5XcXb+ap4ldxSTtuau489nKbFbMvJ+rXXPoKnnl5Uc6DyPp8hmQflzjGgwFwOmuWmaMnhhVUac9d9W+fPR7bnN/WqXo0DnT6TTm2qa1d3RiB03sKuZpcldxwxjDB4s3cnGJndgveQ76ngodMtCBE9XeaHJXbcairbl8uHQTwzJ7snDzHnqmpeIwpfi+/ivmlBvx5+3l1k2TATh8/rN0PF6fza7aL03uqk1466vVjP/sAv4shzm0OpnLpLBiowtY8h/8xg0Ce4f/ivTRk6IWq1KxQJO7ijmF/iC7DhfTNdnL0+99SpfCTUzcM510OUxJUi+cmeNhzWsAlLg74gsc5lDX0YjLQ/DUG0g//sIofwKlok+Tu2pxJYEQj709h84cRJxevKld2ZlXSnpCkIx+QzlzWAarduQSDEGiz8PXz/+e68Mz2Wk680fJBSAoLgpPv5vkM2/D53DAZU8B4LP3oWPqSlWlyV1FTM7+Qyz8eg4el5OcXTtJDBVC/i4ml7zKXbW8p2BZAv99ZzDHOrbjJkgxXq6XAwD0shN7ePzduEZOIrlDRit9EqXaPk3uKiLySwKseOV2Li14p/ZKP3kR43QTLNhHyfq5uNL6UpizjuPztpJWfIi8hAw8rlR2dzmDHlc+DW6rX65PlFGq8TS5q3qt2fI9eXmHcHsSSO3UlcQEH163gz2HCti2ZSP+dZ9y2t7XuEAOUCpe/D95DV9KGu7kzuDygTsBEjoCIIAbcI++DoDKj6no0NofTKk4psk9CowxBMOGYr+fPds3EQoGcbrcuDw+PN5EUjp2xeN24nYKTodUmaEwkvYfLmDjuhWYYIDC/dsI715N8uH1GBwEnT7EGHoWb2Cw7MItIQACxkk+iSRQynGUcrzYdzgLBHFScu1cUvsMb5F4lVINp8m9knAoTEHREYKlfgL+YkpKijiYs4m8zQvwdOiOuDyY7QuRcABHqBRXsAiXKSXRFFPoTafA1QkTKoVwGG+okITSXNxhP77wEdLChwBwEsJJCBdhUiVAai2x+I2bIlyU4qZEEtjhG0yxJ42wuPGn9iXoSsaT3BFHqARKCvDs+Q4H1i3xYXER8qRgHC6Mw424vIjLg8PtpSTsRIoP4cvbwuCi5YyR/dX2nevoggkLyaF8fA4/G5NPwjv0fEIGgnm7kOJDhEqLCSX3ID1zCL5OPUkcMAZXQodaP49SqnXFTHI/dGAvLrebxOQOOJ1OgsEQRwrzAXD7EnC5PLid1Xux4bDhiD/Awdz9lBzezZEDOYRDAUwwSLA4j1DeLggHIVSKBEvw5m/DEzyCmBAOE8QdLiU1fBiv8ZNIMR0kWKX9zBpiPUgH3ATIc3SkVLyU4KFnyXd0oIAAbkTAj4c8V2f8nhSKnGnkJZ6IwWHdyu5wgsONcbhwp/XB5U20Yg74CZceIVych4RKIehHQn6k+CD9jmwg0V9IqimAvOox5ZNCqcNLl/ABgjgJ4cBFCCfhmr/fjk7kJXRn07DfkJDWE6fDQbc+x+DsMZzOlb/HxjBYb7VXqs1psYnDROQ84O+AE3jOGPNQbXVH9PSZFVMqHoJwxHjxECwfCgAoNU4CuAjjIITDGjqwl9PIx1Opbm0CxkmuI418VxfCDhdhsb8cbkoTuyMmhHF6oUOG3dNNwOlLosexp+BwuikpyqdTzwEkpnZuzremeYKlUHKY0iOHKS06jNubiNubhKNTH+uPxtHCIQiVYoIlhIMBnOEAOFyQkt76sSulIqrVJw4TESfwFHAOkAMsFpFZxpi1NdUPOH18O+BmEAfiL0QChYjLB75UwggS8lvTroYCmHAIMWGMsYY2XITZ5e2Eq0M6JHbF17kXTrcPl9ON0+Ola+9BuN0+HG4fboeD7kD3lvjQrcXlgeRueJK74WlIfYcTHAmIO4EaUr9SKk611LDMaGCzMWYrgIi8BUwAakzuiekDOeX/3ddCoSilVPvTUpcQ9wJ2VFrPscvKicgUEVkiIkv2769+Uk8ppVTTtVRyr+kMXJXBfWPMDGNMljEmq2vXri0UhlJKtU8tldxzgN6V1jOAXS20L6WUUkdpqeS+GBgkIv1ExANcAcxqoX0ppZQ6SoucUDXGBEXkRuATrEshXzDGrGmJfSmllKquxW5iMsZ8BHzUUu0rpZSqnU64p5RScUiTu1JKxaEWm36gUUGIFAAbIthkF+BABNvrQI0zujSLxhgZsR5jpOMDjTFS4iHGY4wxKTVuMcZE/QtYEuPtzWgDn1ljjMEYIx2fxqgxNnSfOizTMB9EO4AG0BgjQ2OMDI0xMpocoyb3BjDGxPwvgcYYGRpjZGiMkdGcGGMluc+I8fZagsYYGbEeY6zHBxpjpEQjxlr3GRMnVJVSSkVWrPTclVJKRZAmd6WUikNtIrmLyAsisk9EVlcqGyEiC0RklYh8ICKpdrlHRF60y1eIyLhK7/GIyAwR2Sgi60Xk0hiMcZJdvlJEPhaRLhGMsbeIzBORdSKyRkRuscvTRGSOiGyyXztVes+dIrJZRDaIyLmVyk+049wsIo/L0Q+3jXKMIpIoIh/aP+c1IlLrYx6jEd9Rbc6q/HsTSzG21DET4Rhb5JhpbIwi0tmuXygiTx7VVoscL3WK9HWZLfEFjAVOAFZXKlsMnGEv/xy4317+DfCivdwNWAo47PU/Aw/Yyw6gSyzFiDXXz76yuIBpwJ8iGGMP4AR7OQXYCAy19zPVLp8K/NVeHgqsALxAP2AL4LS3LQJOxZq7fzbwo1iKEUgExtt1PMBXkYgxkt9De/slwBuVf29iKcaWOmYi+HNusWOmCTEmAacD1wNPHtVWixwvdcbf0juI4C9sJlUTZz4VJ4R7A2vt5aeAqyrVmwuMtpd3AEmxGiPgBvYDfe1fgmeBKS0Y7/tYz7ndAPSwy3oAG+zlO4E7K9X/xP4F7QGsr1Q+CfhHLMVYQzt/B34ZS/EBycDXdsKIWHKPcIwtesxE4Hex1Y6Z+mKsVO8aKiX31jxeKn+1iWGZWqwGLraXL6Pi4SArgAki4hKRfsCJQG8R6Whvv19EvhORf4lIeizFaIwJADcAq7AebjIUeL4lAhORTGAUsBBIN8bsBrBfu9nVantcYi97+ejyWIqxcjsdgYuw/ojGUnz3A48CRZGMK1IxttYx05wYW+uYaWCMtWmV4+VobTm5/xz4jYgsxfqXqdQufwHrm7cEmA58AwSx/n3LAP5rjDkBWAA8Eksxiogb6xd1FNATWInVY4koEUkG3gVuNcbk11W1hjJTR3nERCDGsnZcwJvA48Z+YHssxCciI4GBxpj/i1RM1Xbc/O9hix8zEfg+tvgx04gYa22ihrIWvwa9zSZ3Y8x6Y8wPjTEnYh28W+zyoDHmt8aYkcaYCUBHYBOQi9VDKjuY/oU1Rh5LMY60t28x1v9vbwOnRTIm+2B4F3jdGPOeXbxXRHrY23tgjWFC7Y9LzLGXjy6PpRjLzAA2GWOmx1h8pwInikg21tDMYBH5IsZibNFjJkIxjoSWO2YaGWNtWvR4qU2bTe4i0s1+dQB3Y421lV0lkWQvnwMEjTFr7R/8B8A4u4mzgLWxFCOwExgqImVPDD8HWBfBeATrX9Z1xpjHKm2aBUy2lydjjS2WlV8hIl57+GgQsMj+V7RARE6x27y60ntiIka7rQewZtW7NRKxRTI+Y8wzxpiexphMrJNwG40x42IsxhY7ZiL4c26xY6YJMdaoJY+XOrX0oH4kvrB6vbuBANZfweuAW7DOXm8EHqLixGUm1gmPdcBnQN9K7fQFvsT6120u0CcGY7zeLl+JdWB1jmCMp2P9O7gSWG5/nQ90tr8fm+zXtErv+SPWfxwbqHSGH8jCOqewBXiy7LPFSoxYvSNjfy/L2vlFrMR3VJuZRPZqmUj+nFvkmIlwjC1yzDQxxmzgIFCIlQeGtuTxUteXTj+glFJxqM0OyyillKqdJnellIpDmtyVUioOaXJXSqk4pMldKaXikCZ3pZSKQ5rclVIqDv1/i2kKumKRAW4AAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "(data_train['ecdf_rets']+1).cumprod().plot()\n", + "(data_train['ecdf_iso_rets']+1).cumprod().plot()\n", + "plt.legend(['ECFD', 'ECDF Iso'])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "a14ba985-75a2-4b00-b331-1bb32344bc15", + "metadata": {}, + "source": [ + "* **This seems very high**" + ] + }, + { + "cell_type": "markdown", + "id": "cdf90d9a-4aad-43e7-9075-2ddb723c98fb", + "metadata": {}, + "source": [ + "## Lopez de Prado Sizing" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "fbb71460-fbe7-47a6-bcb8-db7398b6eeff", + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.stats import norm" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "e444e04d-9cbe-497b-96ca-938c2515a6c1", + "metadata": {}, + "outputs": [], + "source": [ + "def de_prado_bet_size(prob_series, clip=True):\n", + "\n", + " # Getting max value from training set\n", + " num_classes = 2\n", + " dp_sizes = (prob_series - 1 / num_classes) / ((prob_series * (1 - prob_series)) ** 0.5)\n", + " dp_t_sizes = dp_sizes.apply(lambda s: 2 * norm.cdf(s) - 1)\n", + " dp_bet_sizes = dp_t_sizes / dp_sizes.max()\n", + " \n", + " if clip: \n", + " dp_bet_sizes[dp_bet_sizes > 1.0] = 1\n", + " dp_bet_sizes[dp_bet_sizes < 0] = 0\n", + " \n", + " return dp_bet_sizes" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "44f144b2-db13-4b7f-821e-d643b6cc7a95", + "metadata": {}, + "outputs": [], + "source": [ + "dp_size = de_prado_bet_size(prob, clip=True)\n", + "dp_size_iso = de_prado_bet_size(prob_iso, clip=True)\n", + "\n", + "# Assign position sizes\n", + "data_train['dp_size'] = 0\n", + "data_train.loc[data.index, 'dp_size'] = dp_size\n", + "data_train['dp_size_iso'] = 0\n", + "data_train.loc[data.index, 'dp_size_iso'] = dp_size_iso\n", + "\n", + "# Get daily rets\n", + "data_train['dp_rets'] = (data_train['dp_size'] * data_train['target_rets']).shift(1)\n", + "data_train['dp_rets_iso'] = (data_train['dp_size_iso'] * data_train['target_rets']).shift(1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "7073d099-d180-4a88-901e-6adea9185487", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "(data_train['dp_rets']+1).cumprod().plot()\n", + "(data_train['dp_rets_iso']+1).cumprod().plot()\n", + "plt.legend(['de Prado', 'de Prado Iso'])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "2056eb91-0755-412b-8d45-ecf3b714a50c", + "metadata": {}, + "source": [ + "## Sigmoid Optimal Fit" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "f65aa530-f3dd-4f6f-b0bf-3ac071e59899", + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.optimize import minimize" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "e45bbb42-12ad-4c81-8ec3-ffab370fab74", + "metadata": {}, + "outputs": [], + "source": [ + "def target(x):\n", + " # Apply sigmoid position sizing\n", + " f = lambda p: min(max(1 / (1 + np.exp(-x[0] * p - x[1])), 0), 1)\n", + " f = np.vectorize(f)\n", + " \n", + " # Backtest + sharpe ratio\n", + " rets = f(prob) * target_return_train\n", + " sharp_ratio = np.mean(rets) / np.std(rets)\n", + " return - sharp_ratio\n", + "\n", + "def target_iso(x):\n", + "\n", + " f = lambda p: min(max(1 / (1 + np.exp(-x[0] * p - x[1])), 0), 1)\n", + " f = np.vectorize(f)\n", + " values = f(prob_iso) * target_return_train\n", + " return - np.mean(values) / np.std(values)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "1964e221-b040-4bcb-a9fa-65c85935fdba", + "metadata": {}, + "outputs": [], + "source": [ + "x0 = np.array([1, 0])\n", + "res = minimize(target, x0, method='nelder-mead', options={'xatol': 1e-8, 'disp': False})\n", + "model = res.x\n", + "scaled = 1 / (1 + np.exp(-model[0] * prob - model[1]))\n", + "\n", + "x0 = np.array([1, 0])\n", + "res = minimize(target_iso, x0, method='nelder-mead', options={'xatol': 1e-8, 'disp': False})\n", + "model = res.x\n", + "scaled_iso = 1 / (1 + np.exp(-model[0] * prob_iso - model[1]))" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "71893a65-4a74-4fe6-b99e-6674bd228d10", + "metadata": {}, + "outputs": [], + "source": [ + "# Assign position sizes\n", + "data_train['sop_size'] = 0\n", + "data_train.loc[data.index, 'sop_size'] = scaled\n", + "data_train['sop_size_iso'] = 0\n", + "data_train.loc[data.index, 'sop_size_iso'] = scaled_iso\n", + "\n", + "# Get daily rets\n", + "data_train['sop_rets'] = (data_train['sop_size'] * data_train['target_rets']).shift(1)\n", + "data_train['sop_rets_iso'] = (data_train['sop_size_iso'] * data_train['target_rets']).shift(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "7e7cfea5-da69-420f-8e40-5069c59ebf1e", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "(data_train['sop_rets']+1).cumprod().plot()\n", + "(data_train['sop_rets_iso']+1).cumprod().plot()\n", + "plt.legend(['SOP', 'SOP Iso'])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "4b30fdbe-68cd-4f1f-bac3-b2f340ec6888", + "metadata": {}, + "source": [ + "## Optimal Linear\n" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "59f51824-d7d8-408d-9fc3-40ca775e3392", + "metadata": {}, + "outputs": [], + "source": [ + "def target_linear(x):\n", + "\n", + " f = lambda p: min(max(x[0] * p + x[1], 0), 1)\n", + " f = np.vectorize(f)\n", + " \n", + " rets = f(prob) * target_return_train\n", + " if np.std(rets) == 0.0:\n", + " stdev = 1000\n", + " else: \n", + " stdev = np.std(rets)\n", + " sr = np.mean(rets) / stdev\n", + " return -sr\n", + "\n", + "def target_linear(x):\n", + " # Linear function\n", + " f = lambda p: min(max(x[0] * p + x[1], 0), 1)\n", + " f = np.vectorize(f)\n", + " # Backtest\n", + " rets = f(prob_train) * target_train\n", + " # Solve for no positions taken\n", + " stdev = check_std(rets)\n", + " # Sharpe Ratio\n", + " sr = np.mean(rets) / stdev\n", + " return -sr\n", + "\n", + "\n", + "def target_linear_iso(x):\n", + "\n", + " f = lambda p: min(max(x[0] * p + x[1], 0), 1)\n", + " f = np.vectorize(f)\n", + " \n", + " rets = f(prob_iso) * target_return_train\n", + " if np.std(rets) == 0.0:\n", + " stdev = 1000\n", + " else: \n", + " stdev = np.std(rets)\n", + " sr = np.mean(rets) / stdev\n", + " return -sr" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "a907f3e1-9e2b-4cc2-ae77-653a509ddd1f", + "metadata": {}, + "outputs": [], + "source": [ + "x0 = np.array([1, 0])\n", + "res = minimize(target_linear, x0, method='nelder-mead',\n", + " options={'xatol': 1e-8, 'disp': False})\n", + "model = res.x\n", + "lops_size = model[0] * prob + model[1]\n", + "\n", + "# Clip\n", + "lops_size[lops_size > 1] = 1\n", + "lops_size[lops_size < 0] = 0\n", + "\n", + "x0 = np.array([1, 0])\n", + "res = minimize(target_linear_iso, x0, method='nelder-mead',\n", + " options={'xatol': 1e-8, 'disp': False})\n", + "model = res.x\n", + "lops_size_iso = model[0] * prob_iso + model[1]\n", + "\n", + "# Clip\n", + "lops_size_iso[lops_size_iso > 1] = 1\n", + "lops_size_iso[lops_size_iso < 0] = 0" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "a138660d-b159-4ef8-9fc1-26529ca2e187", + "metadata": {}, + "outputs": [], + "source": [ + "# Assign position sizes\n", + "data_train['lops_size'] = 0\n", + "data_train.loc[data.index, 'lops_size'] = lops_size\n", + "data_train['lops_size_iso'] = 0\n", + "data_train.loc[data.index, 'lops_size_iso'] = lops_size_iso\n", + "\n", + "# Get daily rets\n", + "data_train['lops_rets'] = (data_train['lops_size'] * data_train['target_rets']).shift(1)\n", + "data_train['lops_rets_iso'] = (data_train['lops_size_iso'] * data_train['target_rets']).shift(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "e123a5a3-83ce-4e58-9d5d-67c3a25fac9d", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "(data_train['lops_rets']+1).cumprod().plot()\n", + "(data_train['lops_rets_iso']+1).cumprod().plot()\n", + "plt.legend(['LOPS', 'LOPS Iso'])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "135c7255-8087-4406-94f6-cf21d2d38dcf", + "metadata": { + "tags": [] + }, + "source": [ + "## Kelly Criterion" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "2d694267-914c-41ae-b6f7-5ee830b66bb8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.013060868884608296\n", + "0.013068285242334254\n" + ] + } + ], + "source": [ + "# We also need to calculate b here - expected win ratio\n", + "winning_trades = data['target_rets'] > 0\n", + "loosing_trades = data['target_rets'] < 0\n", + "exp_loss = -data.loc[loosing_trades, 'target_rets'].mean()\n", + "exp_win = data.loc[winning_trades, 'target_rets'].mean()\n", + "\n", + "print(exp_loss)\n", + "print(exp_win)" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "id": "832da5a6-99e1-49bd-92fd-22348a4b340b", + "metadata": {}, + "outputs": [], + "source": [ + "def clip_kelly(b):\n", + " return np.min([np.max([b, 0]), 1])\n", + "\n", + "kelly_size = kelly(p=data['prob_regime'], win=exp_gain, loss=exp_loss)\n", + "kelly_size = kelly_size.apply(clip_kelly)\n", + "kelly_size_iso = (prob_iso / exp_loss) + ((prob_iso - 1) / exp_win)\n", + "kelly_size_iso = kelly_size_iso.apply(clip_kelly)" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "id": "c9e9705d-263a-490f-97b9-884ce78698ef", + "metadata": {}, + "outputs": [], + "source": [ + "# Assign position sizes\n", + "data_train['kelly_size'] = 0\n", + "data_train.loc[data.index, 'kelly_size'] = kelly_size\n", + "data_train['kelly_size_iso'] = 0\n", + "data_train.loc[data.index, 'kelly_size_iso'] = kelly_size_iso\n", + "\n", + "# Get daily rets\n", + "data_train['kelly_rets'] = (data_train['kelly_size'] * data_train['target_rets']).shift(1)\n", + "data_train['kelly_rets_iso'] = (data_train['kelly_size_iso'] * data_train['target_rets']).shift(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "1df5a92c-a93a-4852-aca8-2a1edaf99a71", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "(data_train['kelly_rets']+1).cumprod().plot()\n", + "(data_train['kelly_rets_iso']+1).cumprod().plot()\n", + "plt.legend(['Kelly', 'Kelly Iso'])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "f8266e51-a738-425a-8b25-f2c5a1afcd90", + "metadata": { + "tags": [] + }, + "source": [ + "---\n", + "\n", + "# Final Results" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "id": "a3d69e0e-9c36-44ac-be89-7c0330f8ba0b", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABIoAAAJOCAYAAADYuOxtAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAAsTAAALEwEAmpwYAAEAAElEQVR4nOzdZ3hU1fr38e+amfSEUAJShaAgIClgAAWliIKKooCoiAqoRzm2I/5VsDesh2NBER6PBRVLbCiKioICUg4YNAgCUiNNpCakZ8p+XkwyEEhvk4Tf57pyZWbvtde69yR5kfu6172NZVmIiIiIiIiIiIjY/B2AiIiIiIiIiIjUDkoUiYiIiIiIiIgIoESRiIiIiIiIiIjkU6JIREREREREREQAJYpERERERERERCSfEkUiIiIiIiIiIgIoUSQiIiLiY4w52RiTYYyx+zsWEREREX9QokhERETqHGNMijEmOz+pU/D1SmXntSxru2VZ4ZZlufPXWWiMubEScRpjzB3GmLXGmExjzE5jzMfGmJjKxioiIiJSHRz+DkBERESkgi6xLGu+v4MoxUvAEOAfwFLADgzLP7amPBMZYxyWZbmqPEIRERGRo6iiSEREROoVY4zdGDPFGLPfGLPVGHOrMcYyxjjyz6cYY847avyjxphZ+a/bFYw1xjwJnAO8UlCxZIyZZoz5zzHrfWmMubOIODoAtwKjLMv6wbKsXMuysizLes+yrGfyxxSqWDLGjDXGLDnqvZUf/yZgkzFmhjFmyjHrfGGMuSv/dUtjzKfGmH3GmG3GmDsq+3mKiIjIiUWJIhEREalv/gFcDHQDEoDLKzKJZVkPAD8Bt+VvR7sNeBsYZYyxARhjooCBwAdFTDEQ2GlZ1sqKrH+Uy4BeQBfgfeBKY4zJX78RMAj4MD+mL4HVQKv89e80xgyu5PoiIiJyAlGiSEREROqqz40xqUd9/SP/+BXAi5Zl7bAs6yDwdFUtmJ/0ScObhAG4ClhoWdbfRQxvAvxVBcs+bVnWQcuysvEmriy8lU7gTYIttyxrN9ADaGpZ1uOWZeVZlrUV+G9+jCIiIiJloh5FIiIiUlddVkyPopbAjqPe/1nF674NXAN8n//9pWLGHQBaVMF6vnuxLMsyxnwIjAIWA1cDs/JPtwVaGmNSj7rWjje5JCIiIlImqigSERGR+uYvoM1R708+5nwmEHrU++YlzGUVcWwWcKkxJg7oDHxezLULgNbGmIQS5i9LLMfG8AFwuTGmLd4taZ/mH98BbLMsq+FRXxGWZV1UwvoiIiIihShRJCIiIvXNR8AdxpjW+T18Jh1zPhm4yhgTkJ/EKamH0d9A+6MPWJa1E/gZeBf4NH9L2HEsy9oEvAp8YIzpb4wJNMYEG2OuMsYUxJQMDDfGhBpjTgVuKO3mLMv6FdgHvA7MsywrNf/USuCwMWaiMSYkv6l3V2NMj9LmFBERESmgRJGIiIjUVV/mP42s4Gt2/vH/AvPwNnX+BfjsmOseAk4BDgGP4W0QXZyX8FbvHDLGTD3q+NtADN5kUUnuAF4BpgGpwBZgGN6m0wAvAHl4E1JvA++VMl+BD4Dzjo7dsiw3cAkQD2wD9uNNJkWWcU4RERERjGUVVVEtIiIiUj8YY9rhTZwEWJblqqI5++LdgtbOsixPVcwpIiIiUhuookhERESkHIwxAcC/gNeVJBIREZH6RokiERERkTIyxnTGu4WsBfCiX4MRERERqQbaeiYiIiIiIiIiIoAqikREREREREREJJ/D3wGUJioqymrXrp2/wxARERERERERqTdWrVq137Kspscer/WJonbt2pGUlOTvMERERERERERE6g1jzJ9FHdfWMxERERERERERAZQoEhERERERERGRfEoUiYiIiIiIiIgIUAd6FBXF6XSyc+dOcnJy/B2KFCE4OJjWrVsTEBDg71BEREREREREpBzqZKJo586dRERE0K5dO4wx/g5HjmJZFgcOHGDnzp1ER0f7OxwRERERERERKYc6ufUsJyeHJk2aKElUCxljaNKkiaq9REREREREROqgOpkoApQkqsX0sxERERERERGpm+psokhERERERERERKqWEkV+8uKLL5KVleXvMEREREREREREfJQoqkZut7vYc0oUiYiIiIiIiEhto0RRBaWkpNCpUyfGjBlDbGwsl19+OVlZWbRr147HH3+cs88+m48//pjvvvuOs846i+7duzNy5EgyMjKYOnUqu3fvZsCAAQwYMAC3283YsWPp2rUrMTExvPDCC/6+PRERERERERE5ATn8HUBlPfbl76zbfbhK5+zSsgGPXHJ6qeP++OMP3njjDfr06cP111/Pq6++CkBwcDBLlixh//79DB8+nPnz5xMWFsazzz7L888/z8MPP8zzzz/Pjz/+SFRUFKtWrWLXrl2sXbsWgNTU1Cq9HxERERERERGRsqjziSJ/atOmDX369AHgmmuuYerUqQBceeWVAPzvf/9j3bp1vjF5eXmcddZZx83Tvn17tm7dyu23386QIUMYNGhQDd2BiIiIiIiIiMgRdT5RVJbKn+py7GPgC96HhYUBYFkW559/Ph988EGJ8zRq1IjVq1czb948pk2bxkcffcSbb75ZPUGLiIiIiIiIiBRDPYoqYfv27SxfvhyADz74gLPPPrvQ+TPPPJOlS5eyefNmALKysti4cSMAERERpKenA7B//348Hg8jRozgiSee4JdffqnBuxARERERERER8VKiqBI6d+7M22+/TWxsLAcPHuSf//xnofNNmzZl5syZjBo1itjYWM4880w2bNgAwE033cSFF17IgAED2LVrF/379yc+Pp6xY8fy9NNP++N2REREREREROQEZyzL8ncMJUpISLCSkpIKHVu/fj2dO3f2U0ReKSkpXHzxxb4G1FJYbfgZiYiIiIiIiEjRjDGrLMtKOPa4KopERERERERERARQoqjC2rVrp2oiEREREREREalXlCgSERERERERERFAiSIREREREREREcmnRJGIiIiIiIiIiADg8HcAIiIiIiIiIiJSM5y5bj566udiz6uiSERERERERETkBOFxe0j9O6vY80oUVVB4eDgAu3fv5vLLL6/x9VNSUnj//ffr/BoiIiIiIiIiUnM8HqvE80oUVVLLli355JNPanzdqkriuN3ual9DRERERERERGoHj7vkRFHd71H0zSTYs6Zq52weAxc+U6ahKSkpXHzxxaxdu5aZM2cyZ84csrKy2LJlC8OGDeO5554r9trw8HBuvfVW5s+fT6NGjXjqqae499572b59Oy+++CJDhw7F7XYzadIkFi5cSG5uLrfeeis333wzkyZNYv369cTHxzNmzBiGDRvGtddeS2ZmJgCvvPIKvXv3LnLdhQsX8thjj9GiRQuSk5NZs2ZNmdYYNGgQ48aNIy8vD4/Hw6effkqHDh3K//mKiIiIiIiIiF/U/0RRLZOcnMyvv/5KUFAQp512Grfffjtt2rQpcmxmZib9+/fn2WefZdiwYTz44IN8//33rFu3jjFjxjB06FDeeOMNIiMj+fnnn8nNzaVPnz4MGjSIZ555hilTpvDVV18BkJWVxffff09wcDCbNm1i1KhRJCUlFRvnypUrWbt2LdHR0bz22mtlWuP222/nX//6F6NHjyYvL6/EaiQRERERERERqX2sUrae1f1EURkrf2rKwIEDiYyMBKBLly78+eefxSaKAgMDueCCCwCIiYkhKCiIgIAAYmJiSElJAeC7777jt99+821vS0tLY9OmTQQGBhaay+l0ctttt5GcnIzdbmfjxo0lxtmzZ0+io6PLtcZZZ53Fk08+yc6dOxk+fLiqiURERERERERqsQ3L/2LRhxv5x/PnYLN7uw+poqiGBQUF+V7b7XZcLlexYwMCAjDGAGCz2XzX2mw233WWZfHyyy8zePDgQtcuXLiw0PsXXniBk046idWrV+PxeAgODi4xzrCwMN/rsq5x9dVX06tXL+bOncvgwYN5/fXXOffcc0tcR0RERERERET8Y8nHm3DlusnLdhMcnp8oUjPrum3w4MFMnz4dp9MJwMaNG8nMzCQiIoL09HTfuLS0NFq0aIHNZuPdd98t17awsq6xdetW2rdvzx133MHQoUP57bffquguRURERERERKSq2eze4hS32+M7Vv+3ntVzN954IykpKXTv3h3LsmjatCmff/45sbGxOBwO4uLiGDt2LLfccgsjRozg448/ZsCAAYUqhqpqjZycHGbNmkVAQADNmzfn4YcfrsY7FxEREREREZHKsNnyE0WuI4mi0raeGcsqeYC/JSQkWMc2ZV6/fj2dO3f2U0RSFvoZiYiIiIiIiPjXO/cvI/1gDlc/2otGzb0FJX9vO8wnzyZx2/8buMqyrIRjr1FFkYiIiIiIiIhIPVSw9WzLL/uIaHwYgNS92SVeo0RRDejVqxe5ubmFjr377rvExMRU67pr1qzh2muvLXQsKCiIFStWVOu6IiIiIiIiIuJ/oZGBpO3LZsWcrWW+RomiGuCvxExMTAzJycl+WVtERERERERE/CuqTQR/bU7jmifOLHTcEWjntv9X9DVKFImIiIiIiIiI1EOW2yIkIoDIpqFlvsZWjfGIiIiIiIiIiIifeDwWJv/JZ2WlRJGIiIiIiIiISD3k8VjYlCgSERERERERERHLY/mefFZWShRVUHh4OAC7d+/m8ssvr9AcF110EampqVUYVelefPFFsrKyanRNEREREREREal5Hre2ntW4li1b8sknn1To2q+//pqGDRtWbUCA2+0u9pwSRSIiIiIiIiInBo/bU+6tZ3X+qWfPrnyWDQc3VOmcnRp3YmLPiWUam5KSwsUXX8zatWuZOXMmc+bMISsriy1btjBs2DCee+65Yq9t164dSUlJhISEcMUVV7Bz507cbjcPPfQQV155JQsWLODuu+/G5XLRo0cPpk+fTlBQULFzXX/99Xz33XfcdtttNG7cmEceeYTc3FxOOeUU3nrrLd588012797NgAEDiIqKYv78+dxwww0kJSVhjOH6669nwoQJFfrMRERERERERKR2cbssHIH2cl1T5xNFtU1ycjK//vorQUFBnHbaadx+++20adOmxGu+/fZbWrZsydy5cwFIS0sjJyeHsWPHsmDBAjp27Mh1113H9OnTufPOO4udJzg4mCVLlrB//36GDx/O/PnzCQsL49lnn+X555/n4Ycf5vnnn+fHH38kKiqKVatWsWvXLtauXQtQ49vgRERERERERKT6uJ1u7I4TrKKorJU/NWXgwIFERkYC0KVLF/78889SE0UxMTHcfffdTJw4kYsvvphzzjmH1atXEx0dTceOHQEYM2YM06ZNKzFRdOWVVwLwv//9j3Xr1tGnTx8A8vLyOOuss44b3759e7Zu3crtt9/OkCFDGDRoUEVuWURERERERERqIZfTgz2gfF2H6nyiqLY5emuY3W7H5XKVek3Hjh1ZtWoVX3/9Nffddx+DBg1i6NCh5V47LCwMAMuyOP/88/nggw9KHN+oUSNWr17NvHnzmDZtGh999BFvvvlmudcVERERERERkdrH7bIICCpf6kfNrGuB3bt3ExoayjXXXMPdd9/NL7/8QqdOnUhJSWHz5s0AvPvuu/Tr169M85155pksXbrUd21WVhYbN24EICIigvT0dAD279+Px+NhxIgRPPHEE/zyyy/VcHciIiIiIiIi4g9up+fE23pWH6xZs4Z77rkHm81GQEAA06dPJzg4mLfeeouRI0f6mlmPHz++TPM1bdqUmTNnMmrUKHJzcwGYPHkyHTt25KabbuLCCy+kRYsWvPjii4wbNw6PxwPA008/XW33KCIiIiIiIiI1y+3y4Cjn1jNjWVY1hVM1EhISrKSkpELH1q9fT+fOnf0UkZSFfkYiIiIiIiIi/vX2/Utp3bERA8d2Oe6cMWaVZVkJxx7X1jMRERERERERkXrI7bLUzLo26tWrl28LWIF3332XmJiYcs81bNgwtm3bVujYs88+y+DBgysVo4iIiIiIiIjUL2499ax2WrFiRZXNNXv27CqbS0RERERERETqL28z6/IlirT1TERERERERESknvF4LNyu8lcUKVEkIiIiIiIiIlJHeDwWf21Oxe3ylDhu089/A5T7qWdKFImIiIiIiIiI1AHpB3NYMWcrn035hd9/2lXi2NwsJwCn9WperjWUKPKD5ORkvv766zq/hoiIiIiIiIjUnHfuX8Yv3/4JQNrebAAsy+KN//uJtYsLJ47cLguAwODytadWosgPqiqJ43K5qn0NEREREREREal9jM0A3obVOZlOFr3/R6HzHrd3a5rNYco1rxJFFZSSkkKnTp248cYb6dq1K6NHj2b+/Pn06dOHDh06sHLlSjIzM7n++uvp0aMH3bp144svviAvL4+HH36YxMRE4uPjSUxMZOXKlfTu3Ztu3brRu3dv/vjjj2LXnTlzJiNHjuSSSy5h0KBBZV5j0aJFxMfHEx8fT7du3UhPT6/BT0tEREREREREqlJBosjlLLpXkcftrSiy2cuX+ilf/VEttOepp8hdv6FK5wzq3Inm999f6rjNmzfz8ccf89prr9GjRw/ef/99lixZwpw5c3jqqafo0qUL5557Lm+++Sapqan07NmT8847j8cff5ykpCReeeUVAA4fPszixYtxOBzMnz+f+++/n08//bTYdZcvX85vv/1G48aNuf/++8u0xiWXXMK0adPo06cPGRkZBAcHV82HJSIiIiIiIiI1zpaf/3HlFZ0ocrs8GAM2W/kqiup8osifoqOjiYmJAeD0009n4MCBGGOIiYkhJSWFnTt3MmfOHKZMmQJATk4O27dvP26etLQ0xowZw6ZNmzDG4HQ6S1z3/PPPp3HjxgB89913ZVqjT58+3HXXXYwePZrhw4fTunXrSt27iIiIiIiIiPjPL99tJ6JJCK07NfIdS3xype/1/h0ZFZq3zieKylL5U12CgoJ8r202m++9zWbD5XJht9v59NNPOe200wpdt2LFikLvH3roIQYMGMDs2bNJSUmhf//+Ja4bFhbme21ZVpnWmDRpEkOGDOHrr7/mzDPPZP78+XTq1KnM9yoiIiIiIiIitYgFi97/gyG3xvoOhTc6snuoooki9SiqRoMHD+bll1/Gsrz7An/99VcAIiIiCvUISktLo1WrVoC3B1F1rLFlyxZiYmKYOHEiCQkJbNhQtdv1RERERERERKT6FPzff6xFH3j7HF92VzeG3BLr+6ooJYqq0UMPPYTT6SQ2NpauXbvy0EMPATBgwADWrVvnazR97733ct9999GnTx/cbne1rPHiiy/StWtX4uLiCAkJ4cILL6zy+xURERERERGR6uHJf9x9u5gmhY5nHMwFoFm7BoWO9xvVkYQh7cq9jikuI1VbJCQkWElJSYWOrV+/ns6dO/spIikL/YxEREREREREqk5OhpM37v6Js6/owJKPNhU6F9k0hGueOKtc8xljVlmWlXDscVUUiYiIiIiIiIjUcnm5LgACguzHnQsIPv5YRdX5Ztb11bx585g4cWKhY9HR0cyePdtPEYmIiIiIiIiIv7hyPUDhRFHDk0JJ/TuL0IjAKltHiaJaavDgwQwePNjfYYiIiIiIiIhILeDM9fY0PjpRNOSWWA7tyaTpyQ2Ku6zclCgSEREREREREanlnHn5iaJAO90GnUyDJsE0PCmUhieFVuk6ShSJiIiIiIiIiNRyvoqiYDu9h59abeuombWIiIiIiIiISC3nLKGZdVVSokhEREREREREpJYraGbtCFSiSERERERERETkhFZUM+vqoESRHyQnJ/P1119X6NqkpCTuuOOOKo6oZCkpKbz//vs1uqaIiIiIiIiIHFFTiaI638z6p482sn9HRpXOGdUmnHOu6Filcx4tOTmZpKQkLrroonJfm5CQQEJCQpXH5Ha7sduL/mUrSBRdffXVVb6uiIiIiIiIiJTOmevGZjPYHdVb86OKogpKSUmhU6dO3HjjjXTt2pXRo0czf/58+vTpQ4cOHVi5ciWZmZlcf/319OjRg27duvHFF1+Ql5fHww8/TGJiIvHx8SQmJrJy5Up69+5Nt27d6N27N3/88Uex6y5cuJCLL74YgEWLFhEfH098fDzdunUjPT0dy7K455576Nq1KzExMSQmJpY414ABA7j66quJiYnB7XZzzz330KNHD2JjY/l//+//ATBp0iR++ukn4uPjeeGFF/j999/p2bMn8fHxxMbGsmnTpqr9cEVERERERETqCctj4XZ7Kj2P2+XBHlD9aZw6X1FUnZU/pdm8eTMff/wxr732Gj169OD9999nyZIlzJkzh6eeeoouXbpw7rnn8uabb5KamkrPnj0577zzePzxx0lKSuKVV14B4PDhwyxevBiH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uCq5bxERERERERE5npVfQNSxZ3OanhxB+/imlZ7THmBj+zpv/+PM/GqkmqgoMsc+wq22SUhIsJKSkgodW79+PZ07d/ZTRFIW+hmJiIiIiIjIiWLzqr3M++9arnqoJ01ahVfJnEs/3cyfa/ZzaE8WoZGBZKXlcd7Yzpx2Zosqmd8Ys8qyrIRjj6uiSERERERERESkEgqKcCrTo/hYfUacytWPnklEk2BCIvK3nqlH0Ynhrbfe4qWXXip0rE+fPkybNs1PEYmIiIiIiIhIWRX0KDLVUI7jCLCRk+EEambrmRJFtcC4ceMYN26cv8MQERERERERkQo4kiiquoqiAvYAG1l7swEIqIFm1koUiYiIiIiIiIhUgie/mbWtGhJFHRJOwpi9BIY4aNQirMrnP5YSRSIiIiIiIiIileDrUVQNiaLug9vSfXDbKp+3OGpmLSIiIiIiIiJSCc5cNwCOwLqfZqn7dyAiIiIiIiIi4ke5WS4AgkLq/sYtJYpqWLt27di/fz8AU6dOpXPnzowePbrIsXPmzOGZZ56pyfBITk7m66+/rtE1RUREREREROqy3CwnAcF2bPa6n2ap86mu1C+3kLc7s0rnDGwZRsNLTqnSOYvy6quv8s033xAdHV3k+aFDhzJ06NAqX9flcuFwFP2jT05OJikpiYsuuqjK1xURERERERGpj/KyXASF1vkUC6CKogqbNWsWPXv2JD4+nptvvhm32823335L9+7diYuLY+DAgQAcOHCAQYMG0a1bN26++WZfg6vx48ezdetWhg4dygsvvFDkGjNnzuS2224D4OOPP6Zr167ExcXRt29fAHJychg3bhwxMTF069aNH3/8sdh4Z86cyciRI7nkkksYNGgQmZmZXH/99fTo0YNu3brxxRdfkJeXx8MPP0xiYiLx8fEkJiayaNEi4uPjiY+Pp1u3bqSnp1flxygiIiIiIiJS5+VkuQgKDfB3GFWizqe7aqLy51jr168nMTGRpUuXEhAQwC233MKsWbN48MEHWbx4MdHR0Rw8eBCAxx57jLPPPpuHH36YuXPn8tprrwEwY8YMvv32W3788UeioqJKXfPxxx9n3rx5tGrVitTUVACmTZsGwJo1a9iwYQODBg1i48aNBAcHFznH8uXL+e2332jcuDH3338/5557Lm+++Sapqan07NmT8847j8cff5ykpCReeeUV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e+65h5iYGLp27Urfvn2Ji4ur8vsTEREREREROaHk7zBr07mx71D/azrRsddJ5Ga5yMt2F3vppqS9BATaqzvCGlN/Ul417IEHHuCBBx4odOyrr75ixIgRPP3006Ve/+ijjxZ6HxUV5atGOlrHjh357bfffO+PTkqJiIiIiIiISOV5PN5Mke2o7WONW4TRplNjNq74m9xsF8HhAUVeGxhiJ6Ce9CcCVRSJiIiIiIiIyAnOsryJomP7DBf0Jvrk2SS2/Lq36Gs90KxtRPUGWIOUKKpCCxcuJCEhodCxt956i/j4+EJft956q58iFBEREREREZFjWfkVReaYLEmr0xoRf14bcjOd7P3z+CeTA7jdHuz2+pNeqT+1UbXUuHHjGDdunL/DEBEREREREZFiHEkUFa4oCgpx0OfyDqxdtAvLbRV5rcdtYbPXjyeegSqKREREREREROQE58l/qJmtmEfcG7vx9TE67lq3hc2hRJGIiIiIiIiISL3g61FUTKLIZis6UbThf39heSxs9WjrWf25ExERERERERGRCvBtPTPFJIrspsitZwtmrvedry+UKKoCjz76KFOmTKmWuRcuXMiyZcvKfV1SUhJ33HFHNUQkIiIiIiIiUr8U18y6gCmmoqhAfUoUqZl1LeByuXA4iv5RLFy4kPDwcHr37l2uORMSEo57ApuIiIiIiIiIHK+0HkXFbT0roKee1SIbNz5Besb6Kp0zIrwzHTs+VOKYJ598knfeeYc2bdrQtGlTzjjjDPr37098fDwrV67k8OHDvPnmm/Ts2bPI6x999FF2795NSkoKUVFRvPTSS4wfP57t27cD8OKLL9KqVStmzJiB3W5n1qxZvPzyy+zZs4fHHnsMu91OZGQkixcvLnL+hQsXMmXKFL766isWLVrEv/71L8BbRrd48WLCw8O59957+eabbzDG8OCDD3LllVdW4lMTERERERERqZuKe+pZgeK2nkW1CWf/jgxOO7N5tcZXk+p8osgfVq1axYcffsivv/6Ky+Wie/funHHGGQBkZmaybNkyFi9ezPXXX8/atWtLnGfJkiWEhIRw9dVXM2HCBM4++2y2b9/O4MGDWb9+PePHjyc8PJy7774bgJiYGObNm0erVq1ITU0tU7xTpkxh2rRp9OnTh4yMDIKDg/nss89ITk5m9erV7N+/nx49etC3b19atGhR6c9H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spgwYQINGzbk0UcfZdy4ccTGxhIaGsrbb79dqc9KREREREREapeCZtY2m/+TJwWVPtXbo0gVRaVRoqiCMjIyAO9WrH//+9/8+9//Pm5MaGgoiYmJhY7FxcWVuYpo4cKFhd7Hx8ezePHi48aNGDGCESNG+N6vXFm21k+PPvqo7/WSJUuOO9+4cWO++OKL446LiIiIiIhI/WD5EkX+bzNid3hj8LirMVHk9PjWkaIpjSYiIiIiIiJygjp665m/GZsB430yWUksyyIns2INr1VRVDp9OtWkf//+fPXVV2Uae+uttxIfH1/o66233qqyWJ588snj5n/yySerbH4RERERERGpmzy1qKLIGIPdbit161ny/B288X8/kX4wp9xruF2WEkWl0NazWmDatGnVOv8DDzzAAw88UK1riIiIiIiISN1juWtPogi8289KSxRt+vlvALLS8ohoHFyu+VVRVDp9OiIiIiIiIiInqIKKotqw9QzAZrfx2w87+eN/fxU7piCRZA8of8xKFJVOn46IiIiIiIjICao2bT0D6Hf1aQDs25FR7BhXnhsAq5w9ry2PhTPHXaEE04lEiSIRERERERGRE5Rv61ktqSg69YxmhEQE+JJBRXE5vRkidzmfjnbwr0wAPNX3ULV6QYmiOujzzz9n3bp1/g5DRERERERE6jjf1rNaUlEE4Ai0k53hxPIU/fQzd36iyFNKL6NjufK841t1bFip+Oo7JYpqKZfLVew5JYpERERERESkKnhqWTNr8G4R2/rrPn7+OqXI876KIlfRiaTiFFQgqUdRyfTpVEBmZiZDhgwhLi6Orl27kpiYyIIFC+jWrRsxMTFcf/315ObmAtCuXTsmTpxIz5496dmzJ5s3by523rFjx3LXXXcxYMAAJk6cyJYtW7jgggs444wzOOecc9iwYQPLli1jzpw53HPPPcTHx7NlyxamTp1Kly5diI2N5aqrrqqpj0FERERERETqOKsWVhQVJHK2/roP8CZ4XM4jW9EKKorS9maVa96CCiS7o/bca23k8HcAlfbNJNizpmrnbB4DFz5T7Olvv/2Wli1bMnfuXADS0tLo2rUrCxYsoGPHjlx33XVMnz6dO++8E4AGDRqwcuVK3nnnHe68806++uqrYufeuHEj8+fPx263M3DgQGbMmEGHDh1YsWIFt9xyCz/88ANDhw7l4osv5vLL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REREREREaq+9fx7mtx938sf/9gBww5RzMDbj56iktqnziSJ/6NixI6tWreLrr7/mvvvuY9CgQSWON8YU+booYWFhAHg8Hho2bEhycnKp8cydO5fFixczZ84cnnjiCX7//XccjpJ/tDNmzGDFihXMnTuX+Ph4kpOTsSyr1LVERERERESkbkqev4NNSX8DcPo5LZUkkiJpI2IF7N69m9DQUK655hruvvtuli1bRkpKCps3bwbg3XffpV+/fr7xiYmJvu9nnXVWmdYoqFL6+OOPAbAsi9WrVwMQERFBeno64E0o7dixgwEDBvDcc8+RmppKRkZGqfNv2bKFXr168fjjjxMVFcWOHTvo27cv7733HuDdArd9+3ZOO+20Mn4qIiIiIiIiUht43J4ij+dlu2jaJoJbZ5xL/9GdajgqqStUUVQBa9as4Z577sFmsxEQEMD06dNJS0tj5MiRvmbW48eP943Pzc2lV69eeDwePvjggzKv89577/HPf/6TyZMn43Q6ueqqq4iLi+Oqq67iH//4B1OnTuXDDz/khhtuIC0tDcuymDBhAg0bNix17nvuuYdNmzZhWRYDBw4kLi6OTp06MX78eGJiYnA4HMycOZOgoKCKfEQiIiIiIiLiBz/P3cbKL7dxxgVt6XVp+0K7Wg4fyCE0IsCP0UldYGr7dqOEhAQrKSmp0LH169fTuXNnP0VUPu3atSMpKYmoqCh/h1Kj6tLPSEREREREpL749LlV7NmaBsC4584mtEEgAIf3Z/Pug8tp3akRl97ZzZ8hSi1hjFllWVbCsce19UxERERERESknmjaNsL3+ugtaJmp3ocjdUg4qcZjkrpFW8+qWUpKynHHnnzySV/voQIjR47kgQceqJI133rrLV566aVCx/r06cO0adOqZH4RERERERGpnSz3kV1Dv3z7JxFRIYD3iWcADZuH+iUuqTuUKPKDBx54oMqSQkUZN24c48aNq7b5RUREREREpHbyHNVeZs2iXcedDwi012Q4Ugdp65mIiIiIiIhIPXF0RVGzthH848W+DPu/Iz2JHIFKA0jJVFEkIiIiIiIiUk9YniOJInuAjcBgB41bhmOzGYzN+JpbixRHiSIRERERERGResJzVKLIZjMABIcFcNPUfgDYHaookpIpUSQiIiIiIiJSTxydKDL5iSJQgkjKTr8pFZSSkkLXrl3LNPbRRx9lypQpAIwdO5ZPPvmk2uJ66qmnqm1uERERERERqd2O3nrWrG2EHyORukqJojrI7XYXe06JIhERERERkROXx23RuGUYl03oRsKQaH+HI3VQnd96tuepp8hdv6FK5wzq3Inm999f5vFbt25lxIgRzJgxg0ceeYR9+/YRGhrKf//7Xzp16lTkNQsWLOCVV15h9uzZAHz//fdMnz6dzz77rMjx4eHh3HXXXcybN4///Oc/pKSkMHXqVPLy8ujVqxevvvoqDzzwANnZ2cTHx3P66afz2muvccUVV7Bz507cbjcPPfQQV155Zfk/EBEREREREakTLAtsdkOr0xr5OxSpo1RRVEl//PEHI0aM4K233uL+++/n5ZdfZtWqVUyZMoVbbrml2OvOPfdc1q9fz759+wB46623GDduXLHjMzMz6dq1KytWrKBJkyYkJiaydOlSkpOTsdvtvPfeezzzzDOEhISQnJzMe++9x7fffkvLli1ZvXo1a9eu5YILLqjy+xcREREREZHaw+O2fE2sRSqizlcUlafyp6rt27ePSy+9lE8//ZS2bduybNkyRo4c6Tufm5tb7LXGGK699lpmzZrFuHHjWL58Oe+8806x4+12OyNGjAC81UirVq2iR48eAGRnZ9OsWbPjromJieHuu+9m4sSJXHzxxZxzzjkVvVURERERERGp5SzLYvvvBzgpuoG/Q5E6rM4nivwpMjKSNm3asHTpUtq0aUPDhg1JTk4u8/Xjxo3jkksuITg4mJEjR+JwFP/jCA4Oxm63A94//jFjxvD000+XOH/Hjh1ZtWoVX3/9Nffddx+DBg3i4YcfLnN8IiIiIiIiUnlJX28jOCyArv1aV+s6mal5gLeqSKSitPWsEgIDA/n888955513+Oqrr4iOjubjjz8GvMmc1atXl3h9y5YtadmyJZMnT2bs2LFlXnfgwIF88skn7N27F4CDBw/y559/AhAQEIDT6QRg9+7dhIaGcs0113D33Xfzyy+/VOAuRUREREREpDJWzNnGog824nZ7qnUdt8v74KPYc6s3ISX1myqKKiksLIyvvvqK888/n2uuuYY33niDyZMn43Q6ueqqq4iLiyvx+tGjR7Nv3z66dOlS5jW7dOnC5MmTGTRoEB6Ph4CAAKZNm0bbtm256aabiI2NpXv37lx33XXcc8892Gw2AgICmD59emVvV0RERERERCrIme3GHl599Rpup7eSyO5QTYhUnLGs2l2SlpCQYCUlJRU6tn79ejp37uyniKrWbbfdRrdu3bjhhhv8HUqVqk8/IxERERERkcqYNv4HAMY+24ewyKBqW2ffjnQ+evJnLrw5hvbdmlbbOlI/GGNWWZaVcOxxVRT50RlnnEFYWBj/+c9//B2KiIiIiIiIVIOjizOqu3eQ2+Xd2mZz6KlnUnFKFPnRqlWrjjvWq1ev456W9u677xITE1NTYYmIiIiIiEgVObQny/faU809ijwubT2TylOiqJZZsWKFv0MQERERERGRKpKTked77XaVXlGUPH87gSEOuvRpWeyYpK9TWDFna7HnlSiSylCiSERERERERKSa5GW7fa/LsvVs6SebAUpMFO3fmUFweABd+7UqdDxpbgoAAUH2CkQq4qVEkYiIiIiIiEg1yct1+V5X1dYzt8tDWMMgel3SvtDxuHPbsHPDIaJah1fJOnJiUqJIREREREREpJpkpR3ZeubMdZcwsuzcLk+R28uCwwI49YxmVbKGnLi0cVFERERERESkilgei7ycI1VE6QdzfK/3bE0r8zwlJZXcTg+OAP07L9VDv1kVlJKSQteuXcs09tFHH2XKlCkAjB07lk8++aTa4nrqqacqdN2NN97IunXrqjgaERERERGRE0vSNyn8987FpO3LBiAv20VQmHczjzElP7be8hzpYZST6Sx2nLeiqOS5RCqqzm89++mjjezfkVGlc0a1CeecKzpW6ZxVye12Y7cX3Zzsqaee4v777y/3nK+//nplwxIRERERETnh7Vh/EICdGw4S2bQVzlw3IeGB5Ga6cLtK7lHkch4578wpuqLIsiwO7MygdadGVRe0yFFUUVQFtm7dSrdu3VixYgUXXHABZ5xxBueccw4bNmwo9poFCxYwbNgw3/vvv/+e4cOHFzs+PDychx9+mF69erF8+XJmzZpFz549iY+P5+abb8btdjNp0iSys7OJj49n9OjRZGZmMmTIEOLi4ujatSuJiYnFzt+/f3+SkpJwu92MHTuWrl27EhMTwwsvvABAcnIyZ555JrGxsQwbNoxDhw5V4JMSERERERGp3xo1DwO8W8f2bEtjyy/7CAxxYLObQomgohy93cyZV3Si6ODuTFxODx5P6U9QE6mIOl9R5O/Knz/++IOrrrqKt956i//7v/9jxowZdOjQgRUrVnDLLbfwww8/FHndueeey6233sq+ffto2rQpb731FuPGjSt2nczMTLp27crjjz/O+vXrefbZZ1m6dCkBAQHccsstvPfeezzzzDO88sorJCcnA/Dpp5/SsmVL5s6dC0BaWun7YZOTk9m1axdr164FIDU1FYDrrruOl19+mX79+vHwww/z2GOP8eKLL5b9gxIRERERETkB2GzeLWGuPDe/fPsnAM2jG3BoTybuciSKPnkmiUbNQ48b06xtA8D7hDOR6lDnE0X+tG/fPi699FI+/fRT2rZty7Jlyxg5cqTvfG5ubrHXGmO49tprmTVrFuPGjWP58uW88847xY632+2MGDEC8FYjrVq1ih49egCQnZ1Ns2bHd7aPiYnh7rvvZuLEiVx88cWcc845pd5T+/bt2bp1K7fffjtDhgxh0KBBpKWlkZqaSr9+/QAYM2ZMofsUERERERERr4I6H2eeB7fLQ7O2EZxzZUc2Jf3NgV0ZbPx5T6Hxe7YcJiDYzlmXneJrgt3wpFCatDr+Efc71h3gjz3e68MaBlXrfciJS4miSoiMjKRNmzYsXbqUNm3a0LBhQ181T1mMGzeOSy65hODgYEaOHInDUfyPIzg42NeXyLIsxowZw9NPP13i/B07dmTVqlV8/fXX3HfffQwaNIiHH364xGsaNWrE6tWrmTdvHtOmTeOjjz7ybT8TERERERGRkhX0Idr66z7CGwVhs3s7voRGBrFzwyF2bii6jceZl7Yn63AeAOde24kWpzY8bszb9y8lL793UWhkYDVEL6JEUaUEBgby+eefM3jwYMLDw4mOjubjjz9m5MiRWJbFb7/9RlxcXLHXt2zZkpYtWzJ58mS+//77Mq87cOBALr30UiZMmECzZs04ePAg6enptG3bloCAAJxOJwEBAezevZvGjRtzzTXXEB4ezsyZM0ude//+/QQGBjJixAhOOeUUxo4dS2RkJI0aNeKnn37inHPO4d133/VVF4mIiIiIiMgRrvzeQoEhjkJPJxt+d3cyU4/fdfLLvD/ZsHwPbqeHnHRvoigkougk0NmXd2Br8j56DIkmJFyJIqkeShRVUlhYGF999RXnn38+11xzDW+88QaTJ0/G6XRy1VVXlZgoAhg9ejT79u2jS5cuZV6zS5cuTJ48mUGDBuHxeAgICGDatGm0bduWm266idjYWLp37851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aBLMGRe08x3btyOdBTPXA2AMOAJUdyH1kxJFIiIiIiIiIvl2bTzE7z/tBiD23Da+41tW7QWgdadGnNarOcZm/BKfSHVTokhEREREREQk3+fP/+p7PfeV1b7XKWsOYA+wMfgfXQkOC/BHaCI1QokiEREREREREcCyrELv0/ZnAxA3sA3x57UhINhBUIj+jZb6Tb/hIiIiIiIiIhx5slmBrNQ8wPuEs/BGwf4ISaTGqfuWiIiIiIiICODMdfteB4cF4PF4K4yCQlVjIScOJYpEREREREREAGfOkURRSMSRPkShDQL9EY6IXygtKiIiIiIiIkLhiqIB13ZmzY87CAoLoGWHhv4LSqSGKVEkIiIiIiIiQuFEUYtTImlxSqQfoxHxD209ExEREREREQF+mfcnAMP+r5ufIxHxHyWKRERERERERIBtq/cD3qeciZyotPVMREREREREBDi5S2OyM5yENwr2dygifqOKIhERERERERHA7fLgCNS/yXJi01+AiIiIiIiICOB2Wdgd+jdZTmz6CxARERERERHBW1GkRJHUJ7mbN7Nv6lQsyyrzNfoLEBEREREREUGJIql/dtx0M/tfnY770KEyX6O/ABERERERERHA47awOYy/wxCpMpbHA4AnPb3M1yhRJCIiIiIiIgK48tw4Au3+DkOkytgjwgE48MabvmOW08n+//632GuUKBIREREREREB8nLcBAYpUST1R0h8NwDcaWm+Y57sbPb95/lir1GiSERERERERE54lmXhzHEREKxEkdRu7vR0/jgjgczly0sda3ncAKTPm4crv0+RJyenxGuUKBIREREREZET0uofdrBu6W4AXHkeLAsCgx1+jkqkZDlr1+LJzGT/jP9X6lgrJ9f3etull7HloiFkJyWVeI3+AkREREREROSEtOSjTQA0bBZK1uE8AEIiAv0ZkkipCiqCPFlZWHl5mMDif2c9GRkEdexIaK9euA/s5/DX35C5/H8lzq9EkYiIiIiIiJzQZv/nF9/ryKYhfoxEpHQH334HgJw1a/jr4Udo+czTxY51Hz6MvUljmj9wP5bbzeGvv8G1d2+J8ytRJCIiIiIiInWOx2Px6XOraNO5EWdeekqF52nSOpw+l58KQECgnZOiG1RViCLVIut/RyqC0r/7DkpKFKUfJqip9+/D2O2YkBAyFi0qcX71KBIREREREZE6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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ret_names = ['prets',\n", + " 'lin_meta_rets', 'lin_iso_rets',\n", + " 'meta_rets', 'meta_iso_rets',\n", + " 'ecdf_rets', 'ecdf_iso_rets',\n", + " 'dp_rets', 'dp_rets_iso',\n", + " 'lops_rets', 'lops_rets_iso',\n", + " 'sop_rets', 'sop_rets_iso',\n", + " 'kelly_rets', 'kelly_rets_iso']\n", + "\n", + "# Plot returns\n", + "(data_train[ret_names] + 1).cumprod().plot(figsize=(20, 10))\n", + "plt.title('Equity Curve')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "id": "d01abf7c-7f10-4960-9662-0f48f46745fc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "prets 0.313568\n", + "lin_meta_rets 1.162054\n", + "lin_iso_rets 1.288651\n", + "meta_rets 0.883557\n", + "meta_iso_rets 1.173796\n", + "ecdf_rets 1.882293\n", + "ecdf_iso_rets 1.847072\n", + "dp_rets 2.462148\n", + "dp_rets_iso 2.454941\n", + "lops_rets 2.480290\n", + "lops_rets_iso 2.532401\n", + "sop_rets 2.532871\n", + "sop_rets_iso 2.578329\n", + "kelly_rets 1.847526\n", + "kelly_rets_iso 2.381219\n", + "dtype: float64" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sharpe = data_train[ret_names].mean() / data_train[ret_names].std() * np.sqrt(252)\n", + "sharpe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aef0136f-b4e6-47ce-a3f2-f2326168d462", + "metadata": {}, + "outputs": [], + "source": [ + "lin_rets, lin_iso_rets,\n", + "kelly_rets, kelly_iso_rets, \n", + "lop_rets, lop_iso_rets.\n", + "dp_rets, dp_iso_rets\n", + "ecdf_rets, ecdf_iso_rets\n", + "sop_rets, sop_rets_iso\n", + "prets = Primary\n", + "rets = BAH" + ] + }, + { + "cell_type": "code", + "execution_count": 175, + "id": "a527f8a3-f32c-4cd5-af80-200b16676f45", + "metadata": {}, + "outputs": [], + "source": [ + "def tz(p):\n", + " z = (p-0.5) / np.sqrt(p*(1-p))\n", + " return z" + ] + }, + { + "cell_type": "code", + "execution_count": 180, + "id": "4dd0f2a4-13f9-4e74-b648-70fc273da967", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "49.99249968748088" + ] + }, + "execution_count": 180, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tz(0.9999)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "86be2029-4827-4087-8d69-cbef007e3182", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\jacqu\\.conda\\envs\\mla\\lib\\site-packages\\pandas\\core\\arraylike.py:364: RuntimeWarning: divide by zero encountered in log\n", + " result = getattr(ufunc, method)(*inputs, **kwargs)\n", + "C:\\Users\\jacqu\\.conda\\envs\\mla\\lib\\site-packages\\pandas\\core\\arraylike.py:364: RuntimeWarning: invalid value encountered in log\n", + " result = getattr(ufunc, method)(*inputs, **kwargs)\n" + ] + }, + { + "data": { + "text/plain": [ + "1995-01-21 NaN\n", + "1995-01-22 -inf\n", + "1995-01-23 -3.529999\n", + "1995-01-24 -inf\n", + "1995-01-25 -inf\n", + " ... \n", + "2011-05-27 -inf\n", + "2011-05-28 -inf\n", + "2011-05-29 -inf\n", + "2011-05-30 -4.826745\n", + "2011-05-31 -3.739111\n", + "Name: kelly_rets, Length: 5975, dtype: float64" + ] + }, + "execution_count": 186, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 191, + "id": "972aec63-5608-44f7-b148-eaf41c3f3e9e", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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06ZNpKenM2DAAIIgiHY5nVoYhuTn57Np0yYGDhzYrHucliVJkiRJUidXWVlJdna2wU47EAQB2dnZB9RFZbgjSZIkSZIMdtqRA/21MNyRJEmSJEnqwAx3JEmSJElSVJ144ok899xzTc795je/4Ytf/CL//e9/ufXWW1vkfUpLS7nmmmsYPHgwo0eP5vjjj2f27Nkt8uzd/vznP/N///d/LfrM/XFBZUmSJEmSFFWXX345Dz/8MGeccUbk3MMPP8xtt93GtGnTOP/881vkfa6++moGDhzIypUriYmJYc2aNSxdurRFnh1Ndu5IkiRJkqSouvjii3nyySepqqoCYN26dWzZsoXjjjuuSSfMVVddxVe+8hWOOeYYBg0axL///e/IM2677TaOOuooxo0bx4033rjHe6xevZrZs2dzyy23EBPTEIcMGjSIc845B4Dbb7+dMWPGMGbMGH7zm99E6hgxYgSf+tSnGDduHBdffDHl5eUADBgwgJ07dwIwd+5cTjzxxD3e83//+x9HH300EyZM4NRTT2X79u0AvPbaa4wfP57x48czYcIESkpKDunrZ+eOJEmSJEmK+NH/3mXJluIWfeaoXhnceN7ofV7Pzs5m8uTJPPvss1xwwQU8/PDDfOxjH9vrwsJbt25lxowZLFu2jPPPP5+LL76Y559/npUrVzJnzhzCMOT8889n+vTpHH/88ZH73n33XcaPH09sbOwez5w3bx4PPPAAs2fPJgxDjj76aE444QS6du3K8uXLue+++zj22GP5zGc+wx/+8Ae+8Y1vNOtzH3fcccyaNYsgCLj33nv5xS9+wa9+9St++ctfcuedd3LsscdSWlpKUlJSs563L3buSJIkSZKkqNs9NQsapmRdfvnlex134YUXEhMTw6hRoyKdMM8//zzPP/88EyZM4Mgjj2TZsmWsXLmy2e89Y8YMPvKRj5CamkpaWhoXXXQRr7/+OgB9+/bl2GOPBeCKK65gxowZzX7upk2bOOOMMxg7diy33XYb7777LgDHHnss119/PXfccQeFhYXExR1a742dO5IkSZIkKeLDOmxa04UXXsj111/P22+/TUVFBUceeeRexyUmJkZeh2EY+fcNN9zANddcs8/njx49mgULFlBfXx+ZlvXB5+zNB7uHdh/HxcVRX18PQGVl5V7v/fKXv8z111/P+eefz6uvvspNN90E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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "np.log((data_train['ecdf_rets'] + 1).cumprod()).plot(figsize=(20, 10))\n", + "plt.title('Cum Returns Curve')\n", + "plt.legend(['Vine Copulas'])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6bf241cd-11b2-4583-b5a5-10f5cbd23d51", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 55305ccb9334d71915b3d7ec0715e0a9dca15672 Mon Sep 17 00:00:00 2001 From: MichaelMeyer01 <105858978+MichaelMeyer01@users.noreply.github.com> Date: Wed, 31 Aug 2022 17:38:08 +0200 Subject: [PATCH 7/8] Rename with_calibration.py to calibration_with_kelly.py --- .../{with_calibration.py => calibration_with_kelly.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename calibration_and_position_sizing/{with_calibration.py => calibration_with_kelly.py} (100%) diff --git a/calibration_and_position_sizing/with_calibration.py b/calibration_and_position_sizing/calibration_with_kelly.py similarity index 100% rename from calibration_and_position_sizing/with_calibration.py rename to calibration_and_position_sizing/calibration_with_kelly.py From 0e498dd032c005bd426f38ac0e129dc956a8ad63 Mon Sep 17 00:00:00 2001 From: Jacques Joubert Date: Mon, 12 Sep 2022 11:47:00 +0100 Subject: [PATCH 8/8] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 19323ab..1484993 100644 --- a/README.md +++ b/README.md @@ -16,4 +16,4 @@ Working on this paper ## Ensemble Model Selection Framework for Meta-Labeling (Working Paper) -Working on this paper +This dissertation investigates the development of a framework to select machine learning models for meta-labeling and how ensemble learning can be incorporated. Meta-labeling consists of a primary model generating classifications and a secondary model labelling those classifications in terms of their correctness. For the meta-labeling ensembles, different models are selected and compared in the experiments. Since how to select those models is the research subject, the aim is to provide a guide to combining secondary models with ensemble learning.