コード例 #1
0
ファイル: mv_backtest.py プロジェクト: venuur/dissertation
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}