Beispiel #1
0
def run_scenario(assets, sigma, runid, prices, results):
    excess_returns = rr.calc_excess_returns(prices,
                                            msv.default_parameters.risk_free_rate)
    is_y_feasible = True
    y = 0.
    
    result_path = results + "/" + runid
    filename = result_path + 'out'
    assets = map(int, assets.split())

    write_portfolio_header(filename, assets)
    write_time_file_header(filename)
    
    scenario = Scenario(assets, excess_returns)

    # Search from y=0. until infeasible, possibly skipping the
    # semivar_bound value entirely if y=0. is infeasible.
    while is_y_feasible:
        try:
            t0 = time.time()
            u_star = calc_dcc_portfolio(y, sigma, scenario.train, scenario.model)
        except ZeroDivisionError as e:
            print 'Divide by Zero Error: {0}'.format(e.message)
            print 'Skipping y = {0}, sigma = {1}'.format(y, sigma)
            is_y_feasible = False
        except np.linalg.linalg.LinAlgError as e:
            print 'Linear Algebra Error: {0}'.format(e.message)
            print 'Skipping y = {0}, sigma = {1}'.format(y, sigmaf)
            is_y_feasible = False
        else:
            t1 = time.time()
            run_time = t1 - t0
            print 'u_star = %r' % u_star
            print 'Run time = %r' % run_time
            append_portfolio(filename, assets, u_star, y, sigma)
            append_time_file(filename, assets, y, sigma, run_time)
            y = log_increment(y)
            is_y_feasible = y < 100.
Beispiel #2
0
import numpy.linalg as la

def load_output(directory):
    output = list()
    files = os.listdir(directory)
    for filename in files:
        if re.search('out$', filename):
            output.append(pd.read_csv(os.path.join(directory,filename)))
    return output

results = './results/20160320'

p = load_output(results)

excess_returns = rr.calc_excess_returns('./data/raw/yahoo/jiang_guan_daily_close_29assets.csv',
                                        1.0,
                                        use_monthly=True)


metrics = list()
i = 0
for pi in p:
    print i
    metrics.append(dict())
    metrics[i]['assets'] = map(int, pi.assets[0].split(' '))
    metrics[i]['scenario'] = scen.Scenario(metrics[i]['assets'], excess_returns)
    metrics[i]['mv'] = mv.portfolio(metrics[i]['scenario'].train, 1.0)
    metrics[i]['dcc'] = pi[['u({0})'.format(j) for j in range(4)]].values
    metrics[i]['dcc_train_mean'] = np.apply_along_axis(
        lambda x: ps.mean(x, metrics[i]['scenario'].train), 1, metrics[i]['dcc'])
    opt_idx = np.argmax(metrics[i]['dcc_train_mean'])