Пример #1
0
def run_sim(start_date, end_date, daily_close):
    commod_list1 = [
        'm', 'y', 'l', 'ru', 'rb', 'p', 'cu', 'al', 'v', 'a', 'au', 'zn', 'ag',
        'i', 'j', 'jm'
    ]  #
    start_dates1 = [datetime.date(2010,10,1)] * 12 + \
                [datetime.date(2012,7,1), datetime.date(2013,11,26), datetime.date(2011,6,1),datetime.date(2013,5,1)]
    commod_list2 = [
        'ME', 'CF', 'TA', 'PM', 'RM', 'SR', 'FG', 'OI', 'RI', 'TC', 'WH', 'IF'
    ]
    start_dates2 = [datetime.date(2012, 2,1)] + [ datetime.date(2012, 6, 1)] * 2 + [datetime.date(2012, 10, 1)] + \
                [datetime.date(2013, 2, 1)] * 3 + [datetime.date(2013,6,1)] * 2 + \
                [datetime.date(2013, 10, 1), datetime.date(2014,2,1), datetime.date(2010,6,1)]
    commod_list = commod_list1 + commod_list2
    start_dates = start_dates1 + start_dates2
    #sim_list = ['m', 'y', 'l', 'ru', 'rb', 'TA', 'SR', 'CF','ME', 'RM', 'ag', 'au', 'cu', 'al', 'zn']
    sim_list = ['m', 'y', 'l', 'ru', 'rb', 'TA', 'SR', 'RM', 'cu']
    sdate_list = []
    for c, d in zip(commod_list, start_dates):
        if c in sim_list:
            sdate_list.append(d)

    test_folder = backtest.get_bktest_folder()
    file_prefix = test_folder + 'ChanBreak_'
    config = {
        'capital': 10000,
        'offset': 0,
        'trans_cost': 0.0,
        'unit': 1,
        'scaler': (0.5, 2),
        'channel_func': [dh.DONCH_H, dh.DONCH_L],
        'daily_close': daily_close,
        'file_prefix': file_prefix
    }
    freqs = [
        3,
        5,
    ]
    windows = [20, 40, 60, 120, 270]
    for asset, sdate in zip(sim_list, sdate_list):
        config['marginrate'] = (backtest.sim_margin_dict[asset],
                                backtest.sim_margin_dict[asset])
        config['rollrule'] = '-50b'
        config['nearby'] = 1
        config['start_min'] = 1600
        config['exit_min'] = 2055
        config['no_trade_set'] = range(300, 302) + range(1500, 1502) + range(
            2058, 2100)
        if asset in ['cu', 'al', 'zn']:
            config['nearby'] = 3
            config['rollrule'] = '-1b'
        elif asset in ['IF', 'IH', 'IC']:
            config['rollrule'] = '-2b'
            config['no_trade_set'] = range(1515, 1520) + range(2110, 2115)
        elif asset in ['au', 'ag']:
            config['rollrule'] = '-25b'
        elif asset in ['TF', 'T']:
            config['rollrule'] = '-20b'
            config['no_trade_set'] = range(1515, 1520) + range(2110, 2115)
        chanbreak(asset, start_date, end_date, freqs, windows, config)
Пример #2
0
def run_sim(start_date, end_date, daily_close = False):
    sim_list = [ 'IF']
    test_folder = backtest.get_bktest_folder()
    file_prefix = test_folder + 'Abberration_'
    if daily_close:
        file_prefix = file_prefix + 'daily_'
    config = {'capital': 10000,
              'offset': 0,
              'trans_cost': 0.0, 
              'unit': 1,
              'scaler': (2.0, 2.0),
              'file_prefix': file_prefix}        

    freqs = ['5Min', '15Min', '30Min', '60Min', 'D']
    windows = [35]
    for asset in sim_list:
        sdate =  backtest.sim_start_dict[asset]
        config['marginrate'] = ( backtest.sim_margin_dict[asset], backtest.sim_margin_dict[asset])
        config['rollrule'] = '-50b' 
        config['nearby'] = 1 
        config['start_min'] = 1505
        config['exit_min'] = 2055
        if asset in ['cu', 'al', 'zn']:
            config['nearby'] = 3
            config['rollrule'] = '-1b'
        elif asset in ['IF']:
            config['start_min'] = 1520
            config['exit_min'] = 2110
            config['rollrule'] = '-1b'    
        aberration( asset, max(start_date, sdate), end_date, freqs, windows, config)
Пример #3
0
def run_sim(start_date, end_date, daily_close = True):
    sim_list = [ 'rb','ru','TA','SR','CF','ag','au','cu','i','al','j','zn', 'a', 'jd']
    test_folder = backtest.get_bktest_folder()
    file_prefix = test_folder + 'RBreaker_'
    if daily_close:
        file_prefix = file_prefix + 'daily_'
    config = {'capital': 10000,
              'offset': 0,
              'trans_cost': 0.0,
              'close_daily': daily_close, 
              'unit': 1,
              'min_rng': 0.015, 
              'file_prefix': file_prefix}
    
    scenarios = [(0.25, 0.05, 0.15), (0.30, 0.06, 0.20), (0.35, 0.08, 0.25), (0.4, 0.1, 0.3)]
    freqs = ['1min', '3min', '5min']
    for asset in sim_list:
        sdate =  backtest.sim_start_dict[asset]
        config['marginrate'] = ( backtest.sim_margin_dict[asset], backtest.sim_margin_dict[asset])
        config['rollrule'] = '-50b' 
        config['nearby'] = 1 
        config['start_min'] = 1505
        config['exit_min'] = 2055
        if asset in ['cu', 'al', 'zn']:
            config['nearby'] = 3
            config['rollrule'] = '-1b'
        elif asset in ['IF']:
            config['start_min'] = 1520
            config['exit_min'] = 2110
            config['rollrule'] = '-1b'
        r_breaker( asset, max(sdate, start_date), end_date, scenarios, freqs, config)
    return
Пример #4
0
def run_sim(start_date, end_date, daily_close=False):
    sim_list = ['IF']
    test_folder = backtest.get_bktest_folder()
    file_prefix = test_folder + 'Abberration_'
    if daily_close:
        file_prefix = file_prefix + 'daily_'
    config = {
        'capital': 10000,
        'offset': 0,
        'trans_cost': 0.0,
        'unit': 1,
        'scaler': (2.0, 2.0),
        'file_prefix': file_prefix
    }

    freqs = ['5Min', '15Min', '30Min', '60Min', 'D']
    windows = [35]
    for asset in sim_list:
        sdate = backtest.sim_start_dict[asset]
        config['marginrate'] = (backtest.sim_margin_dict[asset],
                                backtest.sim_margin_dict[asset])
        config['rollrule'] = '-50b'
        config['nearby'] = 1
        config['start_min'] = 1505
        config['exit_min'] = 2055
        if asset in ['cu', 'al', 'zn']:
            config['nearby'] = 3
            config['rollrule'] = '-1b'
        elif asset in ['IF']:
            config['start_min'] = 1520
            config['exit_min'] = 2110
            config['rollrule'] = '-1b'
        aberration(asset, max(start_date, sdate), end_date, freqs, windows,
                   config)
Пример #5
0
def run_sim(start_date, end_date):
    #sim_list = [ 'm', 'y', 'l', 'p', 'rb', 'TA', 'SR', 'RM', 'cu', 'i', 'a', 'ag']
    sim_list = [ 'rb', 'p', 'IF' ]
    test_folder = backtest.get_bktest_folder()
    file_prefix = test_folder + 'ChanBreaktest_'
    config = {'capital': 10000,
              'offset': 0,
              'trans_cost': 0.0, 
              'unit': 1,
              'scaler': (0.5),
              'channel_func': [dh.DONCH_H, dh.DONCH_L],
              'pos_class': strat.ParSARTradePos,
              'pos_args': {'af': 0.02, 'incr': 0.02, 'cap': 0.2},
              'file_prefix': file_prefix}        
    freqs = [3, 5, 15]
    windows = [[20,10], [20,5], [40,20], [40,10], [60,30], [60, 15]]
    for asset in sim_list:
        sdate =  backtest.sim_start_dict[asset]
        config['marginrate'] = ( backtest.sim_margin_dict[asset], backtest.sim_margin_dict[asset])
        config['rollrule'] = '-50b' 
        config['nearby'] = 1 
        config['start_min'] = 1600
        config['exit_min'] = 2044
        if asset in ['cu', 'al', 'zn']:
            config['nearby'] = 3
            config['rollrule'] = '-1b'
        elif asset in ['IF']:
            config['start_min'] = 1520
            config['exit_min'] = 2059
            config['rollrule'] = '-1b'    
        chanbreak( asset, max(start_date, sdate), end_date, freqs, windows, config)
Пример #6
0
def run_sim(start_date, end_date, daily_close = False):
    commod_list1 = ['m','y','l','ru','rb','p','cu','al','v','a','au','zn','ag','i','j','jm'] #
    start_dates1 = [datetime.date(2010,10,1)] * 12 + \
                [datetime.date(2012,7,1), datetime.date(2013,11,26), datetime.date(2011,6,1),datetime.date(2013,5,1)]
    commod_list2 = ['ME', 'CF', 'TA', 'PM', 'RM', 'SR', 'FG', 'OI', 'RI', 'TC', 'WH','pp', 'IF', 'MA', 'TF','IH', 'IC']
    start_dates2 = [datetime.date(2012, 2,1)] + [ datetime.date(2012, 6, 1)] * 2 + [datetime.date(2012, 10, 1)] + \
                [datetime.date(2013, 2, 1)] * 3 + [datetime.date(2013,6,1)] * 2 + \
                [datetime.date(2013, 10, 1), datetime.date(2014,2,1), datetime.date(2014,4,1), datetime.date(2010,7,1)] + \
                [datetime.date(2015,1,3), datetime.date(2014,4,1), datetime.date(2015,5,1), datetime.date(2015,5,1)]
    commod_list = commod_list1 + commod_list2
    start_dates = start_dates1 + start_dates2
    sim_list = [ 'm','y', 'p', 'RM', 'a', 'ru', 'rb', 'ag', 'TA', 'MA',  'SR', 'CF', 'i', 'j', 'au', 'cu']
    sdate_list = []
    for c, d in zip(commod_list, start_dates):
        if c in sim_list:
            sdate_list.append(d)
    test_folder = backtest.get_bktest_folder()
    file_prefix = test_folder + 'test/DTMA10_split_'
    if daily_close:
        file_prefix = file_prefix + 'daily_'
    #file_prefix = file_prefix + '_'
    config = {'capital': 10000,
              'offset': 0,
              'MA_fast': 10,
              'MA_slow': 20,
              'trans_cost': 0.0,
              'close_daily': daily_close, 
              'unit': 1,
              'stoploss': 0.0,
              'min_range': 0.004,
              'file_prefix': file_prefix}
    
    scenarios = [ (0.5, 0, 0.5, 0.5), (0.6, 0, 0.5, 0.5), (0.7, 0, 0.5, 0.5), (0.8, 0, 0.5, 0.5), \
                  (0.9, 0, 0.5, 0.5), (1.0, 0, 0.5, 0.5), \
                  (0.5, 1, 0.5, 0.5), (0.6, 1, 0.5, 0.5), (0.7, 1, 0.5, 0.5), (0.8, 1, 0.5, 0.5), \
                  (0.9, 1, 0.5, 0.5), (1.0, 1, 0.5, 0.5), \
                  (0.4, 2, 0.5, 0.5), (0.5, 2, 0.5, 0.5), (0.6, 2, 0.5, 0.5), (0.7, 2, 0.5, 0.5), (0.8, 2, 0.5, 0.5), \
                  (0.25, 4, 0.5,0.5), (0.3, 4, 0.5, 0.5), (0.35,4, 0.5, 0.5), (0.4, 4,0.5, 0.5),  (0.45,4, 0.5, 0.5),\
                  (0.15, 8, 0.5, 0.5),(0.2, 8, 0.5, 0.5),(0.25, 8, 0.5, 0.5), (0.3, 8, 0.5, 0.5),\
                  ]
    for asset, sdate in zip(sim_list, sdate_list):
        config['marginrate'] = ( backtest.sim_margin_dict[asset], backtest.sim_margin_dict[asset]) 
        config['nearby'] = 1
        config['rollrule'] = '-50b'
        config['exit_min'] = 2112
        if asset in ['cu', 'al', 'zn']:
            config['nearby'] = 3
            config['rollrule'] = '-1b'
        elif asset in ['IF', 'IH', 'IC']:
            config['rollrule'] = '-2b'
        elif asset in ['au', 'ag']:
            config['rollrule'] = '-25b'
        elif asset in ['TF', 'T']:
            config['rollrule'] = '-20b'
        dual_thrust( asset, max(sdate, start_date), end_date, scenarios, config)
    return
Пример #7
0
def run_sim(start_date, end_date):
    commod_list1 = [
        'm', 'y', 'l', 'ru', 'rb', 'p', 'cu', 'al', 'v', 'a', 'au', 'zn', 'ag',
        'i', 'j', 'jm'
    ]  #
    start_dates1 = [datetime.date(2010,10,1)] * 12 + \
                [datetime.date(2012,7,1), datetime.date(2013,11,26), datetime.date(2011,6,1),datetime.date(2013,5,1)]
    commod_list2 = [
        'ME', 'CF', 'TA', 'PM', 'RM', 'SR', 'FG', 'OI', 'RI', 'TC', 'WH', 'IF'
    ]
    start_dates2 = [datetime.date(2012, 2,1)] + [ datetime.date(2012, 6, 1)] * 2 + [datetime.date(2012, 10, 1)] + \
                [datetime.date(2013, 2, 1)] * 3 + [datetime.date(2013,6,1)] * 2 + \
                [datetime.date(2013, 10, 1), datetime.date(2014,2,1), datetime.date(2010,6,1)]
    commod_list = commod_list1 + commod_list2
    start_dates = start_dates1 + start_dates2
    #sim_list = ['m', 'y', 'l', 'ru', 'rb', 'TA', 'SR', 'CF','ME', 'RM', 'ag', 'au', 'cu', 'al', 'zn']
    sim_list = [
        'm', 'y', 'l', 'TA', 'cu', 'ag', 'au', 'i', 'j', 'jm'
    ]  #[ 'IF','ru', 'rb', 'a', 'j', 'p','pp','zn', 'al', 'SR', 'ME', 'CF', 'RM']
    sdate_list = []
    for c, d in zip(commod_list, start_dates):
        if c in sim_list:
            sdate_list.append(d)
    test_folder = backtest.get_bktest_folder()
    file_prefix = test_folder + 'FisherSwing_'
    #if daily_close:
    #    file_prefix = file_prefix + 'daily_'
    config = {
        'capital': 10000,
        'offset': 0,
        'trans_cost': 0.0,
        'unit': 1,
        'scaler': (2.0, 2.0),
        'file_prefix': file_prefix
    }

    freqs = ['5Min', '15Min', '30Min', '60Min', '120Min']
    windows = [[30, 20, 6], [20, 15, 6]]
    for asset, sdate in zip(sim_list, sdate_list):
        config['marginrate'] = (backtest.sim_margin_dict[asset],
                                backtest.sim_margin_dict[asset])
        config['rollrule'] = '-50b'
        config['nearby'] = 1
        config['start_min'] = 1505
        config['exit_min'] = 2055
        if asset in ['cu', 'al', 'zn']:
            config['nearby'] = 3
            config['rollrule'] = '-1b'
        elif asset in ['IF']:
            config['start_min'] = 1520
            config['exit_min'] = 2110
            config['rollrule'] = '-1b'
        fisher_swing(asset, max(start_date, sdate), end_date, freqs, windows,
                     config)
Пример #8
0
def run_sim(start_date, end_date, daily_close = False):
    commod_list1 = ['m','y','l','ru','rb','p','cu','al','v','a','au','zn','ag','i','j','jm'] #
    start_dates1 = [datetime.date(2010,10,1)] * 12 + \
                [datetime.date(2012,7,1), datetime.date(2013,11,26), datetime.date(2011,6,1),datetime.date(2013,5,1)]
    commod_list2 = ['ME', 'CF', 'TA', 'PM', 'RM', 'SR', 'FG', 'OI', 'RI', 'TC', 'WH','pp', 'IF', 'MA', 'TF','IH', 'IC']
    start_dates2 = [datetime.date(2012, 2,1)] + [ datetime.date(2012, 6, 1)] * 2 + [datetime.date(2012, 10, 1)] + \
                [datetime.date(2013, 2, 1)] * 3 + [datetime.date(2013,6,1)] * 2 + \
                [datetime.date(2013, 10, 1), datetime.date(2014,2,1), datetime.date(2014,4,1), datetime.date(2010,7,1)] + \
                [datetime.date(2015,1,3), datetime.date(2014,4,1), datetime.date(2015,5,1), datetime.date(2015,5,1)]
    commod_list = commod_list1 + commod_list2
    start_dates = start_dates1 + start_dates2
    sim_list = ['m', 'RM', 'y', 'p', 'a', 'l', 'pp', 'TA', 'SR', 'rb', 'TF', 'i']
    sdate_list = []
    for c, d in zip(commod_list, start_dates):
        if c in sim_list:
            sdate_list.append(d)
    test_folder = backtest.get_bktest_folder()
    file_prefix = test_folder + 'test/DT_nontrade_'
    if daily_close:
        file_prefix = file_prefix + 'daily_'
    #file_prefix = file_prefix + '_'
    config = {'capital': 10000,
              'offset': 0,
              'trans_cost': 0.0,
              'close_daily': daily_close, 
              'unit': 1,
              'stoploss': 0.0,
              'min_range': 0.00,
              'file_prefix': file_prefix}
    
    scenarios = [ (0.6, 0, 0.5), (0.7, 0, 0.5), (0.8, 0, 0.5), (0.9, 0, 0.5), (1.0, 0, 0.5), (1.1, 0, 0.5), (1.2, 0, 0.5),\
                  (0.6, 1, 0.0), (0.7, 1, 0.0), (0.8, 1, 0.0), (0.9, 1, 0.0), (1.0, 1, 0.0), (1.1, 1, 0.0), (1.2, 1, 0.0),\
                  (0.25, 2, 0),  (0.3, 2, 0),   (0.35, 2, 0),  (0.4, 2, 0),   (0.45, 2, 0),  (0.5, 2, 0),   (0.6, 2, 0),  \
                  (0.2, 4, 0),   (0.25,4, 0),   (0.3,  4, 0),  (0.35,4, 0),   (0.4,  4, 0) ]
    for asset, sdate in zip(sim_list, sdate_list):
        config['marginrate'] = ( backtest.sim_margin_dict[asset], backtest.sim_margin_dict[asset]) 
        config['nearby'] = 1
        config['rollrule'] = '-50b'
        config['exit_min'] = 2055
        config['no_trade_set'] = range(300, 301) + range(1500, 1501) + range(2058, 2100)
        if asset in ['cu', 'al', 'zn']:
            config['nearby'] = 3
            config['rollrule'] = '-1b'
        elif asset in ['IF', 'IH', 'IC']:
            config['rollrule'] = '-2b'
            config['no_trade_set'] = range(1515, 1520) + range(2110, 2115)
        elif asset in ['au', 'ag']:
            config['rollrule'] = '-25b'
        elif asset in ['TF', 'T']:
            config['rollrule'] = '-20b'
            config['no_trade_set'] = range(1515, 1520) + range(2110, 2115)
        dual_thrust( asset, max(sdate, start_date), end_date, scenarios, config)
    return
Пример #9
0
def run_sim(start_date, end_date, trail_loss = False):
    test_folder = backtest.get_bktest_folder() + 'test/'
    postfix = '_'
    if trail_loss:
        postfix = 'Trail_'
    file_prefix = test_folder + 'Turtle' + postfix  
    config = {'capital': 10000,
              'offset': 0,
              'trans_cost': 0.0,
              'max_loss': 2,
              'max_pos': 4,
              'unit': 1,
              'trail_loss': trail_loss,
              'file_prefix': file_prefix}

    commod_list1 = ['m','y','l','ru','rb','p','cu','al','v','a','au','zn','ag','i','j','jm','bu', 'sn', 'ni'] #
    start_dates1 = [datetime.date(2010,10,1)] * 12 + \
                [datetime.date(2012,7,1), datetime.date(2013,11,26), \
                 datetime.date(2011,6,1),datetime.date(2013,5,1), \
                 datetime.date(2013,11,20), datetime.date(2014, 3, 27), datetime.date(2014, 3, 27)]
    commod_list2 = ['ME', 'CF', 'TA', 'PM', 'RM', 'SR', 'FG', 'OI', 'RI', 'TC', 'WH','pp', 'IF']
    start_dates2 = [datetime.date(2012, 2,1)] + [ datetime.date(2012, 6, 1)] * 2 + [datetime.date(2012, 10, 1)] + \
                [datetime.date(2013, 2, 1)] * 3 + [datetime.date(2013,6,1)] * 2 + \
                [datetime.date(2013, 10, 1), datetime.date(2014,2,1), datetime.date(2014,4,1), datetime.date(2010,7,1)]
    commod_list = commod_list1+commod_list2
    start_dates = start_dates1 + start_dates2
    sim_list = ['m', 'y', 'ru', 'TA', 'ag', 'SR','FG', 'jd', 'CF', 'TC', 'RM', 'IF', 'cu', 'zn', 'al']
    sdate_list = []
    for c, d in zip(commod_list, start_dates):
        if c in sim_list:
            sdate_list.append(d)
    systems = [(20, 10,  1, 2, 4), (20, 5, 1, 2, 4), (15, 5, 1, 2, 4), (10, 5, 1, 2, 4), \
               (20, 10,  1, 2, 3), (20, 5, 1, 2, 3), (15, 5, 1, 2, 3), (10, 5, 1, 2, 3), \
               (20, 10,  1, 2, 2), (20, 5, 1, 2, 2), (15, 5, 1, 2, 2), (10, 5, 1, 2, 2), \
               (20, 10,  1, 2, 1), (20, 5, 1, 2, 1), (15, 5, 1, 2, 1), (10, 5, 1, 2, 1), \
               (20, 10,  1, 1, 2), (20, 5, 1, 1, 2), (15, 5, 1, 1, 2), (10, 5, 1, 1, 2), \
               (20, 10,  1, 1, 1), (20, 5, 1, 1, 1), (15, 5, 1, 1, 1), (10, 5, 1, 1, 1) ]
    for asset, sdate in zip(sim_list, sdate_list):
        config['marginrate'] = ( backtest.sim_margin_dict[asset], backtest.sim_margin_dict[asset])
        config['nearby'] = 1
        config['rollrule'] = '-50b'
        if asset in ['cu', 'al', 'zn']:
            config['nearby'] = 3
            config['rollrule'] = '-1b'
        elif asset in ['IF']:
            config['rollrule'] = '-1b'
        elif asset in ['au', 'ag']:
            config['rollrule'] = '-25b'  
        turtle( asset, max(sdate, start_date), end_date, systems, config)
    return 
Пример #10
0
def run_sim(start_date, end_date, daily_close):
    commod_list1 = ['m','y','l','ru','rb','p','cu','al','v','a','au','zn','ag','i','j','jm'] #
    start_dates1 = [datetime.date(2010,10,1)] * 12 + \
                [datetime.date(2012,7,1), datetime.date(2013,11,26), datetime.date(2011,6,1),datetime.date(2013,5,1)]
    commod_list2 = ['ME', 'CF', 'TA', 'PM', 'RM', 'SR', 'FG', 'OI', 'RI', 'TC', 'WH', 'IF']
    start_dates2 = [datetime.date(2012, 2,1)] + [ datetime.date(2012, 6, 1)] * 2 + [datetime.date(2012, 10, 1)] + \
                [datetime.date(2013, 2, 1)] * 3 + [datetime.date(2013,6,1)] * 2 + \
                [datetime.date(2013, 10, 1), datetime.date(2014,2,1), datetime.date(2010,6,1)]
    commod_list = commod_list1 + commod_list2
    start_dates = start_dates1 + start_dates2
    #sim_list = ['m', 'y', 'l', 'ru', 'rb', 'TA', 'SR', 'CF','ME', 'RM', 'ag', 'au', 'cu', 'al', 'zn'] 
    sim_list = [ 'm', 'y', 'l', 'ru', 'rb', 'TA', 'SR', 'RM', 'cu']
    sdate_list = []
    for c, d in zip(commod_list, start_dates):
        if c in sim_list:
            sdate_list.append(d)
    
    test_folder = backtest.get_bktest_folder()
    file_prefix = test_folder + 'ChanBreak_'
    config = {'capital': 10000,
              'offset': 0,
              'trans_cost': 0.0, 
              'unit': 1,
              'scaler': (0.5, 2),
              'channel_func': [dh.DONCH_H, dh.DONCH_L],
              'daily_close': daily_close,
              'file_prefix': file_prefix}        
    freqs = [3, 5, ]
    windows = [20, 40, 60, 120, 270]
    for asset, sdate in zip(sim_list, sdate_list):
        config['marginrate'] = ( backtest.sim_margin_dict[asset], backtest.sim_margin_dict[asset])
        config['rollrule'] = '-50b' 
        config['nearby'] = 1 
        config['start_min'] = 1600
        config['exit_min'] = 2055
        config['no_trade_set'] = range(300, 302) + range(1500, 1502) + range(2058, 2100)
        if asset in ['cu', 'al', 'zn']:
            config['nearby'] = 3
            config['rollrule'] = '-1b'
        elif asset in ['IF', 'IH', 'IC']:
            config['rollrule'] = '-2b'
            config['no_trade_set'] = range(1515, 1520) + range(2110, 2115)
        elif asset in ['au', 'ag']:
            config['rollrule'] = '-25b'
        elif asset in ['TF', 'T']:
            config['rollrule'] = '-20b'
            config['no_trade_set'] = range(1515, 1520) + range(2110, 2115)
        chanbreak( asset, start_date, end_date, freqs, windows, config)
Пример #11
0
def run_sim(start_date, end_date, daily_close = True):
    commod_list1 = ['m','y','l','ru','rb','p','cu','al','v','a','au','zn','ag','i','j','jm'] #
    start_dates1 = [datetime.date(2010,10,1)] * 12 + \
                [datetime.date(2012,7,1), datetime.date(2013,11,26), datetime.date(2011,6,1),datetime.date(2013,5,1)]
    commod_list2 = ['ME', 'CF', 'TA', 'PM', 'RM', 'SR', 'FG', 'OI', 'RI', 'TC', 'WH', 'IF']
    start_dates2 = [datetime.date(2012, 2,1)] + [ datetime.date(2012, 6, 1)] * 2 + [datetime.date(2012, 10, 1)] + \
                [datetime.date(2013, 2, 1)] * 3 + [datetime.date(2013,6,1)] * 2 + \
                [datetime.date(2013, 10, 1), datetime.date(2014,2,1), datetime.date(2010,6,1)]
    commod_list = commod_list1 + commod_list2
    start_dates = start_dates1 + start_dates2
    #sim_list = ['m', 'y', 'l', 'ru', 'rb', 'TA', 'SR', 'CF','ME', 'RM', 'ag', 'au', 'cu', 'al', 'zn'] 
    sim_list = [ 'rb','ru','TA','SR','CF','ag','au','cu','i','al','j','zn', 'a', 'jd']
    sdate_list = []
    for c, d in zip(commod_list, start_dates):
        if c in sim_list:
            sdate_list.append(d)
    test_folder = backtest.get_bktest_folder()
    file_prefix = test_folder + 'RBreaker_'
    if daily_close:
        file_prefix = file_prefix + 'daily_'
    config = {'capital': 10000,
              'offset': 0,
              'trans_cost': 0.0,
              'close_daily': daily_close, 
              'unit': 1,
              'min_rng': 0.015, 
              'file_prefix': file_prefix}
    
    scenarios = [(0.25, 0.05, 0.15), (0.30, 0.06, 0.20), (0.35, 0.08, 0.25), (0.4, 0.1, 0.3)]
    freqs = ['1min', '3min', '5min']
    for asset, sdate in zip(sim_list, sdate_list):
        config['marginrate'] = ( backtest.sim_margin_dict[asset], backtest.sim_margin_dict[asset])
        config['rollrule'] = '-50b' 
        config['nearby'] = 1 
        config['start_min'] = 1505
        config['exit_min'] = 2055
        if asset in ['cu', 'al', 'zn']:
            config['nearby'] = 3
            config['rollrule'] = '-1b'
        elif asset in ['IF']:
            config['start_min'] = 1520
            config['exit_min'] = 2110
            config['rollrule'] = '-1b'
        r_breaker( asset, max(sdate, start_date), end_date, scenarios, freqs, config)
    return
Пример #12
0
def run_sim(start_date, end_date):
    sim_list = [
        "m",
        "y",
        "l",
        "TA",
        "cu",
        "ag",
        "au",
        "i",
        "j",
        "jm",
    ]  # [ 'IF','ru', 'rb', 'a', 'j', 'p','pp','zn', 'al', 'SR', 'ME', 'CF', 'RM']
    test_folder = backtest.get_bktest_folder()
    file_prefix = test_folder + "FisherSwing_"
    # if daily_close:
    #    file_prefix = file_prefix + 'daily_'
    config = {
        "capital": 10000,
        "offset": 0,
        "trans_cost": 0.0,
        "unit": 1,
        "scaler": (2.0, 2.0),
        "file_prefix": file_prefix,
    }

    freqs = ["5Min", "15Min", "30Min", "60Min", "120Min"]
    windows = [[30, 20, 6], [20, 15, 6]]
    for asset in sim_list:
        sdate = backtest.sim_start_dict[asset]
        config["marginrate"] = (backtest.sim_margin_dict[asset], backtest.sim_margin_dict[asset])
        config["rollrule"] = "-50b"
        config["nearby"] = 1
        config["start_min"] = 1505
        config["exit_min"] = 2055
        if asset in ["cu", "al", "zn"]:
            config["nearby"] = 3
            config["rollrule"] = "-1b"
        elif asset in ["IF"]:
            config["start_min"] = 1520
            config["exit_min"] = 2110
            config["rollrule"] = "-1b"
        fisher_swing(asset, max(start_date, sdate), end_date, freqs, windows, config)
Пример #13
0
def run_sim(start_date, end_date):
    commod_list1 = ['m','y','l','ru','rb','p','cu','al','v','a','au','zn','ag','i','j','jm'] #
    start_dates1 = [datetime.date(2010,10,1)] * 12 + \
                [datetime.date(2012,7,1), datetime.date(2013,11,26), datetime.date(2011,6,1),datetime.date(2013,5,1)]
    commod_list2 = ['ME', 'CF', 'TA', 'PM', 'RM', 'SR', 'FG', 'OI', 'RI', 'TC', 'WH', 'IF']
    start_dates2 = [datetime.date(2012, 2,1)] + [ datetime.date(2012, 6, 1)] * 2 + [datetime.date(2012, 10, 1)] + \
                [datetime.date(2013, 2, 1)] * 3 + [datetime.date(2013,6,1)] * 2 + \
                [datetime.date(2013, 10, 1), datetime.date(2014,2,1), datetime.date(2010,6,1)]
    commod_list = commod_list1 + commod_list2
    start_dates = start_dates1 + start_dates2
    #sim_list = ['m', 'y', 'l', 'ru', 'rb', 'TA', 'SR', 'CF','ME', 'RM', 'ag', 'au', 'cu', 'al', 'zn'] 
    sim_list = ['m', 'y', 'l', 'TA', 'cu', 'ag', 'au', 'i', 'j', 'jm'] #[ 'IF','ru', 'rb', 'a', 'j', 'p','pp','zn', 'al', 'SR', 'ME', 'CF', 'RM']
    sdate_list = []
    for c, d in zip(commod_list, start_dates):
        if c in sim_list:
            sdate_list.append(d)
    test_folder = backtest.get_bktest_folder()
    file_prefix = test_folder + 'FisherSwing_'
    #if daily_close:
    #    file_prefix = file_prefix + 'daily_'
    config = {'capital': 10000,
              'offset': 0,
              'trans_cost': 0.0, 
              'unit': 1,
              'scaler': (2.0, 2.0),
              'file_prefix': file_prefix}        

    freqs = ['5Min', '15Min', '30Min', '60Min','120Min']
    windows = [[30, 20, 6], [20, 15, 6]]
    for asset, sdate in zip(sim_list, sdate_list):
        config['marginrate'] = ( backtest.sim_margin_dict[asset], backtest.sim_margin_dict[asset])
        config['rollrule'] = '-50b' 
        config['nearby'] = 1 
        config['start_min'] = 1505
        config['exit_min'] = 2055
        if asset in ['cu', 'al', 'zn']:
            config['nearby'] = 3
            config['rollrule'] = '-1b'
        elif asset in ['IF']:
            config['start_min'] = 1520
            config['exit_min'] = 2110
            config['rollrule'] = '-1b'    
        fisher_swing( asset, max(start_date, sdate), end_date, freqs, windows, config)
Пример #14
0
def run_sim(start_date, end_date, daily_close = False):
    sim_list = [ 'cs', 'TF', 'i', 'rb',  'SR', 'OI',  'MA', 'l', 'v', 'TA', 'a', 'm', 'p', 'y', 'pp', 'ru']
    test_folder = backtest.get_bktest_folder()
    file_prefix = test_folder + 'test/DTwEP_'
    if daily_close:
        file_prefix = file_prefix + 'daily_'
    #file_prefix = file_prefix + '_'
    config = {'capital': 10000,
              'offset': 0,
              'trans_cost': 0.0,
              'close_daily': daily_close, 
              'unit': 1,
              'stoploss': 0.0,
              'min_range': 0.00,
              'EP': True,
              'file_prefix': file_prefix}
    
    scenarios = [ (0.6, 0, 0.5), (0.7, 0, 0.5), (0.8, 0, 0.5), (0.9, 0, 0.5), (1.0, 0, 0.5), (1.1, 0, 0.5), (1.2, 0, 0.5),\
                  (0.6, 1, 0.0), (0.7, 1, 0.0), (0.8, 1, 0.0), (0.9, 1, 0.0), (1.0, 1, 0.0), (1.1, 1, 0.0), (1.2, 1, 0.0),\
                  (0.25, 2, 0),  (0.3, 2, 0),   (0.35, 2, 0),  (0.4, 2, 0),   (0.45, 2, 0),  (0.5, 2, 0),   (0.6, 2, 0),  \
                  (0.2, 4, 0),   (0.25,4, 0),   (0.3,  4, 0),  (0.35,4, 0),   (0.4,  4, 0) ]
    for asset in sim_list:
        sdate =  backtest.sim_start_dict[asset]
        config['marginrate'] = ( backtest.sim_margin_dict[asset], backtest.sim_margin_dict[asset])
        config['nearby'] = 1
        config['rollrule'] = '-50b'
        config['exit_min'] = 2055
        config['no_trade_set'] = range(300, 301) + range(1500, 1501) + range(2059, 2100)
        if asset in ['cu', 'al', 'zn']:
            config['nearby'] = 3
            config['rollrule'] = '-1b'
        elif asset in ['IF', 'IH', 'IC']:
            config['rollrule'] = '-2b'
            config['no_trade_set'] = range(1515, 1520) + range(2110, 2115)
        elif asset in ['au', 'ag']:
            config['rollrule'] = '-25b'
        elif asset in ['TF', 'T']:
            config['rollrule'] = '-20b'
            config['no_trade_set'] = range(1515, 1520) + range(2110, 2115)
        dual_thrust( asset, max(sdate, start_date), end_date, scenarios, config)
    return
Пример #15
0
def run_sim(start_date, end_date, daily_close=True):
    sim_list = [
        'rb', 'ru', 'TA', 'SR', 'CF', 'ag', 'au', 'cu', 'i', 'al', 'j', 'zn',
        'a', 'jd'
    ]
    test_folder = backtest.get_bktest_folder()
    file_prefix = test_folder + 'RBreaker_'
    if daily_close:
        file_prefix = file_prefix + 'daily_'
    config = {
        'capital': 10000,
        'offset': 0,
        'trans_cost': 0.0,
        'close_daily': daily_close,
        'unit': 1,
        'min_rng': 0.015,
        'file_prefix': file_prefix
    }

    scenarios = [(0.25, 0.05, 0.15), (0.30, 0.06, 0.20), (0.35, 0.08, 0.25),
                 (0.4, 0.1, 0.3)]
    freqs = ['1min', '3min', '5min']
    for asset in sim_list:
        sdate = backtest.sim_start_dict[asset]
        config['marginrate'] = (backtest.sim_margin_dict[asset],
                                backtest.sim_margin_dict[asset])
        config['rollrule'] = '-50b'
        config['nearby'] = 1
        config['start_min'] = 1505
        config['exit_min'] = 2055
        if asset in ['cu', 'al', 'zn']:
            config['nearby'] = 3
            config['rollrule'] = '-1b'
        elif asset in ['IF']:
            config['start_min'] = 1520
            config['exit_min'] = 2110
            config['rollrule'] = '-1b'
        r_breaker(asset, max(sdate, start_date), end_date, scenarios, freqs,
                  config)
    return
Пример #16
0
def run_sim(start_date, end_date, daily_close = False):
    sim_list = ['v','FG', 'CF']
    test_folder = backtest.get_bktest_folder()
    file_prefix = test_folder + 'DT_MA10_'
    if daily_close:
        file_prefix = file_prefix + 'daily_'
    #file_prefix = file_prefix + '_'
    config = {'capital': 10000,
              'offset': 0,
              'MA_fast': 10,
              'MA_slow': 20,
              'trans_cost': 0.0,
              'close_daily': daily_close, 
              'unit': 1,
              'stoploss': 0.0,
              'min_range': 0.01,
              'file_prefix': file_prefix}
    
    scenarios = [ (0.3, 2, 0.5, 0.5), (0.35, 2, 0.5, 0.5), (0.4, 2, 0.5, 0.5), (0.45, 2, 0.5, 0.5), (0.5, 2, 0.5, 0.5), (0.6, 2, 0.5, 0.5),\
                  (0.2, 3, 0.5, 0.5),(0.25, 3, 0.5, 0.5), (0.3, 3, 0.5, 0.5), (0.35, 3, 0.5, 0.5), (0.4, 3, 0.5, 0.5), \
                  (0.2, 4, 0.5, 0.5), (0.25, 4, 0.5, 0.5), (0.3, 4, 0.5, 0.5), (0.35, 4, 0.5, 0.5), (0.4, 4, 0.5, 0.5)]
    for asset in sim_list:
        sdate =  backtest.sim_start_dict[asset]
        config['marginrate'] = ( backtest.sim_margin_dict[asset], backtest.sim_margin_dict[asset]) 
        config['nearby'] = 1
        config['rollrule'] = '-50b'
        config['exit_min'] = 2112
        if asset in ['cu', 'al', 'zn']:
            config['nearby'] = 3
            config['rollrule'] = '-1b'
        elif asset in ['IF', 'IH', 'IC']:
            config['rollrule'] = '-2b'
        elif asset in ['au', 'ag']:
            config['rollrule'] = '-25b'
        elif asset in ['TF', 'T']:
            config['rollrule'] = '-20b'
        dual_thrust( asset, max(sdate, start_date), end_date, scenarios, config)
    return
Пример #17
0
def run_sim(start_date, end_date):
    sim_list = [
        'm', 'y', 'l', 'TA', 'cu', 'ag', 'au', 'i', 'j', 'jm'
    ]  #[ 'IF','ru', 'rb', 'a', 'j', 'p','pp','zn', 'al', 'SR', 'ME', 'CF', 'RM']
    test_folder = backtest.get_bktest_folder()
    file_prefix = test_folder + 'FisherSwing_'
    #if daily_close:
    #    file_prefix = file_prefix + 'daily_'
    config = {
        'capital': 10000,
        'offset': 0,
        'trans_cost': 0.0,
        'unit': 1,
        'scaler': (2.0, 2.0),
        'file_prefix': file_prefix
    }

    freqs = ['5Min', '15Min', '30Min', '60Min', '120Min']
    windows = [[30, 20, 6], [20, 15, 6]]
    for asset in sim_list:
        sdate = backtest.sim_start_dict[asset]
        config['marginrate'] = (backtest.sim_margin_dict[asset],
                                backtest.sim_margin_dict[asset])
        config['rollrule'] = '-50b'
        config['nearby'] = 1
        config['start_min'] = 1505
        config['exit_min'] = 2055
        if asset in ['cu', 'al', 'zn']:
            config['nearby'] = 3
            config['rollrule'] = '-1b'
        elif asset in ['IF']:
            config['start_min'] = 1520
            config['exit_min'] = 2110
            config['rollrule'] = '-1b'
        fisher_swing(asset, max(start_date, sdate), end_date, freqs, windows,
                     config)
Пример #18
0
def run_sim(start_date, end_date, daily_close=False):
    commod_list1 = ["m", "y", "l", "ru", "rb", "p", "cu", "al", "v", "a", "au", "zn", "ag", "i", "j", "jm"]  #
    start_dates1 = [datetime.date(2010, 10, 1)] * 12 + [
        datetime.date(2012, 7, 1),
        datetime.date(2013, 11, 26),
        datetime.date(2011, 6, 1),
        datetime.date(2013, 5, 1),
    ]
    commod_list2 = [
        "ME",
        "CF",
        "TA",
        "PM",
        "RM",
        "SR",
        "FG",
        "OI",
        "RI",
        "TC",
        "WH",
        "pp",
        "IF",
        "MA",
        "TF",
        "IH",
        "IC",
    ]
    start_dates2 = (
        [datetime.date(2012, 2, 1)]
        + [datetime.date(2012, 6, 1)] * 2
        + [datetime.date(2012, 10, 1)]
        + [datetime.date(2013, 2, 1)] * 3
        + [datetime.date(2013, 6, 1)] * 2
        + [datetime.date(2013, 10, 1), datetime.date(2014, 2, 1), datetime.date(2014, 4, 1), datetime.date(2010, 7, 1)]
        + [datetime.date(2015, 1, 3), datetime.date(2014, 4, 1), datetime.date(2015, 5, 1), datetime.date(2015, 5, 1)]
    )
    commod_list = commod_list1 + commod_list2
    start_dates = start_dates1 + start_dates2
    sim_list = ["m", "y", "p", "RM", "a", "rb", "ag", "TA", "MA", "SR", "i"]
    sdate_list = []
    for c, d in zip(commod_list, start_dates):
        if c in sim_list:
            sdate_list.append(d)
    test_folder = backtest.get_bktest_folder()
    file_prefix = test_folder + "test2/DTsplit_"
    if daily_close:
        file_prefix = file_prefix + "daily_"
    # file_prefix = file_prefix + '_'
    config = {
        "capital": 10000,
        "offset": 0,
        "MA_fast": 10,
        "MA_slow": 20,
        "trans_cost": 0.0,
        "close_daily": daily_close,
        "unit": 1,
        "stoploss": 0.0,
        "min_range": 0.004,
        "file_prefix": file_prefix,
    }

    scenarios = [
        (0.6, 0, 0.5, 0.0),
        (0.7, 0, 0.5, 0.0),
        (0.8, 0, 0.5, 0.0),
        (0.9, 0, 0.5, 0.0),
        (1.0, 0, 0.5, 0.0),
        (1.1, 0, 0.5, 0.0),
        (1.2, 0, 0.5, 0.0),
        (0.6, 1, 0.5, 0.0),
        (0.7, 1, 0.5, 0.0),
        (0.8, 1, 0.5, 0.0),
        (0.9, 1, 0.5, 0.0),
        (1.0, 1, 0.5, 0.0),
        (1.1, 1, 0.5, 0.0),
        (1.2, 1, 0.5, 0.0),
        (0.5, 2, 0.5, 0.0),
        (0.6, 2, 0.5, 0.0),
        (0.7, 2, 0.5, 0.0),
        (0.8, 2, 0.5, 0.0),
        (0.9, 2, 0.5, 0.0),
        (1.0, 2, 0.5, 0.0),
        (1.1, 2, 0.5, 0.0),
        (0.2, 4, 0.5, 0.0),
        (0.25, 4, 0.5, 0.0),
        (0.3, 4, 0.5, 0.0),
        (0.35, 4, 0.5, 0.0),
        (0.4, 4, 0.5, 0.0),
        (0.45, 4, 0.5, 0.0),
        (0.5, 4, 0.5, 0.0),
    ]
    for asset, sdate in zip(sim_list, sdate_list):
        config["marginrate"] = (backtest.sim_margin_dict[asset], backtest.sim_margin_dict[asset])
        config["nearby"] = 1
        config["rollrule"] = "-50b"
        config["exit_min"] = 2112
        if asset in ["cu", "al", "zn"]:
            config["nearby"] = 3
            config["rollrule"] = "-1b"
        elif asset in ["IF", "IH", "IC"]:
            config["rollrule"] = "-2b"
        elif asset in ["au", "ag"]:
            config["rollrule"] = "-25b"
        elif asset in ["TF", "T"]:
            config["rollrule"] = "-20b"
        dual_thrust(asset, max(sdate, start_date), end_date, scenarios, config)
    return