Ejemplo n.º 1
0
        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
Ejemplo n.º 2
0
        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