├── README.md ├── amipy.py ├── examples ├── BollingerCMF.ipynb ├── Citadel.ipynb ├── ForYourEyesOnly.ipynb ├── HelloJamesSimons.ipynb ├── InsideThePinkBox.ipynb ├── MrBigglesworth.ipynb ├── NaturalMystic.ipynb ├── ZeroHedge.ipynb └── strategy_wyckoff_varadi.ipynb └── strategy_bollinger_cmf.py /README.md: -------------------------------------------------------------------------------- 1 | # amipy 2 | very fast python backtesting framework based on amibroker backtesting methodology 3 | 4 | - event driven 5 | - supports any timeframe 6 | - supports tick aggregation 7 | - fast optimization speeds 8 | - multi-asset class simulations 9 | 10 | compatible with IQFeed data and MongoDB, (e.g. [iq2mongo](https://github.com/Quantmatic/iq2mongo)) 11 | 12 | also compatible with any other data source, so long as the OHLC dataframe has the following column format: 13 | 14 | ohlc = data[:][['open', 'high', 'low', 'close', 'volume']] 15 | 16 | view [sample strategy results](https://github.com/Quantmatic/amipy/blob/master/examples/BollingerCMF.ipynb) 17 | -------------------------------------------------------------------------------- /amipy.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python2 2 | # -*- coding: utf-8 -*- 3 | #pylint: disable=no-member 4 | """ 5 | Created on Tue May 16 11:26:03 2017 6 | @author: github.com/Quantmatic 7 | """ 8 | from __future__ import print_function, division 9 | from itertools import count 10 | import pandas as pd 11 | import numpy as np 12 | import matplotlib.pyplot as plt 13 | import matplotlib.pylab as pylab 14 | from pymongo import MongoClient 15 | from ffn import PerformanceStats 16 | #import numba 17 | 18 | 19 | def df_resample(dframe, interval): 20 | """ resample 1m data """ 21 | _result = dframe.resample(interval).agg({'open': 'first', 22 | 'high': 'max', 23 | 'low': 'min', 24 | 'close': 'last', 25 | 'volume': 'sum'}) 26 | 27 | _df = pd.DataFrame(_result).dropna(axis=0) 28 | 29 | _df[['volume']] = _df[['volume']].fillna(0.0).astype(int) 30 | return _df[:][['open', 'high', 'low', 'close', 'volume']] 31 | 32 | 33 | def mongo_grab(symbol, dbname, startdate, enddate, interval='60min', resample=False): 34 | ''' Grab the required stretch of quotes from MongoDB ''' 35 | client = MongoClient() 36 | dbase = client[dbname] 37 | collections = dbase.collection_names() 38 | if symbol in collections: 39 | collection = dbase[symbol] 40 | cursor = collection.find({'datetime': {'$gte': startdate, '$lt': enddate}}) 41 | data = list(cursor) 42 | _df = pd.DataFrame(data) 43 | _df.columns = _df.columns.str.lower() 44 | _df.set_index('datetime', drop=False, append=False, inplace=True, verify_integrity=False) 45 | _df.index = pd.to_datetime(_df.index) 46 | _df = _df[:][['open', 'high', 'low', 'close', 'volume']] 47 | if resample: 48 | resampled_df = df_resample(_df, interval) 49 | return resampled_df 50 | 51 | return _df 52 | else: 53 | print('Error! Symbol not found in db! '+symbol) 54 | return -1 55 | 56 | 57 | #@numba.jit 58 | def __remove(array1, array2, maxtrades=1): 59 | """ Remove excessive signals """ 60 | nnn = len(array1) 61 | output = np.zeros(nnn, dtype='int64') 62 | i = 0 63 | 64 | while i < nnn: 65 | if array1[i]: 66 | output[i] = 1 67 | cnt = 1 68 | j = i+1 69 | while j < nnn: 70 | if array1[j]: 71 | cnt += 1 72 | if cnt > maxtrades: 73 | output[j] = 0 74 | else: 75 | output[j] = 1 76 | 77 | if array2[j]: 78 | break 79 | 80 | j += 1 81 | 82 | i = j 83 | else: 84 | i += 1 85 | 86 | return output 87 | 88 | 89 | def ex_rem(array1, array2, maxtrades=1): 90 | """ Remove excessive signals """ 91 | assert array1.index.equals(array2.index), 'Indices do not match' 92 | idx = array1.index 93 | ret = __remove(array1.values, array2.values, maxtrades) 94 | return pd.Series(ret, index=idx, dtype=bool) 95 | 96 | 97 | def _max_draw(equity): 98 | ''' calculate drawdown ''' 99 | return (equity / equity.expanding(min_periods=1).max()).min() - 1 100 | 101 | 102 | def _consecutive_loss(equity): 103 | ''' calculate consecutive losses ''' 104 | equity = equity[equity != equity.shift(1)] 105 | temp = (equity < equity.shift(1)).astype(int) 106 | closs = temp.groupby((temp != temp.shift(1)).cumsum()).cumsum().max() 107 | return closs 108 | 109 | 110 | def _max_rolling_dd(ser): 111 | ''' max dd calculations ''' 112 | max2here = pd.Series(ser).expanding().max() 113 | dd2here = ser - max2here 114 | return dd2here.min() 115 | 116 | 117 | def _plot(_df, subplot=211, ylabel='', xlabel='', ysize=12, xsize=15, legend=False, title=''): 118 | ''' make a plot ''' 119 | fig = plt.figure() 120 | ax1 = fig.add_subplot(subplot) 121 | _df.plot(ax=ax1) 122 | ax1.set_ylabel(ylabel) 123 | ax1.set_xlabel(xlabel) 124 | ax1.legend().set_visible(legend) 125 | plt.gcf().set_size_inches(ysize, xsize) 126 | plt.title(title) 127 | plt.show() 128 | plt.close() 129 | 130 | 131 | def adjust_quotes(ohlc): 132 | ''' remove stock splits for smooth backtests ''' 133 | i = len(ohlc)-1 134 | data = ohlc.copy() 135 | _open = ohlc.open.values 136 | close = ohlc.close.values 137 | temp = ['open', 'high', 'low', 'close'] 138 | while i > 1: 139 | if _open[i] < _open[i-1]*0.8: 140 | data.loc[ohlc.index[i:], temp] += close[i-1]-_open[i] 141 | 142 | i -= 1 143 | 144 | return data 145 | 146 | 147 | def analyze_portfolio(portfolio, rfr, plot=True): 148 | ''' analyze portfolio ''' 149 | portfolio = portfolio.fillna(method='ffill').fillna(method='bfill') 150 | portfolio['Total'] = portfolio.sum(axis=1) 151 | total_ret = portfolio.Total[-1] / portfolio.Total[0] - 1 152 | daily_ret = portfolio.Total.resample('1D').last().dropna().pct_change() 153 | daily_excess = daily_ret - rfr/252 154 | sharpe = 252**0.5 * daily_excess.mean() / daily_excess.std() 155 | sortino = 252**0.5 * daily_excess.mean() / daily_excess[daily_excess < 0].std() 156 | period = (portfolio.index[-1] - portfolio.index[0]).total_seconds() / (31557600) 157 | cagr = (portfolio.Total.values[-1] / portfolio.Total.values[0]) ** (1/float(period))-1 158 | maxdd = _max_draw(portfolio.Total) 159 | 160 | print('\n') 161 | print('Starting Portfolio Equity: ' + str(portfolio['Total'][0])) 162 | print('Final Portfolio Equity: ' + str(portfolio['Total'][-1])) 163 | print('Total return: {:.2%} '.format(float(total_ret))) 164 | print('Daily return: {:.2%} '.format(float(daily_ret.mean()))) 165 | print('Risk: {:.2%} '.format(float(daily_ret.std()))) 166 | print('Sharpe: {:.2f} '.format(float(sharpe))) 167 | print('Sortino: {:.2f} '.format(float(sortino))) 168 | print('CAGR: {:.2%} '.format(float(cagr))) 169 | print('Max drawdown: {:.2%} '.format(float(maxdd))) 170 | 171 | if plot: 172 | new_equity = portfolio.Total[(portfolio.Total != portfolio.Total.shift(1))] 173 | rolling_dd = new_equity.rolling(min_periods=1, window=2, 174 | center=False).apply(func=_max_rolling_dd) 175 | 176 | zipp = list(zip(new_equity, rolling_dd)) 177 | df1 = pd.DataFrame(zipp, index=new_equity.index) 178 | df1.columns = ['Equity', 'Drawdown'] 179 | 180 | fig = plt.figure() 181 | ax1 = fig.add_subplot(211) 182 | df1.plot(ax=ax1) 183 | ax1.set_ylabel('Portfolio value (USD)') 184 | ax1.set_xlabel('') 185 | plt.gcf().set_size_inches(12, 15) 186 | plt.show() 187 | plt.close() 188 | 189 | return {'total_ret': total_ret, 'sharpe': sharpe, 'sortino': sortino, 190 | 'cagr': cagr, 'maxdd': maxdd} 191 | 192 | 193 | def analyze_portfolio_ffn(portfolio, rfr): 194 | ''' analyze portfolio with ffn''' 195 | portfolio = portfolio.fillna(method='ffill').fillna(method='bfill') 196 | portfolio['Total'] = portfolio.sum(axis=1) 197 | myffn = PerformanceStats(portfolio.Total, rfr) 198 | print('\n') 199 | myffn.display() 200 | print('\n') 201 | myffn.display_monthly_returns() 202 | print('\n') 203 | #print(myffn.stats) 204 | 205 | 206 | class Amipy(object): 207 | """ initialize constants required for backtest """ 208 | def __init__(self, CONTEXT, DATA): 209 | self.__dict__.update(CONTEXT.__dict__) 210 | self.trades = None 211 | self.imp_equity = None 212 | self.ohlc = DATA 213 | self.stats = {} 214 | self.margin = 0 215 | self.equity = 0 216 | 217 | #@numba.jit 218 | def apply_stops_cover(self, buy, short, shortprice, stoploss, takeprofit): 219 | ''' apply tick based stops on short trades ''' 220 | tsize = self.tick_size 221 | short = short.values 222 | buy = buy.values 223 | shortprice = shortprice.values 224 | _open = self.ohlc.open.values 225 | mcover = np.zeros(len(short), dtype='int64') 226 | 227 | nnn = len(buy) 228 | for i in range(nnn): 229 | if short[i]: 230 | topen = shortprice[i] 231 | for cnt in range(i+1, nnn, 1): 232 | val = topen - _open[cnt] 233 | if val > takeprofit * tsize: 234 | mcover[cnt] = 1 235 | break 236 | elif val < -stoploss * tsize: 237 | mcover[cnt] = 1 238 | break 239 | elif buy[cnt]: 240 | mcover[cnt] = 1 241 | break 242 | 243 | return mcover 244 | 245 | #@numba.jit 246 | def apply_stops_sell(self, buy, short, buyprice, stoploss, takeprofit): 247 | ''' apply tick based stops on long trades ''' 248 | tsize = self.tick_size 249 | short = short.values 250 | buy = buy.values 251 | buyprice = buyprice.values 252 | nnn = len(buy) 253 | msell = np.zeros(nnn, dtype='int64') 254 | _open = self.ohlc.open.values 255 | 256 | for i in range(nnn): 257 | if buy[i]: 258 | topen = buyprice[i] 259 | for cnt in range(i+1, nnn, 1): 260 | val = _open[cnt] - topen 261 | if val > takeprofit * tsize: 262 | msell[cnt] = 1 263 | break 264 | elif val < -stoploss * tsize: 265 | msell[cnt] = 1 266 | break 267 | elif short[cnt]: 268 | msell[cnt] = 1 269 | break 270 | 271 | return msell 272 | 273 | #@numba.jit 274 | def apply_stops_cover_rq(self, buy, short, shortprice, stoploss, takeprofit): 275 | ''' apply rolling quantile stops on short trades ''' 276 | tsize = self.tick_size 277 | short = short.values 278 | buy = buy.values 279 | shortprice = shortprice.values 280 | _open = self.ohlc.open.values 281 | mcover = np.zeros(len(short), dtype='int64') 282 | 283 | nnn = len(buy) 284 | for i in range(nnn): 285 | if short[i]: 286 | topen = shortprice[i] 287 | for cnt in range(i+1, nnn, 1): 288 | val = topen - _open[cnt] 289 | if val > takeprofit[i] * tsize: 290 | mcover[cnt] = 1 291 | break 292 | elif val < -stoploss[i] * tsize: 293 | mcover[cnt] = 1 294 | break 295 | elif buy[cnt]: 296 | mcover[cnt] = 1 297 | break 298 | 299 | return mcover 300 | 301 | #@numba.jit 302 | def apply_stops_sell_rq(self, buy, short, buyprice, stoploss, takeprofit): 303 | ''' apply rolling quantile stops on long trades ''' 304 | tsize = self.tick_size 305 | short = short.values 306 | buy = buy.values 307 | buyprice = buyprice.values 308 | nnn = len(buy) 309 | msell = np.zeros(nnn, dtype='int64') 310 | _open = self.ohlc.open.values 311 | 312 | for i in range(nnn): 313 | if buy[i]: 314 | topen = buyprice[i] 315 | for cnt in range(i+1, nnn, 1): 316 | val = _open[cnt] - topen 317 | if val > takeprofit[i] * tsize: 318 | msell[cnt] = 1 319 | break 320 | elif val < -stoploss[i] * tsize: 321 | msell[cnt] = 1 322 | break 323 | elif short[cnt]: 324 | msell[cnt] = 1 325 | break 326 | 327 | return msell 328 | 329 | #@numba.jit 330 | def apply_stops_cover_pct(self, buy, short, shortprice, stoploss, takeprofit): 331 | ''' apply percentage based stops on short trades ''' 332 | short = short.values 333 | buy = buy.values 334 | nnn = len(buy) 335 | shortprice = shortprice.values 336 | mcover = np.zeros(nnn, dtype='int64') 337 | _open = self.ohlc.open.values 338 | 339 | 340 | for i in range(nnn): 341 | if short[i]: 342 | topen = shortprice[i] 343 | 344 | for cnt in range(i+1, nnn, 1): 345 | val = topen - _open[cnt] 346 | if val/topen > takeprofit/100.0: #% gain 347 | mcover[cnt] = 1 348 | break 349 | elif val/topen < -stoploss/100.0: 350 | mcover[cnt] = 1 351 | break 352 | elif buy[cnt]: #opposite signal 353 | mcover[cnt] = 1 354 | break 355 | 356 | return mcover 357 | 358 | #@numba.jit 359 | def apply_stops_sell_pct(self, buy, short, buyprice, stoploss, takeprofit): 360 | ''' apply percentage based stops on long trades ''' 361 | short = short.values 362 | buy = buy.values 363 | buyprice = buyprice.values 364 | nnn = len(buy) 365 | msell = np.zeros(nnn, dtype='int64') 366 | _open = self.ohlc.open.values 367 | 368 | for i in range(nnn): 369 | if buy[i]: 370 | topen = buyprice[i] 371 | for cnt in range(i+1, nnn, 1): 372 | val = _open[cnt] - topen 373 | if val/topen > takeprofit/100.0: #% gain 374 | msell[cnt] = 1 375 | break 376 | elif val/topen < -stoploss/100.0: 377 | msell[cnt] = 1 378 | break 379 | elif short[cnt]: #opposite signal 380 | msell[cnt] = 1 381 | break 382 | 383 | return msell 384 | 385 | def run(self, buy, short, sell, cover, buyprice, shortprice, sellprice, coverprice): 386 | ''' calculate equity based on trade signals ''' 387 | #idx = ((buy > 0) | (short > 0) | (sell > 0) | (cover > 0)) 388 | idx=buy.index 389 | 390 | buy = buy[idx] 391 | short = short[idx] 392 | sell = sell[idx] 393 | cover = cover[idx] 394 | buyprice = buyprice[idx] 395 | shortprice = shortprice[idx] 396 | sellprice = sellprice[idx] 397 | coverprice = coverprice[idx] 398 | _open = self.ohlc.open[idx].values 399 | 400 | myeq = self.starting_equity 401 | myequity = np.empty(len(buy)) 402 | imp_equity = np.empty(len(buy)) 403 | imargin = np.zeros(len(buy)) 404 | myequity.fill(myeq) 405 | imp_equity.fill(myeq) 406 | mytrades = [] 407 | mvalue = np.zeros(1, dtype='float64') 408 | 409 | 410 | for i, item in enumerate(zip(buy.values, short.values, sell.values, cover.values, 411 | buyprice.values, shortprice.values, sellprice.values, 412 | coverprice.values)): 413 | 414 | if item[1] > 0: # *** active short *** # 415 | 416 | if self.risk == 0.0: 417 | lot_size = 1 418 | umargin = self.margin_required # used margin 419 | if self.margin_required == 0: 420 | umargin = _open[i] 421 | elif self.margin_required == 0: 422 | lot_size = int(myequity[i] / _open[i] * self.risk) 423 | umargin = _open[i] * lot_size 424 | else: 425 | lot_size = int(myequity[i] / self.margin_required * self.risk) 426 | umargin = lot_size * self.margin_required 427 | 428 | if lot_size < 0 or myequity[i] < 0: 429 | continue 430 | 431 | imargin[i] = imargin[i] + umargin 432 | imp_equity[i] = myequity[i] 433 | loceq = myequity[i] 434 | 435 | mytrades.append({'index': short.index[i], 'direction': 'short', 436 | 'lotsize': -lot_size, 'price': shortprice[i], 437 | 'value': 0, 'equity': myequity[i], 'ticks': 0, 438 | 'umargin': umargin}) 439 | 440 | for cnt, col1, col2, col3 in zip(count(), cover.values[i+1:], 441 | coverprice.values[i+1:], buy.values[i+1:]): 442 | 443 | trd_ticks = (item[5] - col2) / self.tick_size 444 | commission = self.commission * lot_size 445 | trd_val = (trd_ticks * self.tick_value * lot_size) - commission 446 | imp_equity[cnt+i+1] = loceq + trd_val 447 | imargin[cnt+i+1] = imargin[cnt+i] 448 | 449 | if (col1 == item[1]) | (col3 > 0): 450 | 451 | if self.risk == 0.0: 452 | lot_size = 1 453 | elif self.margin_required == 0: 454 | lot_size = int(myequity[i] / _open[i] * self.risk) 455 | else: 456 | lot_size = int(myequity[i] / self.margin_required * self.risk) 457 | 458 | mvalue = np.append(mvalue, trd_val) 459 | 460 | value = myeq + np.sum(mvalue) 461 | myequity[cnt+i+1:] = value 462 | imp_equity[cnt+i+1:] = value 463 | imargin[cnt+i+1] = 0 464 | 465 | mytrades.append({'index': cover.index[cnt+i+1], 'direction': 'cover', 466 | 'lotsize': lot_size, 'price': coverprice[cnt+i+1], 467 | 'value': trd_val, 'equity': value, 'ticks': trd_ticks, 468 | 'umargin': 0}) 469 | 470 | break 471 | 472 | elif item[0] > 0: # *** active long *** # 473 | 474 | if self.risk == 0.0: 475 | lot_size = 1 476 | umargin = self.margin_required # used margin 477 | if self.margin_required == 0: 478 | umargin = _open[i] 479 | elif self.margin_required == 0: 480 | lot_size = int(myequity[i] / _open[i] * self.risk) 481 | umargin = _open[i] * lot_size 482 | else: 483 | lot_size = int(myequity[i] / self.margin_required * self.risk) 484 | umargin = lot_size * self.margin_required 485 | 486 | if lot_size < 0 or myequity[i] < 0: 487 | continue 488 | 489 | imargin[i] = imargin[i] + umargin 490 | imp_equity[i] = myequity[i] 491 | loceq = myequity[i] 492 | 493 | mytrades.append({'index': buy.index[i], 'direction': 'buy', 494 | 'lotsize': lot_size, 'price': buyprice[i], 495 | 'value': 0, 'equity': myequity[i], 'ticks': 0, 496 | 'umargin': umargin}) 497 | 498 | for cnt, col1, col2, col3 in zip(count(), sell.values[i+1:], 499 | sellprice.values[i+1:], short.values[i+1:]): 500 | 501 | trd_ticks = (col2 - item[4]) / self.tick_size 502 | commission = self.commission * lot_size 503 | trd_val = (trd_ticks * self.tick_value * lot_size) - commission 504 | imp_equity[cnt+i+1] = loceq + trd_val 505 | imargin[cnt+i+1] = imargin[cnt+i] 506 | 507 | if (col1 > 0) | (col3 > 0): 508 | 509 | if self.risk == 0.0: 510 | lot_size = 1 511 | elif self.margin_required == 0: 512 | lot_size = int(myequity[i] / _open[i] * self.risk) 513 | else: 514 | lot_size = int(myequity[i] / self.margin_required * self.risk) 515 | 516 | mvalue = np.append(mvalue, trd_val) 517 | 518 | value = myeq + np.sum(mvalue) 519 | myequity[cnt+i+1:] = value 520 | imp_equity[cnt+i+1:] = value 521 | imargin[cnt+i+1] = 0 522 | 523 | mytrades.append({'index': sell.index[cnt+i+1], 'direction': 'sell', 524 | 'lotsize': -lot_size, 'price': sellprice[cnt+i+1], 525 | 'value': trd_val, 'equity': value, 'ticks': trd_ticks, 526 | 'umargin': 0}) 527 | 528 | break 529 | 530 | mytrades = pd.DataFrame(mytrades).dropna() 531 | mytrades.set_index('index', drop=True, append=False, inplace=True, verify_integrity=False) 532 | mytrades.index = pd.to_datetime(mytrades.index) 533 | mytrades['symbol'] = self.symbol 534 | mytrades = mytrades[:][['symbol', 'direction', 'lotsize', 'price', 535 | 'value', 'equity', 'ticks', 'umargin']] 536 | mytrades = mytrades.sort_index() 537 | self.trades = mytrades 538 | self.imp_equity = imp_equity 539 | self.equity = myequity 540 | self.margin = imargin 541 | #mytrades.to_csv('trades.csv') 542 | 543 | def analyze_results_silent(self, rfr): 544 | ''' analyze trades ''' 545 | trades = self.trades 546 | total_ret = trades.equity[-1] / trades.equity[0] - 1 547 | self.stats['total_ret'] = round(total_ret, 3) 548 | temp = trades.equity.resample('1D').last().dropna() 549 | temp.name = self.symbol 550 | idx = self.ohlc.close.resample('1D').last().index 551 | equity = pd.DataFrame(temp, index=idx).fillna(method='ffill').fillna(method='bfill') 552 | daily_ret = equity[self.symbol].pct_change() 553 | 554 | self.stats['symbol'] = self.symbol 555 | self.stats['daily_return'] = round(daily_ret.mean(), 4) 556 | self.stats['daily_risk'] = round(daily_ret.std(), 4) 557 | daily_excess = daily_ret - rfr/252 558 | sharpe = 252**0.5 * daily_excess.mean() / daily_excess.std() 559 | self.stats['sharpe'] = round(sharpe, 3) 560 | sortino = 252**0.5 * daily_excess.mean() / daily_excess[daily_excess < 0].std() 561 | self.stats['sortino'] = round(sortino, 3) 562 | period = (self.ohlc.index[-1] - self.ohlc.index[0]).total_seconds() / (31557600) 563 | cagr = (trades.equity.values[-1] / trades.equity.values[0]) ** (1/float(period))-1 564 | self.stats['cagr'] = round(cagr, 3) 565 | tval = trades.value.values 566 | pfr = tval[tval > 0].sum() / max(abs(tval[tval < 0].sum()), 1) 567 | self.stats['pfr'] = round(pfr, 3) 568 | maxdd = _max_draw(trades.equity.sort_index()) 569 | self.stats['maxdd'] = round(maxdd, 3) 570 | 571 | def analyze_results(self, rfr, plot=True): 572 | ''' analyze trades ''' 573 | trades = self.trades 574 | total_ret = trades.equity[-1] / trades.equity[0] - 1 575 | self.stats['total_ret'] = round(total_ret, 3) 576 | t_short = len(trades[trades.direction == 'short']) 577 | t_long = len(trades[trades.direction == 'buy']) 578 | pt_count = len(trades[trades.value > 0]) 579 | pt_short = len(trades[(trades.value > 0) & (trades.direction == 'cover')]) 580 | pt_long = len(trades[(trades.value > 0) & (trades.direction == 'sell')]) 581 | total_trades = t_long + t_short 582 | 583 | print(self.symbol) 584 | print('Starting Equity: ' + str(trades['equity'][0])) 585 | print('Final Equity: ' + str(trades['equity'][-1])) 586 | print('Total return: {:.2%} '.format(float(total_ret))) 587 | print('Profitable trades: '+str(int(pt_count))) 588 | print('Losing trades: '+str(int(total_trades - pt_count))) 589 | 590 | if total_trades > 0: 591 | winners = pt_count / total_trades*100 592 | print('Winrate: ' + str(round(winners, 2)) + '%') 593 | else: 594 | print('No trades made') 595 | 596 | if t_short > 0: 597 | print('Short winrate: ' + str(round(pt_short/t_short*100, 2)) + '%') 598 | if t_long > 0: 599 | print('Long winrate: ' + str(round(pt_long/t_long*100, 2)) + '%') 600 | 601 | temp = trades.equity.resample('1D').last().dropna() 602 | temp.name = self.symbol 603 | idx = self.ohlc.close.resample('1D').last().index 604 | equity = pd.DataFrame(temp, index=idx).fillna(method='ffill').fillna(method='bfill') 605 | daily_ret = equity[self.symbol].pct_change() 606 | 607 | self.stats['symbol'] = self.symbol 608 | self.stats['daily_return'] = round(daily_ret.mean(), 4) 609 | self.stats['daily_risk'] = round(daily_ret.std(), 4) 610 | daily_excess = daily_ret - rfr/252 611 | sharpe = 252**0.5 * daily_excess.mean() / daily_excess.std() 612 | self.stats['sharpe'] = round(sharpe, 3) 613 | sortino = 252**0.5 * daily_excess.mean() / daily_excess[daily_excess < 0].std() 614 | self.stats['sortino'] = round(sortino, 3) 615 | period = (self.ohlc.index[-1] - self.ohlc.index[0]).total_seconds() / (31557600) 616 | cagr = (trades.equity.values[-1] / trades.equity.values[0]) ** (1/float(period))-1 617 | self.stats['cagr'] = round(cagr, 3) 618 | tval = trades.value.values 619 | pfr = tval[tval > 0].sum() / max(abs(tval[tval < 0].sum()), 1) 620 | self.stats['pfr'] = round(pfr, 3) 621 | maxdd = _max_draw(trades.equity.sort_index()) 622 | closs = _consecutive_loss(trades.equity.sort_index()) 623 | self.stats['maxdd'] = round(maxdd, 3) 624 | 625 | print('Daily return: {:.2%} '.format(float(daily_ret.mean()))) 626 | print('Risk: {:.2%} '.format(float(daily_ret.std()))) 627 | print('Sharpe: {:.2f} '.format(float(sharpe))) 628 | print('Sortino: {:.2f} '.format(float(sortino))) 629 | print('CAGR: {:.2%} '.format(float(cagr))) 630 | print('Profit factor: {:.2f}'.format(pfr)) 631 | print('Consecutive losses: ' + str(closs)) 632 | print('Max drawdown: {:.2%} '.format(float(maxdd))) 633 | print('\n') 634 | 635 | if plot: 636 | new_equity = trades.equity[(trades.equity != trades.equity.shift(1))] 637 | rolling_dd = new_equity.rolling(min_periods=1, window=2, 638 | center=False).apply(func=_max_rolling_dd) 639 | 640 | zipp = list(zip(new_equity, rolling_dd)) 641 | df1 = pd.DataFrame(zipp, index=new_equity.index) 642 | df1.columns = ['Equity', 'Drawdown'] 643 | 644 | fig = plt.figure() 645 | ax1 = fig.add_subplot(211) 646 | df1.plot(ax=ax1) 647 | ax1.set_ylabel('Portfolio value (USD)') 648 | ax1.set_xlabel('') 649 | plt.gcf().set_size_inches(12, 15) 650 | plt.show() 651 | plt.close() 652 | 653 | def plot_trades(self, startdate, enddate): 654 | ''' plot trades ''' 655 | tlen = len(self.trades) 656 | if tlen > 0: 657 | trd = self.trades 658 | subset = slice(str(startdate), str(enddate)) 659 | frm = trd.ix[subset] 660 | 661 | lent = frm.price[(frm.direction == 'buy') & (frm.lotsize > 0)] 662 | sent = frm.price[(frm.direction == 'short') & (frm.lotsize < 0)] 663 | lex = frm.price[(frm.direction == 'sell') & (frm.lotsize < 0)] 664 | sex = frm.price[(frm.direction == 'cover') & (frm.lotsize > 0)] 665 | 666 | fig = plt.figure() 667 | ax1 = fig.add_subplot(212) 668 | plt.gcf().set_size_inches(12, 15) 669 | ax1.set_ylabel('') 670 | ax1.set_xlabel('') 671 | 672 | if len(lent) > 0: 673 | pylab.plot(lent.index, lent.values, '^', color='lime', markersize=12, 674 | label='long enter') 675 | if len(sent) > 0: 676 | pylab.plot(sent.index, sent.values, 'v', color='red', markersize=12, 677 | label='short enter') 678 | if len(lex) > 0: 679 | pylab.plot(lex.index, lex.values, 'o', color='lime', markersize=7, 680 | label='long exit') 681 | if len(sex) > 0: 682 | pylab.plot(sex.index, sex.values, 'o', color='red', markersize=7, 683 | label='short exit') 684 | 685 | temp = pd.DataFrame(self.ohlc.open.ix[subset]) 686 | temp.columns = [self.symbol+' Trades'] 687 | temp.plot(ax=ax1, color='black') 688 | plt.show() 689 | plt.close() 690 | 691 | fig = plt.figure() 692 | ax1 = fig.add_subplot(212) 693 | plt.gcf().set_size_inches(12, 15) 694 | ax1.set_ylabel('') 695 | ax1.set_xlabel('') 696 | eqt = pd.DataFrame(self.trades.ticks[subset].cumsum()*self.tick_size) 697 | eqt.columns = ['value'] 698 | idx = eqt.index 699 | (eqt + self.ohlc.open[idx[0]]).plot(ax=ax1, color='red', style='-', label='value') 700 | self.ohlc.close.ix[subset].plot(ax=ax1, color='black', label='price') 701 | plt.show() 702 | plt.close() 703 | else: 704 | print('No trades to plot!') 705 | 706 | 707 | def annual_gains(self, start, end): 708 | ''' calculate annual gains ''' 709 | gains = [] 710 | years = [] 711 | 712 | temp = self.trades.equity.resample('1D').last().dropna() 713 | temp.name = 'equity' 714 | idx = self.ohlc.close.resample('1D').last().index 715 | equity = pd.DataFrame(temp, index=idx).fillna(method='ffill').fillna(method='bfill') 716 | 717 | if self.trades.lotsize.abs().mean() == 1: 718 | for i in range(start, end+1, 1): 719 | gain = (equity[str(i)].equity[-1] - \ 720 | equity[str(i)].equity[0]) / equity.equity[0] 721 | gains.append(gain*100) 722 | years.append(i) 723 | else: 724 | for i in range(start, end+1, 1): 725 | gain = (equity[str(i)].equity[-1] - \ 726 | equity[str(i)].equity[0])/equity[str(i)].equity[0] 727 | gains.append(gain*100) 728 | years.append(i) 729 | 730 | zipp = list(zip(gains, years)) 731 | df1 = pd.DataFrame(zipp) 732 | df1.columns = ['gains', 'years'] 733 | 734 | fig = plt.figure() 735 | ax1 = fig.add_subplot(212) 736 | df1.plot(x='years', y='gains', ax=ax1, kind='bar', color='green') 737 | ax1.set_ylabel('Annual Returns (%)') 738 | ax1.set_xlabel('') 739 | plt.gcf().set_size_inches(12, 15) 740 | plt.show() 741 | plt.close() 742 | 743 | def analyze_results_ffn(self, rfr): 744 | ''' analyze performance with ffn''' 745 | data = self.trades.equity.resample('1D').last().dropna() 746 | data.name = self.symbol 747 | idx = self.ohlc.close.resample('1D').last().index 748 | equity = pd.DataFrame(data, index=idx).fillna(method='ffill').fillna(method='bfill') 749 | myffn = PerformanceStats(equity[self.symbol], rfr) 750 | print('\n') 751 | myffn.display() 752 | print('\n') 753 | myffn.display_monthly_returns() 754 | print('\n') 755 | #print(myffn.stats) 756 | -------------------------------------------------------------------------------- /examples/InsideThePinkBox.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": null, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "# Me and Cleolipton had two spots\n", 10 | "# The 2 for 5 dollar hits with blue tops\n", 11 | "# Godda go Coolio, mean it's getting too hot\n", 12 | "# If Cleo had twins she'd probably have 2Putins\n", 13 | "\n", 14 | "Oh snap son! Ahhaaahhahahh\n", 15 | "\n", 16 | "# Obstruction, Collusion, Coercion\n", 17 | "\n", 18 | "# Illegal wiretapping, illegal hacking\n", 19 | "\n", 20 | "# Using state resources for personal benefit\n", 21 | "\n", 22 | "# Attempted Jedi mind tricking\n", 23 | "\n", 24 | "# Spamming, Drawing cartoons )))\n", 25 | "\n", 26 | "# Tempering with electrical grid\n", 27 | "\n", 28 | "# Running interference on behalf of foundation clients\n", 29 | "\n", 30 | "# Competition getting nervous?\n", 31 | "\n", 32 | "Welcome to Wall St!\n", 33 | "\n", 34 | "\n", 35 | "# And all of it for nothing, Ahhahahahah\n", 36 | "\n", 37 | "# All of this activity of yours is just making me randy darling.\n", 38 | "\n", 39 | "# Let me give you a piece of advice...\n", 40 | "# If you would have just sent me a birthday card on my bday, \n", 41 | "# you would have gotten a lot farther.\n", 42 | "# P.I.M.P., your lady is a piece of work )))\n", 43 | "\n", 44 | "Babalaow knows everything!\n", 45 | "\n", 46 | "\n", 47 | "# Whach you got a team of monkeys working on this around the clock?\n", 48 | "\n", 49 | "# Outrun me already!\n", 50 | "\n", 51 | "# 2017 results are almost in.\n", 52 | "\n", 53 | "Tik Tak! Tik Tak! Tik Tak!" 54 | ] 55 | } 56 | ], 57 | "metadata": { 58 | "kernelspec": { 59 | "display_name": "Python 3", 60 | "language": "python", 61 | "name": "python3" 62 | }, 63 | "language_info": { 64 | "codemirror_mode": { 65 | "name": "ipython", 66 | "version": 3 67 | }, 68 | "file_extension": ".py", 69 | "mimetype": "text/x-python", 70 | "name": "python", 71 | "nbconvert_exporter": "python", 72 | "pygments_lexer": "ipython3", 73 | "version": "3.5.2" 74 | } 75 | }, 76 | "nbformat": 4, 77 | "nbformat_minor": 2 78 | } 79 | -------------------------------------------------------------------------------- /examples/MrBigglesworth.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": { 7 | "collapsed": true 8 | }, 9 | "outputs": [], 10 | "source": [ 11 | "import datetime\n", 12 | "import amipy\n", 13 | "from quant_iq_mrbigglesworth import MrBigglesworth\n", 14 | "\n", 15 | "class Context(object):\n", 16 | " ''' backtest context '''\n", 17 | " def __init__(self):\n", 18 | " self.symbol = 'AMZN.30min' #*** AMZN ***#\n", 19 | " self.dbase = 'SP100'\n", 20 | " self.starting_equity = 100000.00\n", 21 | " self.margin_required = 0 \n", 22 | " self.tick_size = 0.01\n", 23 | " self.tick_value = 0.01\n", 24 | " self.risk = 0.65\n", 25 | " self.warmup_bars = 500\n", 26 | " self.commission = 0.005 #*** per lot ***#\n", 27 | " \n", 28 | "START_DATE = datetime.datetime(2007, 1, 2)\n", 29 | "END_DATE = datetime.datetime(2016, 12, 31)" 30 | ] 31 | }, 32 | { 33 | "cell_type": "code", 34 | "execution_count": 2, 35 | "metadata": { 36 | "collapsed": true 37 | }, 38 | "outputs": [], 39 | "source": [ 40 | "OBJ = Context()\n", 41 | "\n", 42 | "OHLC = amipy.mongo_grab(OBJ.symbol, OBJ.dbase, START_DATE, END_DATE)\n", 43 | "\n", 44 | "STRAT = MrBigglesworth(OBJ) #*** Mua hah ha! ***#" 45 | ] 46 | }, 47 | { 48 | "cell_type": "code", 49 | "execution_count": 3, 50 | "metadata": {}, 51 | "outputs": [ 52 | { 53 | "name": "stdout", 54 | "output_type": "stream", 55 | "text": [ 56 | "Backtest finished in 0.15582585334777832 seconds.\n", 57 | "\n", 58 | "AMZN.30min\n", 59 | "Starting Equity: 100000.0\n", 60 | "Final Equity: 8216322.145\n", 61 | "Total return: 8116.32% \n", 62 | "Profitable trades: 70\n", 63 | "Losing trades: 40\n", 64 | "Winrate: 63.64%\n", 65 | "Short winrate: 52.94%\n", 66 | "Long winrate: 68.42%\n", 67 | "Daily return: 0.15% \n", 68 | "Risk: 2.83% \n", 69 | "Sharpe: 0.86 \n", 70 | "Sortino: 4.67 \n", 71 | "CAGR: 57.70% \n", 72 | "Profit factor: 3.42\n", 73 | "Consecutive losses: 4\n", 74 | "Max drawdown: -26.15% \n", 75 | "\n", 76 | "\n" 77 | ] 78 | }, 79 | { 80 | "data": { 81 | "image/png": "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\n/we5IFtUFuJNawAAAABJRU5ErkJggg==\n", 82 | "text/plain": [ 83 | "" 84 | ] 85 | }, 86 | "metadata": {}, 87 | "output_type": "display_data" 88 | }, 89 | { 90 | "name": "stdout", 91 | "output_type": "stream", 92 | "text": [ 93 | "\n", 94 | "\n", 95 | "Stats for AMZN.30min from 2007-04-27 00:00:00 - 2016-12-30 00:00:00\n", 96 | "Annual risk-free rate considered: 0.25%\n", 97 | "Summary:\n", 98 | "Total Return Sharpe CAGR Max Drawdown\n", 99 | "-------------- -------- ------ --------------\n", 100 | "8116.32% 0.86 57.70% -26.15%\n", 101 | "\n", 102 | "Annualized Returns:\n", 103 | "mtd 3m 6m ytd 1y 3y 5y 10y incep.\n", 104 | "----- ------ ------ ------ ------ ------ ------ ------ --------\n", 105 | "0.00% -6.26% 12.16% 17.60% 17.60% 28.90% 40.82% 57.70% 57.70%\n", 106 | "\n", 107 | "Periodic:\n", 108 | " daily monthly yearly\n", 109 | "------ ------- --------- --------\n", 110 | "sharpe 0.86 1.02 0.98\n", 111 | "mean 38.98% 58.37% 77.38%\n", 112 | "vol 44.91% 57.24% 78.87%\n", 113 | "skew 19.90 3.36 1.14\n", 114 | "kurt 481.31 12.33 1.86\n", 115 | "best 88.24% 88.24% 245.16%\n", 116 | "worst -14.72% -17.52% -22.38%\n", 117 | "\n", 118 | "Drawdowns:\n", 119 | "max max # days avg avg # days\n", 120 | "------- ------------ ------ ------------\n", 121 | "-26.15% 477 -8.78% 173.46\n", 122 | "\n", 123 | "Misc:\n", 124 | "--------------- ------\n", 125 | "avg. up month 19.37%\n", 126 | "avg. down month -1.40%\n", 127 | "up year % 88.89%\n", 128 | "12m up % 88.68%\n", 129 | "--------------- ------\n", 130 | "\n", 131 | "\n", 132 | "Year Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec YTD\n", 133 | "----- ------ ----- ----- ----- ----- ----- ----- ------ ----- ------ ----- ------ ------\n", 134 | "2007 0 0 0 0 0 0 0 6.61 3.58 -8.86 0 0 0.65\n", 135 | "2008 0 0 0 0 0 -0.71 0.37 19.48 0 59.12 0 -3.45 82.93\n", 136 | "2009 0 83.79 5.19 0 22.72 0 0.85 -6.52 -6.76 0 65.49 0 245.16\n", 137 | "2010 -3.49 0 0 29.29 -6.92 0.43 0 0 0 0 0 0 16.64\n", 138 | "2011 88.24 -1.47 0 0 0 0 41.92 -14.72 0 0 0 -10.91 100.01\n", 139 | "2012 0 0 0 6.19 10.97 1.49 0 0 0 20.08 9.56 0 57.34\n", 140 | "2013 0 6.39 0 0.52 0 0 17.81 0 9.42 17.59 1.43 0 64.43\n", 141 | "2014 0.62 0 0 -6.47 0 0 0 0 0 -17.52 -0.01 0 -22.38\n", 142 | "2015 -4.26 0 0 25.98 0 1.3 64.52 -4.32 0 11.93 9.02 0 134.68\n", 143 | "2016 -10.91 4.66 0 12.47 0 0 6.2 0 12.66 -3.4 -2.96 0 17.6\n", 144 | "\n", 145 | "\n" 146 | ] 147 | }, 148 | { 149 | "data": { 150 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAskAAAGKCAYAAAD+EdyyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd8VMX+//HXpBGKiCAlEJGqFKVIVFAvFkTR7xVQ+dqV\noteG13pV/CoWov6sX/R6xW7EAmKBC5Z7AcWr8AWRIAhSFAgtcUEgFIGQTbLz+2PPtuym76bxfvLg\nsXNm5syZxfjw44c5M8Zai4iIiIiIBMTV9ARERERERGobBckiIiIiIsUoSBYRERERKUZBsoiIiIhI\nMQqSRURERESKUZAsIiIiIlKMgmQRERERkWIUJIuIiIiIFKMgWURERESkGAXJIiIiIiLFJNT0BACO\nPvpo26FDh5qehoiIiIjUc0uXLt1prW1ZVr9aESR36NCBzMzMmp6GiIiIiNRzxpjN5emn5RYiIiIi\nIsUoSBYRERERKUZBsoiIiIhIMbViTXIkBQUFZGdnc+jQoZqeitRSycnJpKamkpiYWNNTERERkXqm\n1gbJ2dnZHHHEEXTo0AFjTE1PR2oZay27du0iOzubjh071vR0REREpJ6ptcstDh06RIsWLRQgS0TG\nGFq0aKG/aRAREZGYqLVBMqAAWUqlnw8RERGJlVodJNcG//znPzHGsHbtWn/dpk2bMMbw0EMP+et2\n7txJYmIit912GwDnn38+ffr08f9u27Ytp556KgCjRo2iXbt25Ofn++8t6TCVIUOG0Lt3b3r27MnN\nN99MUVERALm5uQwePJiuXbsyePBgdu/eXaHvdcMNN7B69epy9c3IyPB/j6SkJE488UT69OnDuHHj\nKvTMYNdccw3//Oc/K32/iIiISCwpSC7D1KlTOeOMM5g6dWpIfceOHfniiy/81x9//DE9e/b0X8+e\nPZvly5ezfPly/u///o+mTZvy+OOP+9vj4+N5++23y3z+Rx99xE8//cTPP//Mjh07+PjjjwF46qmn\nGDRoEOvWrWPQoEE89dRTFfpeb775Jj169ChX39GjR/u/S9u2bfnmm29Yvnx52DMLCwsrNAcRERGR\n2kpBcin279/PggULeOutt/jwww9D2ho1akT37t39JwVOmzaNyy67LOI4d9xxBxdeeCGDBw/21915\n551MnDixzMCyadOmgDcAdbvd/iUGM2fOZOTIkQCMHDnSn5V99NFHGTlyJH/605849thjmT59Ovfd\ndx8nnngiQ4YMoaCgAICzzjrLP/cmTZrw4IMP0rt3b/r378/27dvL/Wf00EMPcd1113H66aczatQo\nNmzYwJ/+9Cf69u1Lv379WLx4MQAej4dbb72Vbt26MXjwYHbu3OkfY8mSJZx55pn069ePCy64wP/8\niRMn0qNHD3r16sU111xT7jmJiIiIVFWt3d0i2J133sny5cujOmafPn144YUXSu0zc+ZMhgwZwnHH\nHUeLFi1YunQp/fr187dfccUVfPjhh7Ru3Zr4+Hjatm3Lb7/9FjLG9OnTyczM9AeLPu3bt+eMM87g\nvffe46KLLip1Hueffz4//PADF1xwASNGjABg+/btpKSkANCmTZuQwHbDhg188803rF69mgEDBvDp\np5/yzDPPcPHFF/PFF18wfPjwkPEPHDhA//79eeKJJ7jvvvt44403QpaSlGXt2rV89913JCcnc/Dg\nQebOnUtycjJr165l5MiRLF68mE8++YSNGzeyevVqfvvtN3r06MHNN99Mfn4+d9xxB7NmzeLoo4/m\ngw8+YPz48bz++us888wzbN68maSkJPbs2VPu+YiIiIhUlTLJpZg6dSpXXHEF4A2Iiy+5GDJkCHPn\nzuXDDz/k8ssvD7s/JyeHO+64gylTptCgQYOw9gceeIBnn30Wj8dT6jxmz56Ny+UiPz+fefPmhbUb\nY0JeYrvgggtITEzkxBNPpKioiCFDhgBw4oknsmnTprD7k5KS+POf/wxAv379IvYpzbBhw0hOTgYg\nPz+f66+/nhNOOIErrrjCv+75u+++48orryQuLo7U1FTOOussANasWcOqVas499xz6dOnD0899RRb\nt24FoGfPnlxzzTV88MEH2gtZREREqlWdyCSXlfGNhdzcXObNm8fKlSsxxlBUVIQxhmeffdbfJykp\niX79+vH888+zevVqZs2a5W+z1jJy5EjGjRtX4trfrl270qdPHz766KMy55OcnMywYcOYOXMmgwcP\npnXr1rhcLlJSUnC5XLRq1crf1xeQx8XFkZiY6A+g4+LiIi7vCO4THx9f4bXFjRs39peff/55jjnm\nGN5//30KCgpo0qRJqfdaa+nVqxfz588Pa5s9ezbffvsts2bN4sknn2TFihXEx8dXaG4iIiJSt+WS\ny3jGM3/WfFYOWwl444dYUya5BJ988gnXXnstmzdvZtOmTWzdupWOHTuGBXP33HMPTz/9NM2bNw+p\n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\n", 151 | "text/plain": [ 152 | "" 153 | ] 154 | }, 155 | "metadata": {}, 156 | "output_type": "display_data" 157 | }, 158 | { 159 | "data": { 160 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAs8AAAGKCAYAAADzD6z1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4VFX+x/H3SUhIaEapUUBAWZQmJShgAXUVcFkLqyCg\n7KoLYmODipVFXGR/ghUbRWEVBURxAXURQRRBqkQQEFFQQUINARIILeX8/rgzwwxpk2Qmk0k+r+eZ\nZ+49t53sqnw4+d5zjLUWEREREREpXESoOyAiIiIiEi4UnkVERERE/KTwLCIiIiLiJ4VnERERERE/\nKTyLiIiIiPhJ4VlERERExE8KzyIiIiIiflJ4FhERERHxk8KziIiIiIifFJ5FRERERPxUKdQdKEyt\nWrVso0aNQt0NERERESnHkpKS9ltraxd2XpkPz40aNWLNmjWh7oaIiIiIlGPGmO3+nKeyDRERERER\nPyk8i4iIiIj4SeFZRERERMRPZb7mOS+ZmZkkJydz/PjxUHelVMXExFC/fn2ioqJC3RURERGRCiks\nw3NycjLVq1enUaNGGGNC3Z1SYa0lNTWV5ORkGjduHOruiIiIiFRIYVm2cfz4cWrWrFlhgjOAMYaa\nNWtWuNF2ERERkbIkLMMzUKGCs1tF/JlFREREypKwDc/hpFq1aqHugoiIiIgEgMKziIiIiIifFJ6L\n4bHHHuP111/37I8cOZJnnnmGq6++mnbt2tGqVSvmzp2b67rFixfTs2dPz/7999/P22+/DUBSUhJd\nunShffv2dOvWjd27dwf95xARERGRognL2TZ8JCbCunWBvWebNvDyy/ke7tOnD4mJidx3330AfPDB\nB3z++ecMGTKEGjVqsH//fjp27Mj111/vV51yZmYmDzzwAHPnzqV27drMnDmTJ598kilTpgTsRxIR\nERGRkgv/8BwCbdu2Zd++fezatYuUlBTOPPNM6tWrx9ChQ1myZAkRERHs3LmTvXv3Uq9evULv99NP\nP7Fx40auueYaALKzs4mPjw/2jyEiIiIiRRT+4bmAEeJguuWWW5g1axZ79uyhT58+TJs2jZSUFJKS\nkoiKiqJRo0a5ppWrVKkSOTk5nn33cWstLVq0YMWKFaX6M4iIiIiEtexsSEiAX3/Nfeyuu+DFFwP+\nSNU8F1OfPn14//33mTVrFrfccgtpaWnUqVOHqKgovvrqK7Zv357rmnPPPZdNmzZx4sQJDh06xKJF\niwBo1qwZKSkpnvCcmZnJDz/8UKo/j4iIiEjYOX7cKd9t3RruvPPUJy4OVq4MyiPDf+Q5RFq0aMHh\nw4c555xziI+Pp3///vz5z3+mVatWJCQkcMEFF+S6pkGDBvTu3ZuWLVvSuHFj2rZtC0B0dDSzZs1i\nyJAhpKWlkZWVRWJiIi1atCjtH0tEREQk/Fx/PQwbdmp/yxYI0uQLCs8lsGHDBs92rVq18i27OHLk\niGd77NixjB07Ntc5bdq0YcmSJYHvpIiIiEhFU7kynDwZlFurbENEREREypfoaDhxIii3VngWERER\nkfIllCPPxpgpxph9xpiNXm0zjTHrXJ9txph1rvZGxphjXscmeF3T3hizwRiz1RjzivFnAmQRERER\nkaKKjg5aePan5vlt4DVgqrvBWtvHvW2MeQFI8zr/F2ttmzzuMx4YCKwC5gHdgc+K3mVPH/xagKQ8\nsdaGugsiIiIiZV/lynDwIDz+uG/7DTdAx44lunWh4dlau8QY0yivY67R497AVQXdwxgTD9Sw1q50\n7U8FbqSY4TkmJobU1FRq1qxZYQK0tZbU1FRiYmJC3RURERGRsq2NaxzXe57nzExYvBhKuK5GSWfb\nuBzYa63d4tXW2BizFkgHhltrlwLnAMle5yS72vJkjBkEDAJo2LBhruP169cnOTmZlJSUEnY/vMTE\nxFC/fv1Qd0NERESkbLvrLufj7Ykn4LnnICMDqlYt9q1LGp77AjO89ncDDa21qcaY9sAcY0yRJyu2\n1k4CJgEkJCTkqlWIioqicePGxeyyiIiIiFQ4XbvC//0fLF8O11xT7NsUe7YNY0wloBcw091mrT1h\nrU11bScBvwB/AHYC3kOm9V1tIiIiIiLB17kzREY6pRslUJKp6v4IbLbWesoxjDG1jTGRru0mQFPg\nV2vtbiDdGNPRVSc9AJhbgmeLiIiISEWXleX/udWqQYcO8PXXJXqkP1PVzQBWAM2MMcnGGHcBya34\nlmwAXAGsd01dNwsYbK094Dp2L/AWsBVnRLrYM22IiIiIiDBunPOdkODf+V26wOrVMG0azJgBP/xQ\n5Eeasj79WUJCgl2zZk2ouyEiIiIiZcnPP0OrVtCrlxOE/fH1107ts9vo0c6LhIAxJslaW2gKL+kL\ngyIiIiIipctauOceiI2Fl17y/7ouXWD7djh2zNmvVavIj1Z4FhEREZHw8t578OWXMGEC1KtXtGvz\nmAa5KErywqCIiIiISOlKTYUHH4ROnWDgwFJ/vMKziIiIiISPRx6BQ4dg4kSIKP0oq/AsIiIiIuFh\nyRKYMgUeesh5WTAEFJ5FREREpOw7cQLuvhsaNYIRI0LWDb0wKCIiIiJl33PPwebNMG8eVKkSsm5o\n5FlEREREyrYtW+CZZ6B3b+jRI6Rd0ciziIiIiIRGaioMGwYpKc7+eefB2LEQHX3qHGvh3nuhcmV4\n+eXQ9NOLwrOIiIiIlL4DB+Caa2DTJmjRAnJy4NNPwRjfhU+mT4cvvoA33oD4+ND110XhWURERERK\n18GDp4Lz3LnQrZvTPmSIM7ocEwN16zqjzv/3f3DJJc7LgmWAwrOIiIiIlJ5Dh5zgvHEjzJlzKjgD\nPP88bNgAzz57qi0uLmRzOudF4VlERERESsehQ3DttU5Anj0798t/0dGwaBGkp59qi4lxPmWEwrOI\niIiIBF9amjPKvG4d/Pe/cN11eZ8XEeGMNpdRZWP8W0RERETKr/R0JzivXQsffQQ9e4a6R8WmkWcR\nERERCZ70dOjeHZKSYNYs+POfQ92jEtHIs4iIiIgEx+HDTl3zt9/CBx/ADTeEukclppFnEREREQm8\nI0ecuuZVq2DmTLjpplD3KCA08iwiIiIigeUOzitWwIwZ8Je/hLpHAaPwLCIiIiKBk5HhvBC4fLmz\nOuAtt4S6RwGlsg0RERERCYyjR53gvHQpTJsGvXuHukcBp/AsIiIiIsVjrbOk9vbtzv6vv8KPP8K7\n78Ktt4a2b0Gi8CwiIiIixZOeDq+9BmefDXXrQmysU6rRp0+oexY0Cs8iIiIiUjIPPwxDh4a6F6VC\nLwyKiIiIiPhJ4VlERERExE8KzyIiIiIiflLNs4iIiEi4euMNmD/fv3MrV4YXX4QGDYLbp3JO4VlE\nREQkXI0fDzt2QJMmhZ+7cSPUqAGTJwe/X+WYwrOIiIhIOLv6avjoo8LPS0x0ppV78kn/wrbkSTXP\nIiIiIhXBo49CVBSMHh3qnoQ1hWcRERGRiiA+Hu6+G955x1kJUIpF4VlERESkotDoc4kpPIuIiIhU\nFBp9LrFCw7MxZooxZp8xZqNX20hjzE5jzDrX5zqvY48bY7YaY34yxnTzau/uattqjHks8D+KiIiI\niBTq0UfBWnj77ZLfy9qS3yPM+DPy/DbQPY/2l6y1bVyfeQDGmObArUAL1zVvGGMijTGRwOtAD6A5\n0Nd1roiIiIiUpvh4iImBY8dKfq9Zs5zvhg1Lfq8wUehUddbaJcaYRn7e7wbgfWvtCeA3Y8xW4GLX\nsa3W2l8BjDHvu87dVOQei4iIiEjo7dkDw4ZBly7Qq1eoe1NqSlLzfL8xZr2rrONMV9s5wA6vc5Jd\nbfm158kYM8gYs8YYsyYlJaUEXRQRERGRoEhMhKNHYeJEMCbUvSk1xQ3P44HzgDbAbuCFgPUIsNZO\nstYmWGsTateuHchbi4iIiEhJ/e9/MHMmDB8OzZqFujelqlgrDFpr97q3jTFvAp+6dncC3gum13e1\nUUC7iIiIiJQlyckwYIAzspyXn3+G5s2dlw8rmGKNPBtj4r12bwLcM3F8DNxqjKlsjGkMNAVWA98C\nTY0xjY0x0TgvFX5c/G6LiIiISEC9+y5ER0OlSs4LgN98A3FxeX8uvxymT3fOr2AKHXk2xswAugK1\njDHJwFNAV2NMG8AC24C7Aay1PxhjPsB5ETALuM9am+26z/3A50AkMMVa+0PAfxoRERERKZ5Fi6Bq\nVbjvPme/fXu46abQ9qkM8me2jb55NE8u4PzRQK5la1zT2c0rUu9EREREpHRs2QKtW8Mzz4S6J2Wa\nVhgUEREREdi6FZo2DXUvyjyFZxEREZFwdfw4REaW/D7p6bBvn8KzHxSeRURERMJRWhr88gu0alXy\ne23Z4nwrPBeqWFPViYiIiEiIrVoF1kKnTsW7PikJxo1ztjdscL4Vngul8CwiIiISjlascFb2u/ji\nol977rnw1VfOx61WLTj//MD1r5xSeBYREREJRytWQIsWUKNG0a/9/ns4csS3rUoVqFw5MH0rxxSe\nRURERMJNTg6sXAm9exfv+qgoOPPMwPapgtALgyIiIiLhZvNm54XB4tY7S7EpPIuIiIiEmxUrnG+F\n51Kn8CwiIiJS2jIz4YILIDbW93P22c58y4VZscIpu/jDH4LfV/GhmmcRERGR0paRAT/9BFdeCR06\nOG3JyTB9Ovz4I9SpU/D1K1ZAx44QoXHQ0qbwLCIiIhIq118PiYnO9qZNTnjevbvgaw4dcs699dbg\n909y0V9XRERERMqC+Hjnu7DwvGqV861655BQeBYREREpC+LinHmWCwvPJVkcRUpM4VlERESkLDAG\n6tWDPXsKPm/FCmjZsniLo0iJqeZZREREpKyIj4fZs51wnJ+ff4Y77ii9PokPhWcRERGRsmLoUPjg\ng4LPadECBg8unf5ILgrPIiIiImVF797FX3JbSoVqnkVERERE/KTwLCIiIiLiJ4VnERERERE/KTyL\niIiIiPhJ4VlERERExE8KzyIiIiIiflJ4FhERERHxk8KziIiIiIifFJ5FRERERPyk8CwiIiIi4ieF\nZxERERERPyk8i4iIiIj4SeFZRERERMRPCs8iIiIiIn5SeBYRERER8ZPCs4iIiIiInwoNz8aYKcaY\nfcaYjV5tzxljNhtj1htjZhtj4lztjYwxx4wx61yfCV7XtDfGbDDGbDXGvGKMMcH5kUREREREgsOf\nkee3ge6ntS0EWlprWwM/A497HfvFWtvG9Rns1T4eGAg0dX1Ov6eIiIiISJlWaHi21i4BDpzWtsBa\nm+XaXQnUL+gexph4oIa1dqW11gJTgRuL12URERERkdAIRM3zncBnXvuNjTFrjTFfG2Mud7WdAyR7\nnZPsasuTMWaQMWaNMWZNSkpKALooIiIiIlJyJQrPxpgngSxgmqtpN9DQWtsWeBCYboypUdT7Wmsn\nWWsTrLUJtWvXLkkXRUREREQCplJxLzTG/A3oCVztKsXAWnsCOOHaTjLG/AL8AdiJb2lHfVebiIiI\niEjYKNbIszGmO/AIcL219qhXe21jTKRruwnOi4G/Wmt3A+nGmI6uWTYGAHNL3HsRERERkVJU6Miz\nMWYG0BWoZYxJBp7CmV2jMrDQNePcStfMGlcA/zLGZAI5wGBrrftlw3txZu6IxamR9q6TFhEREREp\n8woNz9bavnk0T87n3I+Aj/I5tgZoWaTeiYiIiIiUIVphUERERETETwrPIiIiIiJ+UngWEREREfGT\nwrOIiIiIiJ8UnkVERERE/KTwLCIiIiLiJ4VnERERERE/KTyLiIiIiPhJ4VlERERExE8KzyIiIiIi\nflJ4FhERERHxk8KziIiIiIifFJ5FRERERPyk8CwiIiJS2qwNdQ+kmBSeRUREREpbWprzXaNGaPsh\nRabwLCIiIlLaUlKc79q1Q9sPKTKFZxEREZHSpvActhSeRURERErb/v3Od61aoe2HFJnCs4iIiEhp\n08hz2FJ4FhERESltKSkQFaUXBsOQwrOIiIhIaUtJcUadjQl1T6SIFJ5FRERESltKiuqdw5TCs4iI\niEhp279f9c5hSuFZREREpLS5yzYk7Cg8i4iIiJQ2heewpfAsIiIiUppOnnSW51Z4DksKzyIiIiKl\nSQukhDWFZxEREZHSpAVSwprCs4iIiEhpco88KzyHJYVnERERkdKkkeewpvAsIiIiUpoUnsOawrOI\niIhIaUpJcZblPuusUPdEikHhWURERKQ0paQ4wTkyMtQ9kWLwKzwbY6YYY/YZYzZ6tZ1ljFlojNni\n+j7T1W6MMa8YY7YaY9YbY9p5XfNX1/lbjDF/DfyPIyIiIlLGaWnusObvyPPbQPfT2h4DFllrmwKL\nXPsAPYCmrs8gYDw4YRt4CrgEuBh4yh24RURERCoMrS4Y1vwKz9baJcCB05pvAN5xbb8D3OjVPtU6\nVgJxxph4oBuw0Fp7wFp7EFhI7kAuIiIiUr4pPIe1ktQ817XW7nZt7wHqurbPAXZ4nZfsasuvXURE\nRKTiSEnR6oJhLCAvDFprLWADcS8AY8wgY8waY8yaFPd0LiIiIiLhLicHUlM18hzGShKe97rKMXB9\n73O17wQaeJ1X39WWX3su1tpJ1toEa21Cbf3DJSIiIuXB3r3w3HNOgFa+CVslCc8fA+4ZM/4KzPVq\nH+CadaMjkOYq7/gcuNYYc6brRcFrXW0iIiIi5dOxYzB9Olx3HZxzDjzmml+hZcvQ9kuKrZI/Jxlj\nZgBdgVrGmGScWTOeBT4wxtwFbAd6u06fB1wHbAWOAncAWGsPGGNGAd+6zvuXtfb0lxBFREREyo/7\n7oP//AcaNoRHHoF+/aBJE6hSJdQ9k2IyTrly2ZWQkGDXrFkT6m6IiIiIOPbvh4cfhqNHCz/3m2/g\nzDNhwwaI0Np0ZZkxJslam1DYeX6NPIuIiEgY+u472L698PMuvtgpKRD/rFoF77wDjRpBbGzB58bF\nwU03KTiXIwrPIiIiZdHOnZCRcWo/Lc359f/Bg/5dn5UFs2b5d27durBxo6ZPK6oPPoAOHULdCyll\nCs8iIiJlzZo1+Yeypk3BmMLvYS2cdx784x9wxRX5n7drF9xwAwweDB9+6N+9RSowhWcREZGyJjXV\n+R450gnLbu3awQUXBPZZF10Eo0Y5s0BMmwa33RbY+4uUMwrPIiIiZdW110KnTsF/zsMPwyefwP33\nQ5cu0KBB4deIVFCqXhcREanoIiOdF+CysuCOO5xFPEQkTwrPIiIi4tRHv/giLFoEr73mBOlgfrKz\nQ/0TixSLwrOIiIg4Bg6EHj2clwyjooL7iY11ykTc9d0iYUI1zyIiIuIwBt57D6ZMgePHg/us336D\nCROclxRHjoR773VCtUgZp/AsIiIip5x1lvMCYWl48EEYOhQSE50g/eKLzsi3SBmmsg0REREJjRYt\n4PPP4eOPnRro665zPps3h7pnIvlSeBYREZHQMQb+/GdnhcMXXoDly6FVK6fu+sCBUPdOJBeFZxER\nEQm96GinjGPLFrjrLmfGj6ZN4fXXndk5RMoIhWcREREpO2rXduqf1651Vj+8/35o0wYWLgx1z07Z\nscP5rlkztP2QkFB4FhERkbKndWtnzunZs+HYMWe1xeuvh+3bQ90z+OYbiI+Hxo1D3RMJAYVnERER\nKZuMgRtvhE2bYMwYJ0w/+GCoewVLl8Jllzn9kwpHU9WJiIgE2pdfOoGvuJYudb7PPDMw/Ql3lSvD\nI4/A3LmQnh7avvz+u/Mpren8pMxReBYREQm0m2+GgwdLdo9HHoELLghMfyRwvvnG+b7sstD2Q0JG\n4VlERCTQMjPhnnvgX/8q3vWRkRp1LquWLoUaNZyabKmQFJ5FRESCITYWatUKdS8k0JYuhc6dnb/g\nSIWkFwZFRERE/HHgAPzwg0o2KjiFZxEREQkfKSnwySfOZ948WLECfvoJ9u8P/mIqy5Y535dfHtzn\nSJF16dIFYwxz5swB4ODBg1hrg/IslW2IiIhIeIiLc5bvvv76gs+pWRPOOivv75o1nTmji1NSs3Qp\nREVBhw7F/xkk4B599FGWLFkCwE033cTWrVs5//zzefrppxkxYkTAn2eClcoDJSEhwa5ZsybU3RAR\nEfFf9eowaBC88EKoe1K+HD7sLN/tzi6ZmXDoEKSmOiUVqam+297fhw6dus+QITBuXNGf37mzM7ez\newRaQi4tLY24uDiftp49e/Lpp58CFGn02RiTZK1NKOw8jTyLiIhIeKheHdq1K961WVnO9IEtWjgr\nFhbVsWOwZg0MHVq850tQbN26NVebOzj37NkzKM9UeBYREZHyr1IlqF3b+f7oI/j226Jdf/y4M9Kt\neucyJSMjA4CoqCgyMzN9jrlDdKApPIuIiEjFMXToqYVOiuqSS+CqqwLbHymRQ65ynGXLlhEfH0+D\nBg2C/kyFZxEREak4hg1zPlIu7Nu3D4A6depQv359n2OtWrUKyjM1VZ2IiIiIhJ1XXnmFgQMHAlDL\nNXvKihUrPMdPnDgRlOcqPIuIiATKgQPw8svFeyFNRIpk1KhRnu2qVasC0LFjR6y1DBgwgD179nD4\n8OGAP1fhWUREpCSsdRbq+Nvf4JxznJraDh2gf/9Q90ykXDp69CgAw4cPz/ecypUrk56eTo0aNViw\nYAHgjESf/lJhcSg8i4iIFEd6OrzxBrRp48z/+9//wh13wLp1Tpgu7pRqIpKvd999l6pVqzJv3jxP\niD6Wx296oqOjPdvdunUjJSWFmJgYn/bi0guDIiIiRZGUBBMnwvTpkJEBbdvCpEnQty9Uqxbq3omU\naxs2bADgT3/6k6etcuXKhV63f/9+z/bixYvp2rUrgwcPpmHDhjzxxBOkpKT43QeFZxERkcJkZMD7\n78OECc5CGbGx0K8f3H03JCQ4q86JSEBlZmbyzTffcNlllxEVFcX06dN57rnncp1n8vj3b+PGjT77\n7lFqgLlz59K1a1cmTpwIwKWXXkrXrl397lexyzaMMc2MMeu8PunGmERjzEhjzE6v9uu8rnncGLPV\nGPOTMaZbcZ8tIiJSKjZsgPvvh7PPhr//3Vko49VXYdcueOstp7ZZwVkkoNLS0ujcuTPR0dFcddVV\nREdH88MPP9A/j/cILs9n0ZoxY8b47LtHrAFefvlln8BdlOAMYIqy5ne+NzEmEtgJXALcARyx1j5/\n2jnNgRnAxcDZwBfAH6y12QXdOyEhwa5Zs6bEfRQREfHLsWMwa5Yzyrx8OVSuDL17O6PMnTsrLIsE\nWV4jyfk5fvx4vmUb3vdp2rQpW7ZsKex2SdbahMJOCtQLg1cDv1hrtxdwzg3A+9baE9ba34CtOEFa\nREQktFavhg8/hAcfdGbMGDAA9u+HF16AnTth6lS49FIFZ5Eg2bp1K3kN6NauXdtnf8SIETRu3Niz\nX1C98+jRoz3bfgRnvwWq5vlWnFFlt/uNMQOANcBD1tqDwDnASq9zkl1tIiIivvr0gc8+C+w9jYGq\nVaF6dahR49R3bKxTzwxQqRL06gWDB0PXrgrLIqVgwYIFdOvWjZo1azJy5EifY3v37iUi4tRY79NP\nP83QoUMZPnw4f/nLXwq8b6dOnXz2Y2NjmTNnDt26+VYOt2zZMleNdEFKHJ6NMdHA9cDjrqbxwCjA\nur5fAO4s4j0HAYMAGjZsWNIuiohIuFm9GurXh+7dA3fPnBznxb/Dh51p5g4fhm3bIC3NCdJPPAED\nB0LNmoF7pogU6uOPPwYgNTWVBx54wNP+t7/9DWMMOTk5/Pzzz9R0/bsZFxfHa6+9Vuh9r7zySubM\nmcONN94IOFPanXHGGZ7jKSkpbNmyhY4dO9KgQQN27tzpV38DMfLcA/jOWrsXwP0NYIx5E/jUtbsT\naOB1XX1XWy7W2knAJHBqngPQRxERCTcdOsCLL4a6FyISZN5Lanv7z3/+Azi1y82aNSvWvVu2bOmz\nX6NGDc92rVq1PMt6r1u3LleJSH4CUfPcF6+SDWNMvNexmwD3OPjHwK3GmMrGmMZAU2B1AJ4vIiIi\nImEoPT2d7777Lmj3P3nypGd7ypQpntHr07lDtD9KFJ6NMVWBa4D/ejWPNcZsMMasB64EhgJYa38A\nPgA2AfOB+wqbaUNEREREwt/atWsxxmCM4cCBA572N998M8/z3aUcJZWTk+PZjoqKok6dOpw8edKn\nvahKVLZhrc0Aap7WdnsB548GRud3XERERETCX3p6Ojt37uTCCy8EoJ3XcvU1a9bk008/5cCBAzz8\n8MMAfPbZZ7Rv355q1aoRGxsbsH5kZ58ap3WH9qioqBLdUysMioiIiEhAuV/My8nJ4X33bDZeevbs\n6bNfr149v2uOi6J58+ae7UCF8kDN8ywiIhIYEyfC779DEP4gFZHS1aFDB/r16wf4vqzn7cEHH6RN\nmzZBeX6lSpVYsGABUPSVBPMTkBUGg0krDIqIVBA5Oc50cWPGwHXXwcyZUK1aqHslIsWQ1yqB1loO\nHz6cK0RnZWURGRlZWl3LlzGmVFcYFBERKb4TJ6B/fyc43303zJ2r4CwSxuLj4332n332WQCqV6/u\n0x4VFVUmgnNRKDyLiEhoHTgA11zjrPI3ZgyMH++s9CciAZeWloYxhj59+gT1OYcPH/bZv/XWWz3b\ny5Yto27dugBkZmYGtR/BoPAsIiKl74034KqrnE+bNrBqFcyYAY88oiWxRYJox44dAHzwwQdBub+1\nliNHjnDkyBFPW9++fTn33HM9+507d/Z7Nb+ySOFZRERK39SpsHYtZGXBBRfAF1+A18iUiJTMY489\nxqBBgzDG8N577wFw/PhxsrKygvrcsWPHekozzj77bLZt28b06dNznRdupRre9MKgiIiUvo4dIS4O\n5s8PdU9Eyg1rLTNnzuSmm24iJibG51h8fDy7d+9m7ty53HDDDZ7zA837RcG4uDgOHjyY77lLliyh\nVq1aPtPJhZK/LwyqqExERESkHFiwYAF9+/bN89ju3bsBPMG5NCxdurTA41dccUUp9SSwVLYhIiIi\nUg4UtSQjIyMj4H3wXoikZcuWAb9/WaDwLCIiIhLmdu3alWvVvmeeeabAa37++eeA9iE7O5tjx44F\n9J5lkcIm8TAQAAAgAElEQVSziIiISJh76KGHcrU9+eST5OTk5Gp/9913Adi8eXNA+3Dy5EnPdmmW\nh5Q2hWcREX+lpEBCApx3nrMCXnZ2qHskIgJAly5d8mw3xnDdddcB0L17d6y13HzzzQD88ssvAe2D\nu2xk7NixzJ49O6D3LksUnkVE/PXrr5CUBNu2wWefOdOriYiUAffcc0++x+bNmwfAfNfsNu6ZOLZs\n2RLQPrjDc1RUVJ7Lc5cXCs8iIkX10UdQsya89VaoeyIiAkDt2rUBqFq1KgBPP/2059jkyZMB+Pzz\nz32umTp1qmf7wIEDPvtFcfToUYwxnHXWWQBUKucrhCo8i4gUVeXKMGAAzJ3rlHKIiITQmjVrSHH9\nt+iqq64CoEmTJp7jd955Jzk5OVx77bX53qN///789a9/5aeffiry85977jmffYVnERHJ7a67IDMT\nXC/eiIiESocOHTzbbdu2BSA9Pd3nnPzKKO6//37g1LLd3i/9+WvkyJE++2V9Ab6SKt9/NRARCZYW\nLZxV8iZPhqFDobzU9x09CsnJuT87dsCBA4F7zsaNcNllgbufiADOstzR0dEMHDjQr/Nff/11nn32\nWU/gjYgo+bjqK6+8UmANdrhTeBYRKa6//935rFwJnTqFujcl8/rrMGJE3gG5Zk2oXx9q1QrcXxI6\ndYLbbgvMvUQqMO+FUdwB+MknnyzSPXbt2uWZ0q6o4fnIkSO52k4f9S5vFJ5FRIrrxhud8Lx8eXiH\n5wMH4LHHnNH0G25wgrL7c845UKVKqHsoIvmYNGlSsa5r3bo169evB5zFTdxzPhd1lox9+/YB8MIL\nL3jmmi7vNc/l+6cTEQmmypWd71Wr4D//Kd494uKcwBqAX5UW2+uvw5Ej8Oab0KpV6PohIkV23333\nATBr1qwiXbdgwQLq1asHwH//+19Pe7af89ePHz+exx57zDPKHBcXx7XXXsuCBQu48sori9SXcKPw\nLCJSXNHRcMYZ8OGHzqe4+vaFd96BqKjA9c1fGRkwbhz07KngLBLGLrrooiKdX7duXZ5//nkefvhh\nhg8f7mn3LgMpyL333uuz/9NPP/HZZ58xbdo0+vXrV6S+hBuFZxGR4oqOht9/h4MHi3+P6dPhiScg\nLc0J4KVdIjF5MqSmwuOPl+5zRSQgGjduTPv27Tn//POLfG18fHyuNn9Hnk/Xr18/IiIiuP3224t1\nfThReBYRKYkaNZxPcT3+uPNC3uDB0K0bfPKJU8oRbDNnwo8/wpQpcPnl0Llz8J8pIgGXlZVF9erV\ni3XtGWeckatt+/bttGvXzqdtyJAh3H777XTo0IH9+/fz1Vdf+RyfP39+kUe+w5nCs4hIqA0a5ATm\n226DK6+E+fOhbt3gPvNf/4JNm5ztiROD+ywRCYpFixaxY8cOoopZ8uVejdBbr169fOZpTklJ4dVX\nX+XVV1/N8x5Lly7lsgo27aQWSRERKQt694aPP4affnJGgrdvD/4zu3eHtWuhR4/gP0tEAspayx//\n+Eeg+HMz5zXyfLq9e/fme2zatGkVLjiDRp5FRMqO7t1h4ULn5b3LLoO33nJeSAyGo0ehWjVo0yY4\n9xeRoHKvCAgwYcIExo8fX+R7uFcjLEhmZmae7TExMeX+xcD8KDyLiPgjPR2mTXO2IyOD95xLL4Wv\nv4Zrr3XCdDB16RLc+4tIvo4dO0aVKlV45513GDBgQJGv37JlS0D68f3333vqlUeOHMnIkSPJyckh\nIiKC//3vf/Ts2TPP60aPHh2Q54cjhWcRkYKcOOHUBI8aBfv3w623QteuwX1m69awYQMkJQX3ORdf\nHNz7i0i+du/eDcBTTz1VrPC8bNmygPSjefPmnu3jx48DzowbERER+QZnKPrUeOWJwrOISF5ycuD9\n92H4cPjtN7jqKhgzBhISSuf5tWsHf+RZRMJCZmYm0dHRDBo0iFdffZUuXbqwcuVKz3H3SoHF4b0a\n4BdffAE4IbqwlxDr169f7GeGO70wKCJyuoULnZDcv78zDd38+fDFF6UXnEWkwti2bRvz589newEv\nCUdHRwPOUtz/+9//fIJzRkYGrUq4wNGoUaNYsWIF/fv3B+DEiRM+x8eOHcvevXv55JNPPG3Hjh0r\n0TPDmcKziIhbUhJcc41Tb3zwILz3Hnz3nTP/sjGh7p2IlFM9evSgUaNGNGnSBGNMgSPJp9caVwnA\nwkrDhw+nY8eOnpcDX3/9dYYMGeI5fuGFF1KnTh169uzJU089BeS9wEpFobINESn7Pv4YEhOdl+m6\nd4dA/0c7KwvefhtmzHAWLHnpJbjnHqhcObDPERFxMXn8hfy3334DnHpi91zLmzdvpmHDhvz+++8A\nJHm9C5HfTBjFlZKSAsCYMWN8Rpa9R7ZHjBjBkCFDOOusswL67HCi8CwiZd/69U7dcVqaMxocDLGx\n8OSTMGxY8KaHExFxySs8u9V1LZK0fv36Al/M865XDoRq1aoBviUZn3zyCeeee65nPyIiokIHZwhA\neDbGbAMOA9lAlrU2wRhzFjATaARsA3pbaw8a55+UccB1wFHgb9ba70raBxGpIHbtcpaUTk8P/L0v\nuADq1An8fUVE8pCdnZ3vsbPOOgtjTIGzcBQUvourdevWALRs2ZKNGzcCcPTo0YA/J9wF6q8sV1pr\n93vtPwYsstY+a4x5zLX/KNADaOr6XAKMd32LiBQuMlKLeohIuZCTkwPAe++9R0REhGfBkcjISH78\n8UcApk6d6jm/b9++fPvtt2zdutXn+kC64YYbADzBGeC6664L+HPCXbBeGLwBeMe1/Q5wo1f7VOtY\nCcQZYypuxbmIiIhUSO6R54iICPr27cv333/PP/7xD5o1a5br3A8++IDp06d7gnOwGGN8XkAcNmyY\np5RDTglEeLbAAmNMkjFmkKutrrV2t2t7D1DXtX0OsMPr2mRXm4iIiEiF4Q7Pka4VS1u3bs3LL7+c\nZz3xX/7yF5/9xMTEoPXLu0xj7NixQXtOOAtE2cZl1tqdxpg6wEJjzGbvg9Zaa4yxRbmhK4QPAmjY\nsGEAuigiIiJSdrjLLtzh2S02NtZnv127dkRE+I51JmjO+ZAq8ciztXan63sfMBu4GNjrLsdwfe9z\nnb4TaOB1eX1X2+n3nGStTbDWJtSuXbukXRQREREpU9wv551eu3zmmWcCTjlHq1atmDlzpufYvffe\nC0Djxo2D1q+mTZsG7d7lRYnCszGmqjGmunsbuBbYCHwM/NV12l+Bua7tj4EBxtERSPMq7xAREREp\n99auXevZXrhwoc+xPXv2AE6oXr9+Peeff77n2CuvvMLKlSvp3Llz0Pq2d+/eoN27vChp2UZdYLZr\nupRKwHRr7XxjzLfAB8aYu4DtQG/X+fNwpqnbijNV3R0lfL6IiIhIWJkxY4ZnOyYmxufY4cOH870u\nMjKSSy4J7iRlx48fD+r9y4MShWdr7a9Artm7rbWpwNV5tFvgvpI8U0RERCScRUVFAXDFFVfwyCOP\n+BwL9QIkw4cPZ8SIEdx0000h7UdZphUGRURERErRv//9bwC+/vrrXMfatm3LokWLSrtLHsOHD6dp\n06aeOZ8lt2DN8ywiIiIipylscRP3oiTuRVNKmzGGW2+9NdesH3KKRp5FRERESsk333xT4PGuXbsy\nceLEkIVnKZxGnkVERESKYMGCBRhjWL9+vV/np6WleV7EW716NQD//Oc/8zzXGMOgQYO0sl8ZpvAs\nIiIiUgSfffYZAD169PDr/Li4OGJjY7HWsmLFCqpVq8ZTTz0VzC5KEKlsQ0RERKQILr74YgB2797N\n/v37GTFiBI888gj79u0jISGBOXPmsHv3bjIyMnj00Uc913mvFHj6yoISPhSeRURERIrAHYKttbhX\nQh4/fnwouySlSGUbIiIiIkWQlZUV6i5ICCk8i0jZlZEBixfDypWh7omIiEd2dnaRzr/22ms5cuQI\n6enpzJw5s8jXS9mi8CwiZYO1sH07zJgBDzwACQlwxhlw5ZXwv//BFVeAagRFpAw4feS5efPmPPHE\nEwC8+uqrZGVlcffdd9O8eXOmTp3K559/TtWqValevTq9e/f2qX2W8KOaZxEJjZMnYe1aWL781GfX\nLudYlSpwySXw2GPQuTN07AghXrJWJBx9/PHHJCQkEB8fjzEm1N0pN9wjx1988QWbN2+me/funHfe\neYwePdpzzoQJE0LVPQkyhWcRKR1798KKFaeC8po1cOKEc6xRI+ja1QnKnTpB69ZQSf95EvFHRkaG\nZ07goUOHkpGRwaRJk/jnP//JqFGjPOetX7+eVq1ahaqb5Yp75Llly5ZcffXVIe6NlDb96SQigZed\nDRs3ngrKK1bAL784x6KjoX17uP9+Jyh36gRnnx3a/oqEmX379pGTk0O9evVYtmyZp/2ll17ybHsH\nZ4Dly5crPAdIZmYmoOnmKiqFZxEpuUOHnJf63EF55Uo4csQ5VrcuXHopDB7sjCy3awcxMaHtr0gY\ny8jIoG7dugBs2LCBbt26+XVdTk5OMLtVLmRnZ5OZmUlOTg5VqlTJ97x//OMfAFTSb8gqJP2/LiJF\nYy38/LNvCcamTU57RIRTcjFggBOUO3d2SjJUaykSMPPmzfNse48kp6am8uGHHzJ48GAiIyPJzs7m\n0UcfZcyYMQDE6C+teTpx4gRpaWkkJiYyY8YMT7u11uc8a22uF/008lwxmdP/4ShrEhIS7Jo1a0Ld\nDZHwcfSoM2NF5crQq5fz8l1J7/ftt74lGKmpzrG4OKfswh2UO3SA6tVL/jOISL7ye/EvMzMz10jo\n8ePHiY2NBWDu3Llcf/31ua776quvuOqqq+jfvz9Tp06tUDNBLF++nG7dunHE/ZsyL99//z2rVq1i\n0KBBvPvuu0ybNo358+f7nFPWM5QUjTEmyVqbUNh5GnkWKW8++wz+/ndn+8EH4aGH4N57/Qu11sKO\nHb4zYKxb59QwA1xwAdxww6mw3KyZM9osIkGXlpbGm2++6dl/6aWX2LZtGwcOHGDq1Kl5XhMTE8Pn\nn39Ot27d8izb+Pvf/87kyZMBmDZtGrfccgs33HBDcH6AMubAgQNceuml+R6/6KKLPNu33357ruOL\nFy8ORrckDCg8i5Q3rhdZmDABZs92pnsbMwb+8Q8YMgTOPPPUud7TxbnLMHbudI55TxfXqZMzXVzN\nmqX/84hUYBkZGaSmptKwYUPi4uJ8jiUmJvp1jwYNGgBw8uRJn/Zt27Z5grPbjTfeWGFGU/ft25er\nLScnB2NMgdP6bd26lR9//JEuXboEs3tShmnISKS86tIF5s+H1audBUZGjoT69Z35kiMinDrkypWd\nUPzgg05pRpcu8OqrkJQEaWnw5ZfwzDPwpz8pOIuUMmMM1apV49xzz6V///4+x4ry8l90dDQA//73\nvzHGcO+995KUlETjxo1znVuvXr2SdToPWVlZ9OrVC2MMe/bsCfj9i+vCCy/0bO/cuRNrrSc016pV\nK9f5CQkJWGs577zz6NmzZ6n1U8oe1TyLlDfvvw99+8KPPzplFm4bNsDEiU5phjtAR0RAy5aaLk6k\nDMpv9PPiiy9m1apVft8nOTnZM/qcl06dOvHmm2/SsmVLAJ577jkefvjhonW2AN4/R79+/Zg2bVrA\n7l1cP/zwg+fnPXLkCFWrVg1xj6QsUM2ziPhq1Qpeey3UvRARP1166aU+czgDDBo0iIkTJxbpPuec\nc06BxydPnsyFF15Iq1at2LBhA8OGDQtYeD506JDPfn4LiuTk5DB9+nT69u1bKjNYJCcne7YVnKWo\nVLYhIiJSBp04cYIePXrw6aefetp++umnIt+noPpda62nfOHZZ5/165qiePzxx3328yo3McYQGRnJ\n7bffXqJ5k4vym/QzzjgDgPvuu6/Yz5OKS+FZpDyxFrZsCXUvRKSErLWsWbOGypUr84c//AGADh06\n8PHHH5fovt26dWPx4sW0aNGCvXv3+hy77rrr8rzm2LFjLFq0qMD77tu3j8TERM9LiTk5OYwYMYLp\n06cDsHv3buDUynwAe/bs4e/umYG8bNu2ze+fB5xZSP74xz8SERHBHXfc4dc17n7cdNNNRXqWCCg8\ni5Qfy5fD5ZfDiBFw0UXO4iQiEpYGDBgAwJw5c2jatCnWWlavXk2NGjWKdb9du3Zx2223MWfOHLp0\n6cLGjRupU6dOgdeMGjWKzMxMqlSpwh//+Ec2bdqU77l169Zl3LhxVK5cmcTERFq1asWoUaNIT0+n\nQYMGnpcW3eH64MGDxMfH55rtA6Bx48bMmjXLr59r2bJlxMXFecL922+/7dd17n5ERUX5db6IN9U8\niwTa/v3w1FPOTBZ16jifunVPbdepA65FCwJi82Z4/HGYMwfq1XNeCrzzTtCysSJhKTs7m/feey+g\n94yPj+fdd98t9LzU1FRqumbWGTFihM/80anuxZFO89Zbb/nsjxs3zmd/x44dnpDqHvFt27atzzmz\nZ88mPT2dv/71rwDccsstAPz4449Ur16d+Pj4PBdvueyyy3K1ZWdnF1o37Q7P7lAvUhT601Uk0JYu\nhTfeKPicatV8w3SdOlCrFhT1RZnff4fp0505mUeNgqFDQS+/iISNY8eO8dFHH3Heeedx9dVXM3ny\nZP785z97jl9yySWl2p+zzjqLKVOmcOeddwLOnMZu+Y3SDhw4sND7ukPqsGHDWLJkCdu3bwdg7dq1\nNGvWjNjYWKy1nvDs5j2dnLWWgwcPEhcXV2BN9sSJE7n33nsL7I87xCs8S3EoPIsEy7p1cP75kJIC\n+/bl/uzd63xv2+bMxZyaCkWYuxVwRrfvvRf++U+oXTsoP4aIFN2uXbs444wzCp3J4fLLLycpKcmz\n369fP7777jvPsS+//DKo/cyLvy/tHT9+nDfffJOuXbuyePFi9u7dy4MPPuiZiu61115jxYoVPP30\n0z7B+5NPPvFst2nTxrNtjGHnzp35zg4ye/ZsevXqxR133MGUKVN8XhB86aWX6NChA5dddhn33Xcf\nAwYMoFq1alhrGTVqFJdccgndunUDYN26dYwaNQpQ2YYUj+Z5Fgm02bOhVy8nPHst7yoi5dvRo0d5\n4oknOHnyJOPHj/e0xRZQplXQCOrkyZM9I8ClKTs7u8AA7Z4X+fS+nzx5ssAwunjxYq688krP/rBh\nwxg7dmy+569evTrfkffffvuN559/ntdffx1wXlA8fvw4VapU8Zwzbdo0n8Vl8lo9cPPmzTRr1izf\nPkjF4u88z3phUEREJADGjBnDuHHjPMEZoEqVKqSnp+d5/q5duzzblStX5o3Tyr2ysrKC09FCREZG\nYq3lgQceAHKvtletWrU8Q39ho7hdu3b1bMfHxxcYnMFZDOb777/nhx9+yNW/xo0be4Lz1KlTMcYQ\nGxvL3Xff7Tnv9FUZIyIicq1wqJFnKQ6NPIsEmkaeRSqkgkaRb775Zj788EPAqd09/eU395/F7nsM\nHjyY1157rVQWDCnIjBkzaNu2rU/tsbfZs2ezd+9eIiIi/Kp9/u6779i3bx/du3cvUj8K+t/WPaLs\n3j79f7NJkyYxaNCgPK/dsWMH9evXL1JfpPzSCoMiIiKlJC0tzbO9ZcsWmjZtypAhQ3jllVcAmDVr\nFgsXLmTz5s1MmDDB59pHH33Us33nnXdirfUZvQ6lvn37Fnj8xhtvLNL92rVrV6x+7NixgyeeeCLX\njCHnn3++T7COiIjAWutpe+qppxg4cGCe4Tk5ObnQ1RdF8qKRZ5FA08izSEjk5OSQnJxMw4YNS+V5\nx44dIyYmhk2bNtGyZUtPu/efq7/99htNmjTJ8/opU6bQq1cvatSoEbAV/YIlr/5t3bqV8847L6T9\nyMjI8Klzdvv+++959913ef755wFYsWIFnTt39hxv3rx5rnIQEdU8i4hIhTJ79mzOPfdcJk2aFNTn\n3HXXXdSuXZsqVapw4YUX+gTn0+ubGzdunGslP7c77riDM844o8wHZ4Dt27ezbt06OnfuTK1atbDW\nlnpwBmjatCkAP//8M9baPIMzwEUXXeQJzgCdOnXiyJEjnn3vJc9FikrhWUREwtrvv/9O27Ztufnm\nmwG4++67PWUUycnJzJw50/OrfPfn9N+6rl69GmMMSUlJ9O/fn2PHjuV6TmZmJuvWrWPKlCns378f\ngJ9++slz/Ndff6V69eq5rqtTpw6ZmZk+93QvVx0uGjZsyEUXXcSyZctISUkJWT/codkdoouiatWq\nWGux1tK4ceMg9E4qimLXPBtjGgBTgbqABSZZa8cZY0YCAwH3v11PWGvnua55HLgLyAaGWGs/L0Hf\nRUSkgouNjeX48eO52m+++WZWrlzpGW386KOPfI6npKSQnp7Ojh07uPLKKz1ToiUkOL+xHThwIF27\ndqV58+b8+OOPhfYjOzs7zxXw3CpVqkSlSpVyhXYRCT8lGXnOAh6y1jYHOgL3GWOau469ZK1t4/q4\n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\n", 161 | "text/plain": [ 162 | "" 163 | ] 164 | }, 165 | "metadata": {}, 166 | "output_type": "display_data" 167 | }, 168 | { 169 | "data": { 170 | "image/png": "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\n7h/69J53BJg7e64BAGAgyjUAAAxEuQYAgIEo1wAAMBDlGgAABqJcAwDAQJRrAAAYiHINAAADUa4B\nAGAgyjUAAAxEuQYAgIEo1wAAMBDlGgAABqJcAwDAQJRrAAAYSHX3vDPstKq6Jcn1886RZP8k/zDv\nELsIs5gwiwmzmDCLEXOYMIsJs5gwi4ldZRY/1N1rd3SnhS7Xu4qq2tjdG+adY1dgFhNmMWEWE2Yx\nYg4TZjFhFhNmMbFos7AsBAAABqJcAwDAQJTrYZw17wC7ELOYMIsJs5gwixFzmDCLCbOYMIuJhZqF\nNdcAADAQe64BAGAgyjUAAAxEuQYAgIEo1wAAMBDlmp1WVU+uqh8ZXz6uql5RVf/XvHMBAMyLo4Us\nQ1U9J8lfdvfd884yb1X1B0mOSbJ7ko8meVqSjyT550k+192/Mcd4K66q9kryjCQHJ/lOkr/N6LXy\n3bkGm4Oq+tEkJyY5aLzphiQXdPc180u1a6mqF3X3f593jpU0fl0clOQz3X3nku3P6O6/mF+ylVdV\nxyTp7r64qg7P6HvHF7r7wjlHm7uqend3nzzvHPNWVT+R0c/YK7v7L+edZyVV1bFJrunur1fVP0vy\nqiRHJbk6yW939z/ONeAUlOtlqKpvJvlGRiXyfUk+2t3fmW+q+aiqq5L8WJJ/llF5Oqi776qqPTIq\n1z8214ArqKqel+QVSa5I8pQkf5PRX4Uem+Tnuvvzc4y3oqrqlUlekOT9STaNN69L8vwk7+/uN8wr\n266kqv6+uw+Zd46VUlUvT/LSJNckOTLJad19/vi2S7v7qHnmW0lVdXqSZ2a0Y+JjSY5NclGSf5nR\nz5Qz5xhvRVXVBVtvyuh76P+XJN39nBUPNSdV9dnuPmZ8+d9k9P/Lnyf5qSQfXE3fO8f94oju3lxV\nZyW5K8mfZrQT74juPmmuAaegXC9DVX0uyVOT/KuMysKPZfTif193f3Ke2VZaVV3Z3T9WVWuS3Jjk\n4d39zaraLcnnu/vwOUdcMVV1RZInjH+52D/Je7r76VX1uCRv7e4nzTniiqmqv03ymO6+Z6vtP5Dk\nqu4+bD7JVt74dbHNm5I8qrsfuJJ55qmqPp/kid19Z1Wtz+gH5Tnd/YdV9bnufvxcA66g8SyOTPLA\nJDclWbdkD91nuvtxcw24gqrq0oz2Rv63JJ3R/xvvy+jna1bTz9Wl/x9U1cVJTujuW6rqQUk+3d2P\nnW/ClVNV13T3o8eXv+eX76q6rLuPnF+66ew+7wALprv7tiRvT/L2qnpYkucleUNVrevug+cbb0V9\nuKr+Z5I1GX1jPLeqPp3RspC/mmuylVdJvjm+/I0kD02S7r6iqn5wbqnm47tJHp7k+q22Hzi+bTU5\nIMnTk9y21fbK6K8bq8kDtiwF6e7rqur4JH9aVT+U0TxWk83jv3jeVVX/u7u/niTjnROr7f+RDUlO\nS/KbSX6juy+rqm+uplK9xAOq6iEZ/dWzuvuWJOnub1TV5vlGW3FXLlk6d3lVbejujVX1qCT37OjB\nuwLlenm+54dAd9+U5E1J3jT+IbFqdPcrq+qJo4v96ar64SQ/nVHR/tP5pltxFyb5i6r6q4zWTv5J\nklTVvll9xeFXk3y8qv4uyVfG2w5J8sgkL5tbqvn4UJK9uvuyrW+oqk+sfJy5urmqjtwyi/Ee7Gcl\neUdGy6dWk29X1Z7dfVeSo7dsrKp9ssp+AR2/J+X3q+pPxp9vzurtJfskuSSjnxldVQd2943j9/Os\ntp8jL07yh1X12iT/kOR/VdVXMvqZ8uK5JpuSZSHLUFXHd/cn5p1jV1JVB2TJG9e6++Z55pmXqjoh\nyeFJLu/uj423PSDJHt39rbmGW2Hjf/cx+d43NF68Wt+fQFJV6zLaY3vTNm47rrs/NYdYc1FVD9zW\n94TxkrIDV9N7NLY2PtrUcd39mnln2VVU1Z5JDujuL887y0ob/+X30Ix+4dq0SP1Cud4JCmVSVUcm\neWtGv23fMN68LsntSV7S3ZfOK9u8eF1sX1XttfQoEauZWUyYxYRZTJjFhFlMLMoslOtlUCgnquqy\nJL/c3Z/ZavsTkrytu4+YT7KV53UxndV2hIztMYsJs5gwiwmzmDCLiUWZxWpd27Sz3pl7L5T/Pcmq\nKZRJHrT1HJJkvP76QfMINEfvjNdFkqSqfu3ebkqy10pmmTezmDCLCbOYMIsJs5i4P8zCGRqX514L\nZZLVVig/UlUfrqqfraonjT9+tqo+nGRVnRAiXhdL/XaShyTZe6uPvbL6vt+YxYRZTJjFhFlMmMXE\nws/Cnuvl+ci4PL47kyMhHJzk5KyyQtndL6+qZ+b7z8T35lV4ljGvi4lLk3yguy/Z+oaqWoh3eQ/I\nLCbMYsIsJsxiwiwmFn4W1lwv070UygtWYaFkCa+Lkar6kSRf23KM1q1uO2A1vcnTLCbMYsIsJsxi\nwiwm7g+zUK7ZKeNjsr46o0J5QEZn1/pqkvOTvKG7b59jPACAuViItSu7iqrap6reUFXXVNXXqurW\n8eU3VNVfiehLAAACnklEQVSD551vhZ2b0ZnnntLd+3b3fkmektERMs6da7IV5nUxsWQWXzALs9jC\nLCbMYsIsJsxi4v4wC+V6eRTKifXd/f8sPSlEd9/U3W9IsqrOVhmvi6W2zOL4rWZxW8zCLMwiMYul\nzGLCLCYWfhaWhSxDVX2xu39kubfdH1XVXyb5H0netWX9U41OovKLSf5ld/+LOcZbUV4XE2YxYRYT\nZjFhFhNmMWEWE/eHWdhzvTzXV9X/PS6RSUaFsqpemclRIlaLn02yX5JPVtVtVfW1JJ9Ism+S580z\n2Bx4XUyYxYRZTJjFhFlMmMWEWUws/CyU6+VRKMe6+7aMTpDysiQHj/908+jufmWSY+abbsV5XUyY\nxYRZTJjFhFlMmMWEWUws/CwsC1mmqvrRjE5t/eml57evqmd096o5pnFVvTzJS5Nck+TIJKd19/nj\n2y7t7qPmmW+leV1MmMWEWUyYxYRZTJjFhFlMLPos7LlehnGhPD+jvbVXVtWJS27+7fmkmpt/k+To\n7n5ukuOT/FZVnTa+reaWag68LibMYsIsJsxiwiwmzGLCLCbuD7Nwhsbl2VIo76yq9Un+tKrWd/cf\nZpUVyiQP2PLbZHdfV1XHZzSPH8rqm4XXxYRZTJjFhFlMmMWEWUyYxcTCz0K5Xh6FcuLmqjqyuy9L\nkvH/BM9K8o4kj51vtBXndTFhFhNmMWEWE2YxYRYTZjGx8LOwLGR5bq6qI7dcGf/Hf1aS/bP6CuXJ\nSW5auqG7N3f3yUmePJ9Ic+N1MWEWE2YxYRYTZjFhFhNmMbHws/CGxmWoqnVJNi89ccqS247r7k/N\nIRZz5nUxYRYTZjFhFhNmMWEWE2YxcX+YhXINAAADsSwEAAAGolwDAMBAlGsAABiIcg0AAAP5/wFm\nZa/NeBqCEgAAAABJRU5ErkJggg==\n", 171 | "text/plain": [ 172 | "" 173 | ] 174 | }, 175 | "metadata": {}, 176 | "output_type": "display_data" 177 | } 178 | ], 179 | "source": [ 180 | "STRAT.Run(OHLC)" 181 | ] 182 | } 183 | ], 184 | "metadata": { 185 | "kernelspec": { 186 | "display_name": "Python 3", 187 | "language": "python", 188 | "name": "python3" 189 | }, 190 | "language_info": { 191 | "codemirror_mode": { 192 | "name": "ipython", 193 | "version": 3 194 | }, 195 | "file_extension": ".py", 196 | "mimetype": "text/x-python", 197 | "name": "python", 198 | "nbconvert_exporter": "python", 199 | "pygments_lexer": "ipython3", 200 | "version": "3.6.2" 201 | } 202 | }, 203 | "nbformat": 4, 204 | "nbformat_minor": 2 205 | } 206 | -------------------------------------------------------------------------------- /strategy_bollinger_cmf.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python2 2 | # -*- coding: utf-8 -*- 3 | # pylint: disable=no-member 4 | """ 5 | Created on Tue May 16 11:42:45 2017 6 | @author: github.com/Quantmatic 7 | """ 8 | import datetime 9 | import time 10 | import pandas as pd 11 | import TTR 12 | import amipy 13 | from amipy import Amipy 14 | 15 | def _months(_df): 16 | months = _df.index.month 17 | return pd.Series(months, index=_df.index, name='months', dtype=int) 18 | 19 | def _days(_df): 20 | days = _df.index.day 21 | return pd.Series(days, index=_df.index, name='days', dtype=int) 22 | 23 | 24 | class BoliingerCMF(object): 25 | ''' Bollinger CMF ''' 26 | def __init__(self, context): 27 | self.__dict__.update(context.__dict__) 28 | 29 | def Run(self, data): 30 | ''' analyze OHLCV matrix and generate signals ''' 31 | ohlc = data[:][['open', 'high', 'low', 'close', 'volume']] 32 | ptimer = time.time() 33 | 34 | bbperiod = 25 35 | bbupper, bblower, bbmid = TTR.bollinger(ohlc.close, bbperiod, 2) 36 | 37 | cmf_period = bbperiod*2 38 | cmf = TTR.cmf(ohlc, cmf_period) 39 | 40 | days = _days(ohlc) 41 | months = _months(ohlc) 42 | #*** no trading during Christmas season ***# 43 | notradetime = (months.shift(1) == 12) & (days.shift(1) > 23) 44 | 45 | buysignal1 = (cmf.shift(1) > 0) & \ 46 | (abs(ohlc.close.shift(1)-bblower.shift(1)) < 5*self.tick_size) 47 | buy = (buysignal1) & (notradetime == 0) 48 | 49 | shortsignal1 = (cmf.shift(1) < 0) & \ 50 | (abs(ohlc.close.shift(1)-bbupper.shift(1)) < 5*self.tick_size) 51 | short = (shortsignal1) & (notradetime == 0) 52 | 53 | short[:self.warmup_bars] = False #remove signals from warmup bars 54 | buy[:self.warmup_bars] = False #remove signals from warmup bars 55 | 56 | stopcover = (ohlc.open.shift(1) > bbmid.shift(1)) & \ 57 | (ohlc.close.shift(1) < bbmid.shift(1)) 58 | 59 | stopsell = (ohlc.open.shift(1) < bbmid.shift(1)) & \ 60 | (ohlc.close.shift(1) > bbmid.shift(1)) 61 | 62 | cover = buy | stopcover 63 | sell = short | stopsell 64 | 65 | buy = amipy.ex_rem(buy, sell, 1) #remove excess signals 66 | short = amipy.ex_rem(short, cover, 1) #remove excess signals 67 | 68 | buyprice = ohlc.open + (2*self.tick_size) ## *adjust for slippage 69 | shortprice = ohlc.open - (2*self.tick_size) ## *adjust for slippage 70 | coverprice = ohlc.open + (1*self.tick_size) 71 | sellprice = ohlc.open - (1*self.tick_size) 72 | 73 | backtest = Amipy(self, ohlc) 74 | 75 | backtest.run(buy, short, sell, cover, buyprice, 76 | shortprice, sellprice, coverprice) 77 | 78 | print 'Backtest finished in ' + str(time.time()-ptimer) + ' seconds.\n' 79 | backtest.analyze_results(0.0025) 80 | backtest.analyze_results_ffn(0.0025) 81 | backtest.plot_trades(ohlc.index[0].year, ohlc.index[-1].year) 82 | backtest.annual_gains(ohlc.index[0].year, ohlc.index[-1].year) 83 | 84 | 85 | class Context(object): 86 | ''' backtest context ''' 87 | def __init__(self): 88 | self.symbol = '@ES#4H' #*** e-mini SP 240min continuous ***# 89 | self.dbase = 'FUTURE' 90 | self.starting_equity = 100000.00 91 | self.margin_required = 5500.0 92 | self.tick_size = 0.25 93 | self.tick_value = 12.5 94 | self.risk = 0.2 95 | self.warmup_bars = 500 96 | self.commission = 4.50 97 | 98 | if __name__ == '__main__': 99 | ########################################################################## 100 | START_DATE = datetime.datetime(2011, 1, 2) 101 | END_DATE = datetime.datetime(2016, 12, 31) 102 | OBJ = Context() 103 | OHLC = amipy.mongo_grab(OBJ.symbol, OBJ.dbase, START_DATE, END_DATE) 104 | 105 | STRAT = BoliingerCMF(OBJ) 106 | 107 | STRAT.Run(OHLC) 108 | --------------------------------------------------------------------------------