Advertisement
Guest User

Untitled

a guest
Aug 28th, 2020
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.30 KB | None | 0 0
  1. import csv
  2. from csv import DictReader
  3. import matplotlib.pyplot as plt
  4. import matplotlib.dates as mdates
  5. import datetime as dt
  6.  
  7.  
  8. def backtest():
  9.     TQQQsharePrice = 100
  10.     investment = 10000
  11.     invested = investment
  12.     TQQQreturns = []
  13.     TQQQcloses = []
  14.     QQQreturns = []
  15.     increment = 2500
  16.  
  17.     dates = []
  18.  
  19.     period = 1
  20.  
  21.     with open("QQQ.csv", newline="") as file:
  22.         reader = DictReader(file)
  23.         next(reader, None)
  24.         data = [row for row in reader]
  25.  
  26.     target = dt.date(2015, 9, 17)
  27.     for index, day in enumerate(data):
  28.         if dt.datetime.strptime(day["Date"], '%Y-%m-%d').date() == target:
  29.             period = index
  30.             print(target)
  31.             break
  32.  
  33.     last = float(data[period - 1]["Close"])
  34.     startDay = dt.datetime.strptime(data[period - 1]["Date"], '%Y-%m-%d').date()
  35.     TQQQshares = investment / TQQQsharePrice
  36.     QQQshares = investment / last
  37.  
  38.  
  39.     for day in data[period:]:
  40.         percentPL = ((float(day["Close"]) - last) / last) * 3
  41.         date = dt.datetime.strptime(day["Date"], '%Y-%m-%d').date()
  42.         TQQQsharePrice = TQQQsharePrice + (TQQQsharePrice * percentPL)
  43.  
  44.         if (date - startDay).days > 30:
  45.             startDay = date
  46.             TQQQshares += increment / TQQQsharePrice
  47.             QQQshares += increment / float(day["Close"])
  48.             invested += increment
  49.         # TQQQshares += increment / TQQQsharePrice
  50.         # QQQshares += increment / float(day["Close"])
  51.         # invested += increment
  52.  
  53.         dates.append(date)
  54.         TQQQreturns.append(TQQQshares * TQQQsharePrice)
  55.         QQQreturns.append(QQQshares * float(day["Close"]))
  56.  
  57.         last = float(day["Close"])
  58.  
  59.  
  60.     plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
  61.     plt.gca().xaxis.set_major_locator(mdates.DayLocator(interval=1000))
  62.     plt.title("3X DAILY LEVERAGED $QQQ \n FIVE YEAR PERIOD 10K THEN $1500 A MONTH (30 DAYS) \n AUGUST 19 2015 - AUGUST 25 2020")
  63.     plt.plot(dates, TQQQreturns, label="3X $QQQ\n FINAL:${:,.2f}\n INVESTED:${:,.2f}".format((int(TQQQsharePrice * TQQQshares)), invested))
  64.     plt.plot(dates, QQQreturns, label="$QQQ\n FINAL:${:,.2f}\n INVESTED:${:,.2f}".format((int(QQQshares * last)), invested))
  65.     plt.legend()
  66.     plt.show()
  67.  
  68.  
  69. if __name__ == '__main__':
  70.     backtest()
  71.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement