Advertisement
zerof3565

Untitled

May 27th, 2024 (edited)
588
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.06 KB | Source Code | 0 0
  1. import pandas as pd
  2. import plotly.graph_objects as go
  3. import csv
  4. from datetime import datetime
  5.  
  6.  
  7. # load data file
  8. qqq_data = []
  9. with open('qqq.csv', 'r') as file:
  10.     reader = csv.DictReader(file)
  11.     for row in reader:
  12.         qqq_data.append({
  13.             'date': datetime.strptime(row['date'], '%Y-%m-%d'),
  14.             'close': float(row['close'])
  15.         })
  16.  
  17. # set tqqq ipo price and last record
  18. tqqq_price = 0.4325520098209381
  19. tqqq_data = [{'date': qqq_data[-1]['date'], 'close': tqqq_price}]
  20.  
  21. # calculate % change to find previous day closing price
  22. daily_expense_ratio = 0.88 / 100 / 252
  23. for i in range(len(qqq_data) - 1, 0, -1):
  24.     percent_change = (qqq_data[i]['close'] - qqq_data[i-1]['close']) / qqq_data[i-1]['close']
  25.     tqqq_price /= (1 + 3 * percent_change) * (1 + daily_expense_ratio)
  26.     tqqq_data.append({'date': qqq_data[i-1]['date'], 'close': tqqq_price})
  27.  
  28. tqqq_data.reverse()
  29.  
  30.  
  31. # Save to a CSV file
  32. df = pd.DataFrame(tqqq_data)
  33. df.to_csv("tqqq.csv", index=False)
  34.  
  35. # Find highest and lowest closing prices
  36. min_row = df.loc[df['close'].idxmin()]
  37. min_value = min_row['close']
  38. min_date = min_row['date']
  39.  
  40. max_row = df.loc[df['close'].idxmax()]
  41. max_value = max_row['close']
  42. max_date = max_row['date']
  43.  
  44. print(f"Lowest value: {min_value} on {min_date}")
  45. print(f"Highest value: {max_value} on {max_date}")
  46.  
  47.  
  48.  
  49.  
  50. # Visualize the tqqq closing prices
  51. fig = go.Figure()
  52.  
  53. fig.add_trace(go.Scatter(x=df['date'], y=df['close'], mode='lines', name='Close'))
  54.  
  55. fig.add_trace(go.Scatter(
  56.     x=[min_date], y=[min_value],
  57.     mode='markers+text',
  58.     name='Lowest',
  59.     text=['Lowest'],
  60.     textposition='bottom center',
  61.     marker=dict(color='red', size=10)
  62. ))
  63.  
  64. fig.add_trace(go.Scatter(
  65.     x=[max_date], y=[max_value],
  66.     mode='markers+text',
  67.     name='Highest',
  68.     text=['Highest'],
  69.     textposition='top center',
  70.     marker=dict(color='green', size=10)
  71. ))
  72.  
  73. fig.update_layout(
  74.     title='TQQQ Close Prices with Highest and Lowest Points',
  75.     xaxis_title='Date',
  76.     yaxis_title='Close Price',
  77.     showlegend=True
  78. )
  79.  
  80. fig.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement