Last active
October 4, 2024 07:13
-
-
Save robcarver17/3d0f13e49daea396b209a19c6230966f to your computer and use it in GitHub Desktop.
Revisions
-
robcarver17 revised this gist
Jan 13, 2020 . 1 changed file with 4 additions and 4 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -46,28 +46,28 @@ for lookback_days in list_of_lookbacks: skew_abs = TradingRule(factor_trading_rule, data=['rawdata.get_demeanded_factor_value'], other_args=dict(smooth = smooth, _factor_name="neg_skew", _demean_method="historic_average_factor_value_all_assets", _lookback_days = lookback_days)) all_trading_rules["skew_abs_%d" % lookback_days] = skew_abs skew_ts = TradingRule(factor_trading_rule, data=['rawdata.get_demeanded_factor_value'], other_args=dict(smooth = smooth, _factor_name="neg_skew", _demean_method="average_factor_value_for_instrument", _lookback_days = lookback_days)) all_trading_rules["skew_ts_%d" % lookback_days] = skew_ts skew_cs = TradingRule(factor_trading_rule, data=['rawdata.get_demeanded_factor_value'], other_args=dict(smooth = smooth, _factor_name="neg_skew", _demean_method="current_average_factor_values_over_all_assets", _lookback_days = lookback_days)) all_trading_rules["skew_cs_%d" % lookback_days] = skew_cs skew_rv = TradingRule(factor_trading_rule, data=['rawdata.get_demeanded_factor_value'], other_args=dict(smooth = smooth, _factor_name="neg_skew", _demean_method="average_factor_value_in_asset_class_for_instrument", _lookback_days = lookback_days)) all_trading_rules["skew_rv_%d" % lookback_days] = skew_rv -
robcarver17 renamed this gist
Jan 8, 2020 . 1 changed file with 0 additions and 0 deletions.There are no files selected for viewing
File renamed without changes. -
robcarver17 created this gist
Jan 8, 2020 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,172 @@ import numpy as np from systems.provided.futures_chapter15.basesystem import * import numpy as np from syscore.algos import robust_vol_calc ## test kurtosis AND skew with trading rules # The trading rules def factor_trading_rule(demean_factor_value, smooth=90): vol =robust_vol_calc(demean_factor_value) normalised_factor_value = demean_factor_value / vol smoothed_normalised_factor_value = normalised_factor_value.ewm(span=smooth).mean() return smoothed_normalised_factor_value def conditioned_factor_trading_rule(demean_factor_value, condition_demean_factor_value, smooth=90): vol = robust_vol_calc(demean_factor_value) normalised_factor_value = demean_factor_value / vol sign_condition = condition_demean_factor_value.apply(np.sign) sign_condition_resample = sign_condition.reindex(normalised_factor_value.index).ffill() conditioned_factor = normalised_factor_value *sign_condition_resample smoothed_conditioned_factor = conditioned_factor.ewm(span=smooth).mean() return smoothed_conditioned_factor list_of_lookbacks=[7,14,30,90,180,365] temp_system = futures_system() existing_trading_rules = temp_system.config.trading_rules all_trading_rules = existing_trading_rules temp_config = temp_system.config from systems.forecasting import TradingRule for lookback_days in list_of_lookbacks: smooth = int(np.ceil(lookback_days/4.0)) # The skew rules skew_abs = TradingRule(factor_trading_rule, data=['rawdata.get_demeanded_factor_value'], other_args=dict(smooth = smooth, _factor_name="skew", _demean_method="historic_average_factor_value_all_assets", _lookback_days = lookback_days)) all_trading_rules["skew_abs_%d" % lookback_days] = skew_abs skew_ts = TradingRule(factor_trading_rule, data=['rawdata.get_demeanded_factor_value'], other_args=dict(smooth = smooth, _factor_name="skew", _demean_method="average_factor_value_for_instrument", _lookback_days = lookback_days)) all_trading_rules["skew_ts_%d" % lookback_days] = skew_ts skew_cs = TradingRule(factor_trading_rule, data=['rawdata.get_demeanded_factor_value'], other_args=dict(smooth = smooth, _factor_name="skew", _demean_method="current_average_factor_values_over_all_assets", _lookback_days = lookback_days)) all_trading_rules["skew_cs_%d" % lookback_days] = skew_cs skew_rv = TradingRule(factor_trading_rule, data=['rawdata.get_demeanded_factor_value'], other_args=dict(smooth = smooth, _factor_name="skew", _demean_method="average_factor_value_in_asset_class_for_instrument", _lookback_days = lookback_days)) all_trading_rules["skew_rv_%d" % lookback_days] = skew_rv # The skew conditioned on kurtosis rules #{(skew - Average skew) / Sigma [Skew]} #* sign (Kurtosis - average kurtosis) skewK_abs = TradingRule(conditioned_factor_trading_rule, data=['rawdata.get_demeanded_factor_value', 'rawdata.get_demeanded_factor_value'], other_args=dict(smooth = smooth, _factor_name="skew", _demean_method="historic_average_factor_value_all_assets", _lookback_days = lookback_days, __factor_name="kurtosis", __demean_method="historic_average_factor_value_all_assets", __lookback_days = lookback_days )) all_trading_rules["skewK_abs_%d" % lookback_days] = skewK_abs skewK_ts = TradingRule(conditioned_factor_trading_rule, data=['rawdata.get_demeanded_factor_value', 'rawdata.get_demeanded_factor_value'], other_args=dict(smooth = smooth, _factor_name="skew", _demean_method="average_factor_value_for_instrument", _lookback_days = lookback_days, __factor_name="kurtosis", __demean_method="average_factor_value_for_instrument", __lookback_days = lookback_days )) all_trading_rules["skewK_ts_%d" % lookback_days] = skewK_ts skewK_cs = TradingRule(conditioned_factor_trading_rule, data=['rawdata.get_demeanded_factor_value', 'rawdata.get_demeanded_factor_value'], other_args=dict(smooth = smooth, _factor_name="skew", _demean_method="current_average_factor_values_over_all_assets", _lookback_days = lookback_days, __factor_name="kurtosis", __demean_method="current_average_factor_values_over_all_assets", __lookback_days = lookback_days )) all_trading_rules["skewK_cs_%d" % lookback_days] = skewK_cs skewK_rv = TradingRule(conditioned_factor_trading_rule, data=['rawdata.get_demeanded_factor_value', 'rawdata.get_demeanded_factor_value'], other_args=dict(smooth = smooth, _factor_name="skew", _demean_method="average_factor_value_in_asset_class_for_instrument", _lookback_days = lookback_days, __factor_name="kurtosis", __demean_method="average_factor_value_in_asset_class_for_instrument", __lookback_days = lookback_days )) all_trading_rules["skewK_rv_%d" % lookback_days] = skewK_rv # Now we reverse condition kurtS_abs = TradingRule(conditioned_factor_trading_rule, data=['rawdata.get_demeanded_factor_value', 'rawdata.get_demeanded_factor_value'], other_args=dict(smooth = smooth, _factor_name="kurtosis", _demean_method="historic_average_factor_value_all_assets", _lookback_days = lookback_days, __factor_name="skew", __demean_method="historic_average_factor_value_all_assets", __lookback_days = lookback_days )) all_trading_rules["kurtS_abs_%d" % lookback_days] = kurtS_abs kurtS_ts = TradingRule(conditioned_factor_trading_rule, data=['rawdata.get_demeanded_factor_value', 'rawdata.get_demeanded_factor_value'], other_args=dict(smooth = smooth, _factor_name="kurtosis", _demean_method="average_factor_value_for_instrument", _lookback_days = lookback_days, __factor_name="skew", __demean_method="average_factor_value_for_instrument", __lookback_days = lookback_days )) all_trading_rules["kurtS_ts_%d" % lookback_days] = kurtS_ts kurtS_cs = TradingRule(conditioned_factor_trading_rule, data=['rawdata.get_demeanded_factor_value', 'rawdata.get_demeanded_factor_value'], other_args=dict(smooth = smooth, _factor_name="kurtosis", _demean_method="current_average_factor_values_over_all_assets", _lookback_days = lookback_days, __factor_name="skew", __demean_method="current_average_factor_values_over_all_assets", __lookback_days = lookback_days )) all_trading_rules["kurtS_cs_%d" % lookback_days] = kurtS_cs kurtS_rv = TradingRule(conditioned_factor_trading_rule, data=['rawdata.get_demeanded_factor_value', 'rawdata.get_demeanded_factor_value'], other_args=dict(smooth = smooth, _factor_name="kurtosis", _demean_method="average_factor_value_in_asset_class_for_instrument", _lookback_days = lookback_days, __factor_name="skew", __demean_method="average_factor_value_in_asset_class_for_instrument", __lookback_days = lookback_days )) all_trading_rules["kurtS_rv_%d" % lookback_days] = kurtS_rv