def _get_combined_forecast(system, instrument_code, this_stage): this_stage.log.msg("Calculating combined forecast for %s" % (instrument_code), instrument_code=instrument_code) forecast_weights = this_stage.get_forecast_weights(instrument_code) rule_variation_list = list(forecast_weights.columns) forecasts = this_stage.get_all_forecasts(instrument_code, rule_variation_list) forecast_div_multiplier = this_stage.get_forecast_diversification_multiplier( instrument_code) forecast_cap = this_stage.get_forecast_cap() # multiply weights by forecasts combined_forecast = multiply_df(forecast_weights, forecasts) # sum combined_forecast = combined_forecast.sum( axis=1).to_frame("comb_forecast") # apply fdm # (note in this simple version we aren't adjusting FDM if forecast_weights change) forecast_div_multiplier = forecast_div_multiplier.reindex( forecasts.index, method="ffill") raw_combined_forecast = multiply_df( combined_forecast, forecast_div_multiplier) combined_forecast = apply_cap(raw_combined_forecast, forecast_cap) return combined_forecast
def _get_combined_forecast(system, instrument_code, this_stage ): forecast_weights=this_stage.get_forecast_weights(instrument_code) rule_variation_list=list(forecast_weights.columns) forecasts=[this_stage.get_capped_forecast(instrument_code, rule_variation_name) for rule_variation_name in rule_variation_list] forecast_div_multiplier=this_stage.get_forecast_diversification_multiplier(instrument_code) forecast_cap=this_stage.get_forecast_cap() forecasts=pd.concat(forecasts, axis=1) ## multiply weights by forecasts combined_forecast=multiply_df(forecast_weights, forecasts) ## sum combined_forecast=combined_forecast.sum(axis=1).to_frame("comb_forecast") ## apply fdm ## (note in this simple version we aren't adjusting FDM if forecast_weights change) forecast_div_multiplier=forecast_div_multiplier.reindex(forecasts.index, method="ffill") raw_combined_forecast=multiply_df(combined_forecast,forecast_div_multiplier) combined_forecast=apply_cap(raw_combined_forecast, forecast_cap) return combined_forecast