def eval_scenario(returns_params, backtest_params, portfolio_params): excess_returns = data.load_excess_returns(**returns_params) # Setup backtest return splits. training_returns, testing_returns = ( backtest.split_returns(excess_returns, **backtest_params)) results = list() period = 0 for er_train, er_test in zip(training_returns, testing_returns): sol = mvportfolio.portfolio( er_train, **portfolio_params) portfolio = sol returns = er_test.dot(portfolio) result = {'portfolio': array2str(portfolio)} result['test_returns'] = array2str(returns) result['period'] = period period += 1 results.append(result) logging.debug('period = {0}'.format(period)) return {'kwargs': {'returns': returns_params, 'backtest': backtest_params, 'portfolio': portfolio_params}, 'results': results}