-
Notifications
You must be signed in to change notification settings - Fork 1
/
graeme.py
149 lines (122 loc) · 4.63 KB
/
graeme.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# Graeme's Ideas
# Like the assignment says, first look at the total growth percentages and price differences
# comparing the start and end dates to figure out what the best stocks are.
# We can look at trends to see what could be important to look for/compare
# create a sliding window to find the rolling averages of the close number
# or do a linear regression to find the trendline
# same idea but with P/E
import pandas as pd
import DataPreProcessor as dp
import matplotlib.pyplot as plt
from operator import itemgetter
import matplotlib.dates as mdates
pd.set_option('display.max_columns', None)
pd.set_option('display.expand_frame_repr', False)
# df = pd.read_csv('stocks/Nasdaq-Friday-April-20-2018.csv')
# print(df)
def graemeStuff(stockName):
nasdaq_df, nyse_df, scap_df, all_stock_df = dp.initializeDf()
# comp_stock = dp.getStockDfByName(stockName, all_stock_df)
# print(apple_stock.head())
# rollingAverage(comp_stock, stockName)
rawBest(all_stock_df)
# print(all_stock_df)
# find the rolling average of a single stock df
def rollingAverage(stock_df, stockName):
averageList = []
low = stock_df['High']
high = stock_df['Low']
for x in range(len(stock_df)):
avg = (float(high.iloc[x]) + float(low.iloc[x])) / 2
averageList.append(avg)
Date = stock_df['Date']
dict = {'Average': averageList, 'Date': Date}
average_df = pd.DataFrame(dict)
xpoints = stock_df['Date'].to_numpy()
ypoints = averageList
rollingAvg5 = average_df.rolling(5).mean()
rollingAvg10 = average_df.rolling(10).mean()
rollingAvg50 = average_df.rolling(50).mean()
plt.plot(xpoints, ypoints, label="Average")
plt.plot(xpoints, rollingAvg5, label="Roll avg 5")
plt.plot(xpoints, rollingAvg10, label="Roll avg 10")
plt.plot(xpoints, rollingAvg50, label="Roll avg 50")
# plt.plot(xpoints, high, label="High")
# plt.plot(xpoints, low, label="Low")
plt.title("Stock Price Over Time: " + stockName)
plt.xlabel("Date")
plt.ylabel("Price")
myFmt = mdates.DateFormatter('%b')
plt.gca().xaxis.set_major_formatter(myFmt)
plt.legend()
plt.show()
# print(averageList)
# print(len(averageList))
# print(len(stock_df))
def rawBest(big_df):
# make a set of the names of the companies
# field all the names into the get stock by name
# take the first open and the last close date to see raw total difference
# make a dict of the company and its overall change
# sort this dict
# all the company names
names = big_df['Name']
# print(len(names))
unique_names = names.unique()
# print(len(unique_names))
# print(unique_names)
# dict of the company and its overall stock diff
compDiff = {}
# list to hold the dicts so that it can be sorted by stock diff
# count = 0
compDiffList = []
for name in unique_names:
stock = big_df.loc[(big_df['Name'] == name)]
year_change = stock['YTD % Chg'].iloc[-1]
if year_change == '...':
year_change = 0
year_change = float(year_change)
if year_change > 0:
open = stock['Open'].iloc[0]
# if open.find(",") != -1:
# while open.find(",") != -1:
# open = open.replace(",", "")
if open == '...':
open = -1
open = float(open)
shares = int(10000/open)
close = stock['Close'].iloc[-1]
if close == '...':
close = -1
# if close.find(",") != -1:
# while close.find(",") != -1:
# close = close.replace(",", "")
close = float(close)
close_money = shares * close
# print(close)
# print(type(close))
diff = (close_money - (open* shares))
# print(diff)
if diff > 1000:
compDiff = {"Name": name, "Diff": diff}
print(compDiff)
compDiffList.append(compDiff)
# count = count + 1
# print(count)
print(compDiffList)
print(len(compDiffList))
sorted_list = sorted(compDiffList, key=itemgetter('Diff'),reverse=True)
print("Top 3 companies based off of change in Profit")
top_three = []
for x in range(3):
print(sorted_list[x])
top_three.append(sorted_list[x])
# for item in sorted_list:
# for key, value in item:
# percent = (value/10000) * 100
# print(key," ",percent, "% increase in price")
# print(compDiffList.)
# print(dp.getStockDfByName("Eyenovia", big_df))
# for stock in big_df:
# print(stock)
graemeStuff('Apple')