Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import csv
- from csv import DictReader
- import matplotlib.pyplot as plt
- import matplotlib.dates as mdates
- import datetime as dt
- def backtest():
- TQQQsharePrice = 100
- investment = 10000
- invested = investment
- TQQQreturns = []
- TQQQcloses = []
- QQQreturns = []
- increment = 2500
- dates = []
- period = 1
- with open("QQQ.csv", newline="") as file:
- reader = DictReader(file)
- next(reader, None)
- data = [row for row in reader]
- target = dt.date(2015, 9, 17)
- for index, day in enumerate(data):
- if dt.datetime.strptime(day["Date"], '%Y-%m-%d').date() == target:
- period = index
- print(target)
- break
- last = float(data[period - 1]["Close"])
- startDay = dt.datetime.strptime(data[period - 1]["Date"], '%Y-%m-%d').date()
- TQQQshares = investment / TQQQsharePrice
- QQQshares = investment / last
- for day in data[period:]:
- percentPL = ((float(day["Close"]) - last) / last) * 3
- date = dt.datetime.strptime(day["Date"], '%Y-%m-%d').date()
- TQQQsharePrice = TQQQsharePrice + (TQQQsharePrice * percentPL)
- if (date - startDay).days > 30:
- startDay = date
- TQQQshares += increment / TQQQsharePrice
- QQQshares += increment / float(day["Close"])
- invested += increment
- # TQQQshares += increment / TQQQsharePrice
- # QQQshares += increment / float(day["Close"])
- # invested += increment
- dates.append(date)
- TQQQreturns.append(TQQQshares * TQQQsharePrice)
- QQQreturns.append(QQQshares * float(day["Close"]))
- last = float(day["Close"])
- plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
- plt.gca().xaxis.set_major_locator(mdates.DayLocator(interval=1000))
- plt.title("3X DAILY LEVERAGED $QQQ \n FIVE YEAR PERIOD 10K THEN $1500 A MONTH (30 DAYS) \n AUGUST 19 2015 - AUGUST 25 2020")
- plt.plot(dates, TQQQreturns, label="3X $QQQ\n FINAL:${:,.2f}\n INVESTED:${:,.2f}".format((int(TQQQsharePrice * TQQQshares)), invested))
- plt.plot(dates, QQQreturns, label="$QQQ\n FINAL:${:,.2f}\n INVESTED:${:,.2f}".format((int(QQQshares * last)), invested))
- plt.legend()
- plt.show()
- if __name__ == '__main__':
- backtest()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement