Spaces:
Sleeping
Sleeping
Анастасия
commited on
Commit
·
79a3543
1
Parent(s):
593b312
final project
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- .gitattributes +1 -0
- app.py +145 -0
- downloaded_logos/ Bristol-Myers Squibb.png +3 -0
- downloaded_logos/.DS_Store +0 -0
- downloaded_logos/AAPL.png +3 -0
- downloaded_logos/AMD.png +3 -0
- downloaded_logos/AMGN.png +3 -0
- downloaded_logos/ASML.png +3 -0
- downloaded_logos/AXP.png +3 -0
- downloaded_logos/AbbVie.png +3 -0
- downloaded_logos/Abbott Laboratories.png +3 -0
- downloaded_logos/Accenture.png +3 -0
- downloaded_logos/Adobe.png +3 -0
- downloaded_logos/Agricultural Bank of China.png +3 -0
- downloaded_logos/Alibaba.png +3 -0
- downloaded_logos/Alphabet (Google).png +3 -0
- downloaded_logos/Amazon.png +3 -0
- downloaded_logos/Applied Materials.png +3 -0
- downloaded_logos/AstraZeneca.png +3 -0
- downloaded_logos/BA.png +3 -0
- downloaded_logos/BHP Group.png +3 -0
- downloaded_logos/Bank of America.png +3 -0
- downloaded_logos/Bank of China.png +3 -0
- downloaded_logos/Berkshire Hathaway.png +3 -0
- downloaded_logos/Broadcom.png +3 -0
- downloaded_logos/CAT.png +3 -0
- downloaded_logos/CRM.png +3 -0
- downloaded_logos/CSCO.png +3 -0
- downloaded_logos/CVX.png +3 -0
- downloaded_logos/China Construction Bank.png +3 -0
- downloaded_logos/China Life Insurance.png +3 -0
- downloaded_logos/China Mobile.png +3 -0
- downloaded_logos/Comcast.png +3 -0
- downloaded_logos/ConocoPhillips.png +3 -0
- downloaded_logos/Costco.png +3 -0
- downloaded_logos/DIS.png +3 -0
- downloaded_logos/DOW.png +3 -0
- downloaded_logos/Danaher.png +3 -0
- downloaded_logos/Dior.png +3 -0
- downloaded_logos/Eli Lilly.png +3 -0
- downloaded_logos/Exxon Mobil.png +3 -0
- downloaded_logos/GOOGL.png +3 -0
- downloaded_logos/GS.png +3 -0
- downloaded_logos/General Electric.png +3 -0
- downloaded_logos/HD.png +3 -0
- downloaded_logos/HDFC Bank.png +3 -0
- downloaded_logos/HON.png +3 -0
- downloaded_logos/HSBC.png +3 -0
- downloaded_logos/Hermès.png +3 -0
- downloaded_logos/IBM.png +3 -0
.gitattributes
CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
36 |
+
*.png filter=lfs diff=lfs merge=lfs -text
|
app.py
ADDED
@@ -0,0 +1,145 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
import pandas as pd
|
3 |
+
import yfinance as yf
|
4 |
+
import base64
|
5 |
+
import io
|
6 |
+
import os
|
7 |
+
import torch
|
8 |
+
from datetime import datetime, timedelta
|
9 |
+
from PIL import Image
|
10 |
+
from plotly import graph_objs as go
|
11 |
+
from datetime import date
|
12 |
+
|
13 |
+
st.set_page_config(layout='wide', initial_sidebar_state='expanded')
|
14 |
+
st.set_option('deprecation.showPyplotGlobalUse', False)
|
15 |
+
st.title('ML Wall Street')
|
16 |
+
st.image('images/img.png')
|
17 |
+
|
18 |
+
# Загрузка весов модели (выполняется только при первом запуске)
|
19 |
+
@st.cache_data
|
20 |
+
def load_model_weights():
|
21 |
+
return torch.load('model/model_weights.pth')
|
22 |
+
|
23 |
+
# Сохранение весов модели в сессионном состоянии
|
24 |
+
if 'model_weights' not in st.session_state:
|
25 |
+
st.session_state.model_weights = load_model_weights()
|
26 |
+
|
27 |
+
# @st.cache_data
|
28 |
+
# Функция для получения данных о ценах акций
|
29 |
+
def get_stock_data():
|
30 |
+
dow_tickers = ['UNH', 'MSFT', 'GS', 'HD', 'AMGN', 'MCD', 'CAT', 'CRM', 'V', 'BA', 'HON', 'TRV', 'AAPL', 'AXP', 'JPM', 'IBM', 'JNJ', 'WMT', 'PG', 'CVX', 'MRK', 'MMM', 'NKE', 'DIS', 'KO', 'DOW', 'CSCO', 'INTC', 'VZ', 'WBA']
|
31 |
+
start_date = (datetime.now() - timedelta(days=365)).strftime('%Y-%m-%d')
|
32 |
+
end_date = datetime.now().strftime('%Y-%m-%d')
|
33 |
+
dow_data = yf.download(dow_tickers, start=start_date, end=end_date)
|
34 |
+
return dow_data
|
35 |
+
|
36 |
+
data = get_stock_data()
|
37 |
+
latest_date = data.index[-1].strftime('%Y-%m-%d')
|
38 |
+
data = data.loc[latest_date, 'Close'].reset_index()
|
39 |
+
data.columns = ['Ticker', 'Close']
|
40 |
+
data['Close'] = data['Close'].round(2)
|
41 |
+
|
42 |
+
# Добавляем кнопку обновления данных
|
43 |
+
# if st.button("Обновить данные", type="primary"):
|
44 |
+
# data = get_stock_data()
|
45 |
+
# latest_date = data.index[-1].strftime('%Y-%m-%d')
|
46 |
+
# data = data.loc[latest_date, 'Close'].reset_index()
|
47 |
+
# data.columns = ['Ticker', 'Close']
|
48 |
+
# data['Close'] = data['Close'].round(2)
|
49 |
+
# st.success("Данные успешно обновлены!")
|
50 |
+
|
51 |
+
st.markdown(f"<h3 style='text-align: center;'>Цены актуальны на последнюю дату закрытия торгов {latest_date}</h3>", unsafe_allow_html=True)
|
52 |
+
|
53 |
+
col3, col1, col2 = st.columns([0.2, 5.3, 1.8])
|
54 |
+
with col2:
|
55 |
+
def image_to_base64(img_path, output_size=(64, 64)):
|
56 |
+
if os.path.exists(img_path):
|
57 |
+
with Image.open(img_path) as img:
|
58 |
+
img = img.resize(output_size)
|
59 |
+
buffered = io.BytesIO()
|
60 |
+
img.save(buffered, format="PNG")
|
61 |
+
return f"data:image/png;base64,{base64.b64encode(buffered.getvalue()).decode()}"
|
62 |
+
return ""
|
63 |
+
|
64 |
+
if 'Logo' not in data.columns:
|
65 |
+
output_dir = 'downloaded_logos'
|
66 |
+
data['Logo'] = data['Ticker'].apply(lambda name: os.path.join(output_dir, f'{name}.png'))
|
67 |
+
|
68 |
+
# Convert image paths to Base64
|
69 |
+
data["Logo"] = data["Logo"].apply(image_to_base64)
|
70 |
+
image_column = st.column_config.ImageColumn(label="")
|
71 |
+
ticker_column = st.column_config.TextColumn(label="Ticker 💬", help="📍**Тикеры компаний Индекса Dow Jones**")
|
72 |
+
price_column = st.column_config.TextColumn(label=f"Close 💬", help="📍**Цена за последний день (в USD)**")
|
73 |
+
|
74 |
+
data.reset_index(drop=True, inplace=True)
|
75 |
+
data.index = data.index + 1
|
76 |
+
|
77 |
+
data = data[['Logo', 'Ticker', 'Close']]
|
78 |
+
st.write('')
|
79 |
+
st.write('')
|
80 |
+
st.markdown('**Компании Индекса Dow Jones**')
|
81 |
+
st.dataframe(data, height=1088, column_config={"Logo": image_column, "Ticker":ticker_column, 'Close':price_column})
|
82 |
+
|
83 |
+
with col1:
|
84 |
+
START = "1920-01-01"
|
85 |
+
TODAY = date.today().strftime("%Y-%m-%d")
|
86 |
+
# @st.cache_data
|
87 |
+
def load_data(ticker):
|
88 |
+
data = yf.download(ticker, START, TODAY)
|
89 |
+
data.reset_index(inplace=True)
|
90 |
+
return data
|
91 |
+
|
92 |
+
def plot_raw_data(data, text):
|
93 |
+
fig = go.Figure()
|
94 |
+
fig.add_trace(go.Scatter(x=data['Date'], y=data['Close'], name="Цена закрытия"))
|
95 |
+
fig.update_layout(title_text=text, xaxis_rangeslider_visible=True)
|
96 |
+
fig.update_traces(showlegend=True)
|
97 |
+
st.plotly_chart(fig, use_container_width=True)
|
98 |
+
|
99 |
+
data = load_data('^DJI')
|
100 |
+
last_DJI = data['Close'].iloc[-1]
|
101 |
+
diff_DJI = data['Close'].iloc[-1] - data['Close'].iloc[-2]
|
102 |
+
pr_DJI = 100 * diff_DJI / last_DJI
|
103 |
+
text_DJI = f'🇺🇸 Dow Jones Industrial Average (^DJI) \
|
104 |
+
<span style="font-size: 1.5em;">{last_DJI:.2f}</span> <span style="font-size: 1em; color: crimson;">{diff_DJI:.2f}</span><span style="font-size: 1em; color: crimson;">({pr_DJI:.2f}%)</span>' \
|
105 |
+
'<br><span style="font-size: 0.7em; color: grey;">DJI - DJI Real Time Price. Currency in USD</span>'
|
106 |
+
plot_raw_data(data, text_DJI)
|
107 |
+
check1 = st.checkbox("Исторические данные Dow Jones Industrial Average")
|
108 |
+
if check1:
|
109 |
+
st.write(data)
|
110 |
+
|
111 |
+
data_500 = load_data('^GSPC')
|
112 |
+
last_500 = data_500['Close'].iloc[-1]
|
113 |
+
diff_500 = data_500['Close'].iloc[-1] - data_500['Close'].iloc[-2]
|
114 |
+
pr_500 = 100 * diff_500 / last_500
|
115 |
+
text_500 = f'🇺🇸 S&P 500 (^GSPC) \
|
116 |
+
<span style="font-size: 1.5em;">{last_500:.2f}</span> <span style="font-size: 1em; color: crimson;">{diff_500:.2f}</span><span style="font-size: 1em; color: crimson;">({pr_500:.2f}%)</span>' \
|
117 |
+
'<br><span style="font-size: 0.7em; color: grey;">SNP - SNP Real Time Price. Currency in USD</span>'
|
118 |
+
plot_raw_data(data_500, text_500)
|
119 |
+
check4 = st.checkbox("S&P 500")
|
120 |
+
if check4:
|
121 |
+
st.write(data_500)
|
122 |
+
|
123 |
+
data_SSE = load_data('000001.SS')
|
124 |
+
last_SSE = data_SSE['Close'].iloc[-1]
|
125 |
+
diff_SSE = data_SSE['Close'].iloc[-1] - data_SSE['Close'].iloc[-2]
|
126 |
+
pr_SSE = 100 * diff_SSE / last_SSE
|
127 |
+
text_SSE = f'🇨🇳 SSE Composite Index (000001.SS) \
|
128 |
+
<span style="font-size: 1.5em;">{last_SSE:.2f}</span> <span style="font-size: 1em; color: crimson;">{diff_SSE:.2f}</span><span style="font-size: 1em; color: crimson;">({pr_SSE:.2f}%)</span>' \
|
129 |
+
'<br><span style="font-size: 0.7em; color: grey;">Shanghai - Shanghai Delayed Price. Currency in CNY</span>'
|
130 |
+
plot_raw_data(data_SSE, text_SSE)
|
131 |
+
check2 = st.checkbox("Исторические данные SSE Composite Index")
|
132 |
+
if check2:
|
133 |
+
st.write(data_SSE)
|
134 |
+
|
135 |
+
data_IMOEX = load_data('IMOEX.ME')
|
136 |
+
last_IMOEX = data_IMOEX['Close'].iloc[-1]
|
137 |
+
diff_IMOEX = data_IMOEX['Close'].iloc[-1] - data_IMOEX['Close'].iloc[-2]
|
138 |
+
pr_IMOEX = 100 * diff_IMOEX / last_IMOEX
|
139 |
+
text_IMOEX= f'🇷🇺 MOEX Russia Index (IMOEX.ME) \
|
140 |
+
<span style="font-size: 1.5em;">{last_IMOEX:.2f}</span> <span style="font-size: 1em; color: crimson;">{diff_IMOEX:.2f}</span><span style="font-size: 1em; color: crimson;">({pr_IMOEX:.2f}%)</span>' \
|
141 |
+
'<br><span style="font-size: 0.7em; color: grey;">MCX - MCX Real Time Price. Currency in RUB</span>'
|
142 |
+
plot_raw_data(data_IMOEX, text_IMOEX)
|
143 |
+
check3 = st.checkbox("Исторические данные MOEX Russia Index")
|
144 |
+
if check3:
|
145 |
+
st.write(data_IMOEX)
|
downloaded_logos/ Bristol-Myers Squibb.png
ADDED
Git LFS Details
|
downloaded_logos/.DS_Store
ADDED
Binary file (6.15 kB). View file
|
|
downloaded_logos/AAPL.png
ADDED
Git LFS Details
|
downloaded_logos/AMD.png
ADDED
Git LFS Details
|
downloaded_logos/AMGN.png
ADDED
Git LFS Details
|
downloaded_logos/ASML.png
ADDED
Git LFS Details
|
downloaded_logos/AXP.png
ADDED
Git LFS Details
|
downloaded_logos/AbbVie.png
ADDED
Git LFS Details
|
downloaded_logos/Abbott Laboratories.png
ADDED
Git LFS Details
|
downloaded_logos/Accenture.png
ADDED
Git LFS Details
|
downloaded_logos/Adobe.png
ADDED
Git LFS Details
|
downloaded_logos/Agricultural Bank of China.png
ADDED
Git LFS Details
|
downloaded_logos/Alibaba.png
ADDED
Git LFS Details
|
downloaded_logos/Alphabet (Google).png
ADDED
Git LFS Details
|
downloaded_logos/Amazon.png
ADDED
Git LFS Details
|
downloaded_logos/Applied Materials.png
ADDED
Git LFS Details
|
downloaded_logos/AstraZeneca.png
ADDED
Git LFS Details
|
downloaded_logos/BA.png
ADDED
Git LFS Details
|
downloaded_logos/BHP Group.png
ADDED
Git LFS Details
|
downloaded_logos/Bank of America.png
ADDED
Git LFS Details
|
downloaded_logos/Bank of China.png
ADDED
Git LFS Details
|
downloaded_logos/Berkshire Hathaway.png
ADDED
Git LFS Details
|
downloaded_logos/Broadcom.png
ADDED
Git LFS Details
|
downloaded_logos/CAT.png
ADDED
Git LFS Details
|
downloaded_logos/CRM.png
ADDED
Git LFS Details
|
downloaded_logos/CSCO.png
ADDED
Git LFS Details
|
downloaded_logos/CVX.png
ADDED
Git LFS Details
|
downloaded_logos/China Construction Bank.png
ADDED
Git LFS Details
|
downloaded_logos/China Life Insurance.png
ADDED
Git LFS Details
|
downloaded_logos/China Mobile.png
ADDED
Git LFS Details
|
downloaded_logos/Comcast.png
ADDED
Git LFS Details
|
downloaded_logos/ConocoPhillips.png
ADDED
Git LFS Details
|
downloaded_logos/Costco.png
ADDED
Git LFS Details
|
downloaded_logos/DIS.png
ADDED
Git LFS Details
|
downloaded_logos/DOW.png
ADDED
Git LFS Details
|
downloaded_logos/Danaher.png
ADDED
Git LFS Details
|
downloaded_logos/Dior.png
ADDED
Git LFS Details
|
downloaded_logos/Eli Lilly.png
ADDED
Git LFS Details
|
downloaded_logos/Exxon Mobil.png
ADDED
Git LFS Details
|
downloaded_logos/GOOGL.png
ADDED
Git LFS Details
|
downloaded_logos/GS.png
ADDED
Git LFS Details
|
downloaded_logos/General Electric.png
ADDED
Git LFS Details
|
downloaded_logos/HD.png
ADDED
Git LFS Details
|
downloaded_logos/HDFC Bank.png
ADDED
Git LFS Details
|
downloaded_logos/HON.png
ADDED
Git LFS Details
|
downloaded_logos/HSBC.png
ADDED
Git LFS Details
|
downloaded_logos/Hermès.png
ADDED
Git LFS Details
|
downloaded_logos/IBM.png
ADDED
Git LFS Details
|