def strategy3(): lookback = 100 print("Running Strategy 3.") scpr = JScraper(browser_type="chrome", browser_driverpath="./browserdrivers/chromedriver") p = Portfolio("portfolio_strat3.pf") myportfolio = p.getPortfolio() while True: # try to intelligently buy for curr in myportfolio: meds = scpr.retrieveMedians(curr=curr, max=lookback) if len(meds) < lookback: continue #Do nothing until curr_median = meds[0] deviation_of_median = 0 variance_of_median = 0 mean_of_median = 0 for m in meds: mean_of_median = mean_of_median + m mean_of_median = mean_of_median / len(meds) for m in meds: variance_of_median = variance_of_median + math.pow( (m - mean_of_median), 2) variance_of_median = variance_of_median / len(meds) deviation_of_median = math.sqrt(variance_of_median) zscore_of_median = ( curr_median - mean_of_median ) / deviation_of_median #number of std dev's away print( str(curr) + ": MOst recent median: " + str(curr_median) + " mean of median: " + str(mean_of_median) + " z-score: " + str(zscore_of_median)) MAX_PERCENT_ALLOWANCE = .10 if (zscore_of_median < -0.75): #Buying when price is in 0-22nd percentile purchase_amt = MAX_PERCENT_ALLOWANCE * p.getCashpool() purchase_price = curr_median shares = purchase_amt / purchase_price p.purchase(curr, shares) print("Buying " + str(shares) + " of " + str(curr) + " at " + str(curr_median) + "(Total price " + str(shares * purchase_price) + ").") elif (zscore_of_median > 0.3): share_ct = p.amount( curr) #Selling when price is in 62-100th percentile if not (share_ct == -1 or share_ct <= 0.0): sell_ct = MAX_PERCENT_ALLOWANCE * share_ct purchase_price = curr_median p.sell(curr, sell_ct) print("Selling " + str(sell_ct) + " of " + str(curr) + " at " + str(curr_median) + "(Total price " + str(sell_ct * purchase_price) + ").") else: #if price isnt significant, do nothing pass print(p) print("Total worth: " + str(p.getWorth()) + ".\n") time.sleep(TIME_BETWEEN_ITERATIONS) #sec
def strategy2(): print("Running Strategy 2.") scpr = JScraper(browser_type="chrome", browser_driverpath="./browserdrivers/chromedriver") p = Portfolio("portfolio_strat2.pf") myportfolio = p.getPortfolio() while True: # try to intelligently buy for curr in myportfolio: meds = scpr.retrieveMedians(curr=curr, max=LOOKBACK_LENGTH) if len(meds) < LOOKBACK_LENGTH: continue #Do nothing until curr_median = meds[0] mean_of_median = 0 for m in meds: mean_of_median = mean_of_median + m mean_of_median = mean_of_median / len(meds) print( str(curr) + ": MOst recent median: " + str(curr_median) + " mean of median: " + str(mean_of_median)) MAX_PERCENT_ALLOWANCE = .10 if (mean_of_median < curr_median): purchase_amt = MAX_PERCENT_ALLOWANCE * p.getCashpool() purchase_price = curr_median shares = purchase_amt / purchase_price p.purchase(curr, shares) print("Buying " + str(shares) + " of " + str(curr) + " at " + str(curr_median) + "(Total price " + str(shares * purchase_price) + ").") elif (mean_of_median > curr_median): share_ct = p.amount(curr) if not (share_ct == -1 or share_ct <= 0.0): sell_ct = MAX_PERCENT_ALLOWANCE * share_ct purchase_price = curr_median p.sell(curr, sell_ct) print("Selling " + str(sell_ct) + " of " + str(curr) + " at " + str(curr_median) + "(Total price " + str(sell_ct * purchase_price) + ").") else: #if price constant, do nothing pass print(p) print("Total worth: " + str(p.getWorth()) + ".\n") time.sleep(TIME_BETWEEN_ITERATIONS) #sec