def dcc_scenarios(parameter_ids, experiment_ids, backtest_ids):
    parameters = dataframe2json(db.load_dcc_parameters_by_id(parameter_ids))
    experiments = dataframe2json(db.load_experiments(experiment_ids))
    backtests = dataframe2json(db.load_backtests(backtest_ids))
    scenarios = list()    
    for p, e, b in itertools.product(parameters, experiments, backtests):
        p = copy.deepcopy(p)
        e = copy.deepcopy(e)
        b = copy.deepcopy(b)
        metadata = {'parameters_id': int(p['id']),
                    'experiment_id': int(e['id']),
                    'backtest_id': int(b['id'])}
        p.pop('id', None)
        e.pop('id', None)
        b.pop('id', None)
        e['start_date'] = str(e['start_date'])
        e['end_date'] = str(e['end_date'])
        # Numpy.int64 is not JSON serializable for some reason.
        b['trailing_periods'] = int(b['trailing_periods'])
        b['update_periods'] = int(b['update_periods'])
        scenario = {'metadata': metadata,
                    'portfolio': p,
                    'returns': e,
                    'backtest': b}
        scenarios.append(json.dumps(scenario))
    return scenarios
        df
        .apply(lambda row: {c: v for c,v in zip(df.columns, row)}, axis=1)
        .tolist())


# %%

dcc_params = db.load_dcc_parameters([0.0001, 0.01], [0.01, 0.1], 
                                    [0.0, 1.0], [1.0, 10.0])
dcc_params = dataframe2json(dcc_params)

mv_params = db.load_mv_parameters([0.001, 1.0])
mv_params = dataframe2json(mv_params)

experiment_ids = list(range(3, 23))
experiments = db.load_experiments(experiment_ids)
experiments = dataframe2json(experiments)

backtest = {'update_periods': 12,
            'trailing_periods': 120}

# %%

def dcc_scenarios(parameter_ids, experiment_ids, backtest_ids):
    parameters = dataframe2json(db.load_dcc_parameters_by_id(parameter_ids))
    experiments = dataframe2json(db.load_experiments(experiment_ids))
    backtests = dataframe2json(db.load_backtests(backtest_ids))
    scenarios = list()    
    for p, e, b in itertools.product(parameters, experiments, backtests):
        p = copy.deepcopy(p)
        e = copy.deepcopy(e)