Beispiel #1
0
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
Beispiel #2
0
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