In [2]:
import pandas as pd
import itable
import ffn
import talib
%matplotlib inline
def side_by_side(*objs, **kwds):
from pandas.formats.printing import adjoin
space = kwds.get('space', 4)
reprs = [repr(obj).split('\n') for obj in objs]
print (adjoin(space, *reprs))
import os
os.chdir('C:\\users\\scuba\\pycharmprojects\\simplebacktester')
os.getcwd()
Out[2]:
In [ ]:
import pandas as pd
import ffn
%matplotlib inline
from backtest_helpers.compute_weights_RS_DM import compute_weights_RS_DM
from backtest_helpers.compute_weights_PMA import compute_weights_PMA
from backtest_helpers.monthly_return_table import monthly_return_table
from backtest_helpers.endpoints import endpoints
from backtest_helpers.backtest import backtest
strategies = {
'RS0001': { 'symbols': ['CWB','HYG','MBB','IEF','HYD'], 'prices': 'yahoo',
'rs_lookback': 1, 'risk_lookback': 1, 'n_top': 2, 'frequency': 'm',
'cash_proxy': 'CASHX', 'risk_free': 0},
'RS0002': {'symbols': ['HYD','QLTB','MBB'], 'prices': 'yahoo',
'rs_lookback': 3, 'risk_lookback': 2, 'n_top': 1, 'frequency': 'm',
'cash_proxy': 'CASHX', 'risk_free': 0},
'RS0003': {'symbols': ['HYD','MBB','SHY'], 'prices': 'yahoo',
'rs_lookback': 1, 'risk_lookback': 1, 'n_top': 1, 'frequency': 'q',
'cash_proxy': 'CASHX', 'risk_free': 0},
'DM0001': {'symbols': ['CWB','VYM','HYG','VHT','TLT','MBB','HYD','IEF'],
'prices': 'yahoo',
'rs_lookback': 1, 'risk_lookback': 1, 'n_top': 3, 'frequency': 'm',
'cash_proxy': 'CASHX', 'risk_free': 'SHY'},
'DM0002': {'symbols': ['CWB','TLT','HYG','VHT','VNQ'], 'prices': 'yahoo',
'rs_lookback': 1, 'risk_lookback': 1, 'n_top': 5, 'frequency': 'm',
'cash_proxy': 'MBB', 'risk_free': 'SHY'},
'PMA001': {'symbols': ['CWB','MBB'], 'prices': 'yahoo',
'risk_lookback': 3, 'frequency': 'm', 'allocations': [0.6, 0.4],
'cash_proxy': 'TLT'},
'PMA002': {'symbols': ['CWB','VYM','HYG'], 'prices': 'yahoo',
'risk_lookback': 3, 'frequency': 'm', 'allocations': [0.6, 0.2, 0.2],
'cash_proxy': 'TLT'},
'PMA003': {'symbols': ['VCVSX', 'FAGIX', 'VGHCX'], 'prices': 'yahoo',
'risk_lookback': 2, 'frequency': 'm', 'allocations': [1./3., 1./3., 1./3.],
'cash_proxy': 'VUSTX'},
}
strategy_values = pd.DataFrame(columns=strategies.keys())
security_weights = {}
security_holdings = {}
prices = {}
for name in strategies :
if 'PMA' in name :
s_value, s_holdings, s_weights, s_prices = compute_weights_PMA (name, strategies[name])
else :
s_value, s_holdings, s_weights, s_prices = compute_weights_RS_DM (name, strategies[name])
strategy_values[name] = s_value
security_weights[name] = s_weights
security_holdings[name] = s_holdings
prices[name] = s_prices