diff --git a/.gitattributes b/.gitattributes
index a6344aac8c09253b3b630fb776ae94478aa0275b..abb6c708af2c6f8f38aa82bd79cfd74f444d91e7 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text
*tfevents* filter=lfs diff=lfs merge=lfs -text
+images/img.png filter=lfs diff=lfs merge=lfs -text
diff --git a/app.py b/app.py
new file mode 100644
index 0000000000000000000000000000000000000000..30b25aa2fde2e44fb5dafec8a71af742375a3356
--- /dev/null
+++ b/app.py
@@ -0,0 +1,135 @@
+import streamlit as st
+import pandas as pd
+import yfinance as yf
+import base64
+import io
+import os
+from datetime import datetime, timedelta
+from PIL import Image
+from plotly import graph_objs as go
+from datetime import date
+
+st.set_page_config(layout='wide', initial_sidebar_state='expanded')
+st.set_option('deprecation.showPyplotGlobalUse', False)
+st.title('ML Wall Street')
+st.image('images/img.png')
+
+# @st.cache_data
+# Функция для получения данных о ценах акций
+def get_stock_data():
+ 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']
+ start_date = (datetime.now() - timedelta(days=365)).strftime('%Y-%m-%d')
+ end_date = datetime.now().strftime('%Y-%m-%d')
+ dow_data = yf.download(dow_tickers, start=start_date, end=end_date)
+ return dow_data
+
+data = get_stock_data()
+latest_date = data.index[-1].strftime('%Y-%m-%d')
+data = data.loc[latest_date, 'Close'].reset_index()
+data.columns = ['Ticker', 'Close']
+data['Close'] = data['Close'].round(2)
+
+# Добавляем кнопку обновления данных
+# if st.button("Обновить данные", type="primary"):
+# data = get_stock_data()
+# latest_date = data.index[-1].strftime('%Y-%m-%d')
+# data = data.loc[latest_date, 'Close'].reset_index()
+# data.columns = ['Ticker', 'Close']
+# data['Close'] = data['Close'].round(2)
+# st.success("Данные успешно обновлены!")
+
+st.markdown(f"
Цены актуальны на последнюю дату закрытия торгов {latest_date}
", unsafe_allow_html=True)
+
+col3, col1, col2 = st.columns([0.2, 5.3, 1.8])
+with col2:
+ def image_to_base64(img_path, output_size=(64, 64)):
+ if os.path.exists(img_path):
+ with Image.open(img_path) as img:
+ img = img.resize(output_size)
+ buffered = io.BytesIO()
+ img.save(buffered, format="PNG")
+ return f"data:image/png;base64,{base64.b64encode(buffered.getvalue()).decode()}"
+ return ""
+
+ if 'Logo' not in data.columns:
+ output_dir = 'downloaded_logos'
+ data['Logo'] = data['Ticker'].apply(lambda name: os.path.join(output_dir, f'{name}.png'))
+
+ # Convert image paths to Base64
+ data["Logo"] = data["Logo"].apply(image_to_base64)
+ image_column = st.column_config.ImageColumn(label="")
+ ticker_column = st.column_config.TextColumn(label="Ticker 💬", help="📍**Тикеры компаний Индекса Dow Jones**")
+ price_column = st.column_config.TextColumn(label=f"Close 💬", help="📍**Цена за последний день (в USD)**")
+
+ data.reset_index(drop=True, inplace=True)
+ data.index = data.index + 1
+
+ data = data[['Logo', 'Ticker', 'Close']]
+ st.write('')
+ st.write('')
+ st.markdown('**Компании Индекса Dow Jones**')
+ st.dataframe(data, height=1088, column_config={"Logo": image_column, "Ticker":ticker_column, 'Close':price_column})
+
+with col1:
+ START = "1920-01-01"
+ TODAY = date.today().strftime("%Y-%m-%d")
+ # @st.cache_data
+ def load_data(ticker):
+ data = yf.download(ticker, START, TODAY)
+ data.reset_index(inplace=True)
+ return data
+
+ def plot_raw_data(data, text):
+ fig = go.Figure()
+ fig.add_trace(go.Scatter(x=data['Date'], y=data['Close'], name="Цена закрытия"))
+ fig.update_layout(title_text=text, xaxis_rangeslider_visible=True)
+ fig.update_traces(showlegend=True)
+ st.plotly_chart(fig)
+
+ data = load_data('^DJI')
+ last_DJI = data['Close'].iloc[-1]
+ diff_DJI = data['Close'].iloc[-1] - data['Close'].iloc[-2]
+ pr_DJI = 100 * diff_DJI / last_DJI
+ text_DJI = f'🇺🇸 Dow Jones Industrial Average (^DJI) \
+ {last_DJI:.2f} {diff_DJI:.2f}({pr_DJI:.2f}%)' \
+ '
DJI - DJI Real Time Price. Currency in USD'
+ plot_raw_data(data, text_DJI)
+ check1 = st.checkbox("Исторические данные Dow Jones Industrial Average")
+ if check1:
+ st.write(data)
+
+ data_500 = load_data('^GSPC')
+ last_500 = data_500['Close'].iloc[-1]
+ diff_500 = data_500['Close'].iloc[-1] - data_500['Close'].iloc[-2]
+ pr_500 = 100 * diff_500 / last_500
+ text_500 = f'🇺🇸 S&P 500 (^GSPC) \
+ {last_500:.2f} {diff_500:.2f}({pr_500:.2f}%)' \
+ '
SNP - SNP Real Time Price. Currency in USD'
+ plot_raw_data(data_500, text_500)
+ check4 = st.checkbox("S&P 500")
+ if check4:
+ st.write(data_500)
+
+ data_SSE = load_data('000001.SS')
+ last_SSE = data_SSE['Close'].iloc[-1]
+ diff_SSE = data_SSE['Close'].iloc[-1] - data_SSE['Close'].iloc[-2]
+ pr_SSE = 100 * diff_SSE / last_SSE
+ text_SSE = f'🇨🇳 SSE Composite Index (000001.SS) \
+ {last_SSE:.2f} {diff_SSE:.2f}({pr_SSE:.2f}%)' \
+ '
Shanghai - Shanghai Delayed Price. Currency in CNY'
+ plot_raw_data(data_SSE, text_SSE)
+ check2 = st.checkbox("Исторические данные SSE Composite Index")
+ if check2:
+ st.write(data_SSE)
+
+ data_IMOEX = load_data('IMOEX.ME')
+ last_IMOEX = data_IMOEX['Close'].iloc[-1]
+ diff_IMOEX = data_IMOEX['Close'].iloc[-1] - data_IMOEX['Close'].iloc[-2]
+ pr_IMOEX = 100 * diff_IMOEX / last_IMOEX
+ text_IMOEX= f'🇷🇺 MOEX Russia Index (IMOEX.ME) \
+ {last_IMOEX:.2f} {diff_IMOEX:.2f}({pr_IMOEX:.2f}%)' \
+ '
MCX - MCX Real Time Price. Currency in RUB'
+ plot_raw_data(data_IMOEX, text_IMOEX)
+ check3 = st.checkbox("Исторические данные MOEX Russia Index")
+ if check3:
+ st.write(data_IMOEX)
diff --git a/downloaded_logos/ Bristol-Myers Squibb.png b/downloaded_logos/ Bristol-Myers Squibb.png
new file mode 100644
index 0000000000000000000000000000000000000000..f44638f8247bfbbe0fee6a8cf07032c257ac8e57
Binary files /dev/null and b/downloaded_logos/ Bristol-Myers Squibb.png differ
diff --git a/downloaded_logos/.DS_Store b/downloaded_logos/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6
Binary files /dev/null and b/downloaded_logos/.DS_Store differ
diff --git a/downloaded_logos/AAPL.png b/downloaded_logos/AAPL.png
new file mode 100644
index 0000000000000000000000000000000000000000..c4155fc5ea6a12f74285faac6e36d562baae997d
Binary files /dev/null and b/downloaded_logos/AAPL.png differ
diff --git a/downloaded_logos/AMD.png b/downloaded_logos/AMD.png
new file mode 100644
index 0000000000000000000000000000000000000000..a6f6b26aa03bb47db29fd70c65e61f4709f1139f
Binary files /dev/null and b/downloaded_logos/AMD.png differ
diff --git a/downloaded_logos/AMGN.png b/downloaded_logos/AMGN.png
new file mode 100644
index 0000000000000000000000000000000000000000..aebcad968e613a2c9f6da08db04301a5b1f2625c
Binary files /dev/null and b/downloaded_logos/AMGN.png differ
diff --git a/downloaded_logos/ASML.png b/downloaded_logos/ASML.png
new file mode 100644
index 0000000000000000000000000000000000000000..595280b807f711ff6322feb744f21a2a305bbc7d
Binary files /dev/null and b/downloaded_logos/ASML.png differ
diff --git a/downloaded_logos/AXP.png b/downloaded_logos/AXP.png
new file mode 100644
index 0000000000000000000000000000000000000000..aa6d384c0919d7abc18efbebfb25a90c79396caa
Binary files /dev/null and b/downloaded_logos/AXP.png differ
diff --git a/downloaded_logos/AbbVie.png b/downloaded_logos/AbbVie.png
new file mode 100644
index 0000000000000000000000000000000000000000..e8cbbebb14474094e1be41b7f5001a272e19c753
Binary files /dev/null and b/downloaded_logos/AbbVie.png differ
diff --git a/downloaded_logos/Abbott Laboratories.png b/downloaded_logos/Abbott Laboratories.png
new file mode 100644
index 0000000000000000000000000000000000000000..66ed8c745777035100adc743ac52e683fc580c29
Binary files /dev/null and b/downloaded_logos/Abbott Laboratories.png differ
diff --git a/downloaded_logos/Accenture.png b/downloaded_logos/Accenture.png
new file mode 100644
index 0000000000000000000000000000000000000000..f57417d35bde6ff1ebc5d51d0c5dded91fb3a8a4
Binary files /dev/null and b/downloaded_logos/Accenture.png differ
diff --git a/downloaded_logos/Adobe.png b/downloaded_logos/Adobe.png
new file mode 100644
index 0000000000000000000000000000000000000000..75665a5d28739b63a035b71abd946c1dbf161062
Binary files /dev/null and b/downloaded_logos/Adobe.png differ
diff --git a/downloaded_logos/Agricultural Bank of China.png b/downloaded_logos/Agricultural Bank of China.png
new file mode 100644
index 0000000000000000000000000000000000000000..769e339924d695657aa1c87af245211b4c6584cf
Binary files /dev/null and b/downloaded_logos/Agricultural Bank of China.png differ
diff --git a/downloaded_logos/Alibaba.png b/downloaded_logos/Alibaba.png
new file mode 100644
index 0000000000000000000000000000000000000000..fb5b9bbff7927566bbd311c0864b5547b9e4efe4
Binary files /dev/null and b/downloaded_logos/Alibaba.png differ
diff --git a/downloaded_logos/Alphabet (Google).png b/downloaded_logos/Alphabet (Google).png
new file mode 100644
index 0000000000000000000000000000000000000000..194bd04714201ac25ed402a4c39dfe91b9cb8956
Binary files /dev/null and b/downloaded_logos/Alphabet (Google).png differ
diff --git a/downloaded_logos/Amazon.png b/downloaded_logos/Amazon.png
new file mode 100644
index 0000000000000000000000000000000000000000..fe8a4940fd14901cf679e3a28734905dd6de0e20
Binary files /dev/null and b/downloaded_logos/Amazon.png differ
diff --git a/downloaded_logos/Applied Materials.png b/downloaded_logos/Applied Materials.png
new file mode 100644
index 0000000000000000000000000000000000000000..a1bffe3a3a747ebac6050af112ded444500ba9ad
Binary files /dev/null and b/downloaded_logos/Applied Materials.png differ
diff --git a/downloaded_logos/AstraZeneca.png b/downloaded_logos/AstraZeneca.png
new file mode 100644
index 0000000000000000000000000000000000000000..c8a90428d74348b2dba1213e5069353ee55763bf
Binary files /dev/null and b/downloaded_logos/AstraZeneca.png differ
diff --git a/downloaded_logos/BA.png b/downloaded_logos/BA.png
new file mode 100644
index 0000000000000000000000000000000000000000..3035629ca1d434489fad2f8e45ca084659913d44
Binary files /dev/null and b/downloaded_logos/BA.png differ
diff --git a/downloaded_logos/BHP Group.png b/downloaded_logos/BHP Group.png
new file mode 100644
index 0000000000000000000000000000000000000000..4e9e0c7dac6d30aa4b5a9f606f950696f1384285
Binary files /dev/null and b/downloaded_logos/BHP Group.png differ
diff --git a/downloaded_logos/Bank of America.png b/downloaded_logos/Bank of America.png
new file mode 100644
index 0000000000000000000000000000000000000000..eb7e898907ded118c8fd99031193ec5d10a80845
Binary files /dev/null and b/downloaded_logos/Bank of America.png differ
diff --git a/downloaded_logos/Bank of China.png b/downloaded_logos/Bank of China.png
new file mode 100644
index 0000000000000000000000000000000000000000..b2f5828bbfe025705a58c077aaffe6672bae9db8
Binary files /dev/null and b/downloaded_logos/Bank of China.png differ
diff --git a/downloaded_logos/CAT.png b/downloaded_logos/CAT.png
new file mode 100644
index 0000000000000000000000000000000000000000..1a4f66adeb8297d2059d61697bb5c3ce7a3a4640
Binary files /dev/null and b/downloaded_logos/CAT.png differ
diff --git a/downloaded_logos/CRM.png b/downloaded_logos/CRM.png
new file mode 100644
index 0000000000000000000000000000000000000000..93c3eb48afe92595d0f938d46cf90aa7f2e5a6cb
Binary files /dev/null and b/downloaded_logos/CRM.png differ
diff --git a/downloaded_logos/CSCO.png b/downloaded_logos/CSCO.png
new file mode 100644
index 0000000000000000000000000000000000000000..0cbec47373e29e769105c44b30d0cbcac24da308
Binary files /dev/null and b/downloaded_logos/CSCO.png differ
diff --git a/downloaded_logos/CVX.png b/downloaded_logos/CVX.png
new file mode 100644
index 0000000000000000000000000000000000000000..149bc371f1aab2af7235af394346a974f18dfa9d
Binary files /dev/null and b/downloaded_logos/CVX.png differ
diff --git a/downloaded_logos/China Construction Bank.png b/downloaded_logos/China Construction Bank.png
new file mode 100644
index 0000000000000000000000000000000000000000..3cf971749afb323105f026f3cdc22acbc7c2114f
Binary files /dev/null and b/downloaded_logos/China Construction Bank.png differ
diff --git a/downloaded_logos/China Life Insurance.png b/downloaded_logos/China Life Insurance.png
new file mode 100644
index 0000000000000000000000000000000000000000..2fec0868ba1fbc71af309b3e83597adec8e418e5
Binary files /dev/null and b/downloaded_logos/China Life Insurance.png differ
diff --git a/downloaded_logos/Comcast.png b/downloaded_logos/Comcast.png
new file mode 100644
index 0000000000000000000000000000000000000000..af47ee3655d011f49b24689ecc61d13752ae11fb
Binary files /dev/null and b/downloaded_logos/Comcast.png differ
diff --git a/downloaded_logos/ConocoPhillips.png b/downloaded_logos/ConocoPhillips.png
new file mode 100644
index 0000000000000000000000000000000000000000..501f299cfc1fff47f1cc08353fc2c58c20f258c0
Binary files /dev/null and b/downloaded_logos/ConocoPhillips.png differ
diff --git a/downloaded_logos/DOW.png b/downloaded_logos/DOW.png
new file mode 100644
index 0000000000000000000000000000000000000000..c7946681bb84166b154fb29060fe7fa853b3227b
Binary files /dev/null and b/downloaded_logos/DOW.png differ
diff --git a/downloaded_logos/Danaher.png b/downloaded_logos/Danaher.png
new file mode 100644
index 0000000000000000000000000000000000000000..a51cd22d5bc5f27b33f4a3b7c70126bd327bd19c
Binary files /dev/null and b/downloaded_logos/Danaher.png differ
diff --git a/downloaded_logos/Dior.png b/downloaded_logos/Dior.png
new file mode 100644
index 0000000000000000000000000000000000000000..51922425b5623fb6a45f3eba93510f732d6164da
Binary files /dev/null and b/downloaded_logos/Dior.png differ
diff --git a/downloaded_logos/Eli Lilly.png b/downloaded_logos/Eli Lilly.png
new file mode 100644
index 0000000000000000000000000000000000000000..ad752edf96eca76f2bac57d3c8e7315114c43041
Binary files /dev/null and b/downloaded_logos/Eli Lilly.png differ
diff --git a/downloaded_logos/Exxon Mobil.png b/downloaded_logos/Exxon Mobil.png
new file mode 100644
index 0000000000000000000000000000000000000000..5cb259c8df7e72b666a9a4e41fe7c22a384415bb
Binary files /dev/null and b/downloaded_logos/Exxon Mobil.png differ
diff --git a/downloaded_logos/GOOGL.png b/downloaded_logos/GOOGL.png
new file mode 100644
index 0000000000000000000000000000000000000000..c99f1e02a4f4aabefea789911937e647d3de2876
Binary files /dev/null and b/downloaded_logos/GOOGL.png differ
diff --git a/downloaded_logos/GS.png b/downloaded_logos/GS.png
new file mode 100644
index 0000000000000000000000000000000000000000..8d5ce2a681081e29c54c9c8aef4f49cad16ddf72
Binary files /dev/null and b/downloaded_logos/GS.png differ
diff --git a/downloaded_logos/HD.png b/downloaded_logos/HD.png
new file mode 100644
index 0000000000000000000000000000000000000000..39fb639b20a828fdaf265ae2acd5384a897f568a
Binary files /dev/null and b/downloaded_logos/HD.png differ
diff --git a/downloaded_logos/HDFC Bank.png b/downloaded_logos/HDFC Bank.png
new file mode 100644
index 0000000000000000000000000000000000000000..769a01e55b5f2b5abe369f59470170dc407a333e
Binary files /dev/null and b/downloaded_logos/HDFC Bank.png differ
diff --git a/downloaded_logos/HON.png b/downloaded_logos/HON.png
new file mode 100644
index 0000000000000000000000000000000000000000..6bc3f6a0aabdef53c06b260702daabc55f4d9556
Binary files /dev/null and b/downloaded_logos/HON.png differ
diff --git a/downloaded_logos/HSBC.png b/downloaded_logos/HSBC.png
new file mode 100644
index 0000000000000000000000000000000000000000..08b2edafd3e3ff5bf37e7507868a2163c1fe56a4
Binary files /dev/null and b/downloaded_logos/HSBC.png differ
diff --git "a/downloaded_logos/Herme\314\200s.png" "b/downloaded_logos/Herme\314\200s.png"
new file mode 100644
index 0000000000000000000000000000000000000000..21d8bc5bd3b6480b274be836fe45c1e1723c98d3
Binary files /dev/null and "b/downloaded_logos/Herme\314\200s.png" differ
diff --git a/downloaded_logos/IBM.png b/downloaded_logos/IBM.png
new file mode 100644
index 0000000000000000000000000000000000000000..812f40e72314bf0bc5e199c5534861694c8ddd01
Binary files /dev/null and b/downloaded_logos/IBM.png differ
diff --git a/downloaded_logos/ICBC.png b/downloaded_logos/ICBC.png
new file mode 100644
index 0000000000000000000000000000000000000000..704d1dd72ab569bbfa69cd9585a0d9ae580622ba
Binary files /dev/null and b/downloaded_logos/ICBC.png differ
diff --git a/downloaded_logos/INTC.png b/downloaded_logos/INTC.png
new file mode 100644
index 0000000000000000000000000000000000000000..84c4a8c62a578a8a2b8213e265e6e1d0fe326566
Binary files /dev/null and b/downloaded_logos/INTC.png differ
diff --git a/downloaded_logos/International Holding Company .png b/downloaded_logos/International Holding Company .png
new file mode 100644
index 0000000000000000000000000000000000000000..81e744be8569f05ad1934e47d51ba8470623e263
Binary files /dev/null and b/downloaded_logos/International Holding Company .png differ
diff --git a/downloaded_logos/Intuit.png b/downloaded_logos/Intuit.png
new file mode 100644
index 0000000000000000000000000000000000000000..1fa2142071d6756ae844c2561c6681d96e548b42
Binary files /dev/null and b/downloaded_logos/Intuit.png differ
diff --git a/downloaded_logos/JNJ.png b/downloaded_logos/JNJ.png
new file mode 100644
index 0000000000000000000000000000000000000000..24358e8e9a370464140ae5ea542a12356e22cb42
Binary files /dev/null and b/downloaded_logos/JNJ.png differ
diff --git a/downloaded_logos/JPM.png b/downloaded_logos/JPM.png
new file mode 100644
index 0000000000000000000000000000000000000000..371c153e2531ad1b7449b6caaa5142b80393d6d2
Binary files /dev/null and b/downloaded_logos/JPM.png differ
diff --git a/downloaded_logos/KO.png b/downloaded_logos/KO.png
new file mode 100644
index 0000000000000000000000000000000000000000..0757aa3403ec2b0051e6368d33ae9c6b8ca3a794
Binary files /dev/null and b/downloaded_logos/KO.png differ
diff --git a/downloaded_logos/Kweichow Moutai.png b/downloaded_logos/Kweichow Moutai.png
new file mode 100644
index 0000000000000000000000000000000000000000..8c9420a4326e947ca7771a8e77bbca8577b6a9e9
Binary files /dev/null and b/downloaded_logos/Kweichow Moutai.png differ
diff --git "a/downloaded_logos/L'Ore\314\201al.png" "b/downloaded_logos/L'Ore\314\201al.png"
new file mode 100644
index 0000000000000000000000000000000000000000..87bfcf7dc32d8d1d6f6c6bf70a0979f072d632af
Binary files /dev/null and "b/downloaded_logos/L'Ore\314\201al.png" differ
diff --git a/downloaded_logos/LVMH.png b/downloaded_logos/LVMH.png
new file mode 100644
index 0000000000000000000000000000000000000000..14d43f9bdc6e2c1fc800fa946ebb06f010d78941
Binary files /dev/null and b/downloaded_logos/LVMH.png differ
diff --git a/downloaded_logos/Linde.png b/downloaded_logos/Linde.png
new file mode 100644
index 0000000000000000000000000000000000000000..a8cf1b849436393f3f33384a2404955befac8e1a
Binary files /dev/null and b/downloaded_logos/Linde.png differ
diff --git a/downloaded_logos/MCD.png b/downloaded_logos/MCD.png
new file mode 100644
index 0000000000000000000000000000000000000000..61319bc7c328078db5f02059a1ee31e0fb0373de
Binary files /dev/null and b/downloaded_logos/MCD.png differ
diff --git a/downloaded_logos/MRK.png b/downloaded_logos/MRK.png
new file mode 100644
index 0000000000000000000000000000000000000000..178d82aa5c736d3b16298702166f227f07ff8185
Binary files /dev/null and b/downloaded_logos/MRK.png differ
diff --git a/downloaded_logos/MSFT.png b/downloaded_logos/MSFT.png
new file mode 100644
index 0000000000000000000000000000000000000000..cd31de5fc64fbc0efb57161af08fc08d6fe2cf00
Binary files /dev/null and b/downloaded_logos/MSFT.png differ
diff --git a/downloaded_logos/Mastercard.png b/downloaded_logos/Mastercard.png
new file mode 100644
index 0000000000000000000000000000000000000000..f5084ae514250cca65ba92b29bcd4349255a5dd1
Binary files /dev/null and b/downloaded_logos/Mastercard.png differ
diff --git a/downloaded_logos/Morgan Stanley.png b/downloaded_logos/Morgan Stanley.png
new file mode 100644
index 0000000000000000000000000000000000000000..6f118385154f847c4d2a03f0f16892f5d1c1f93b
Binary files /dev/null and b/downloaded_logos/Morgan Stanley.png differ
diff --git a/downloaded_logos/NKE.png b/downloaded_logos/NKE.png
new file mode 100644
index 0000000000000000000000000000000000000000..b770a406387f7ff7934747022132c900e44df126
Binary files /dev/null and b/downloaded_logos/NKE.png differ
diff --git a/downloaded_logos/NVIDIA.png b/downloaded_logos/NVIDIA.png
new file mode 100644
index 0000000000000000000000000000000000000000..c3c008761e6dce238f9c68aae5d258cad26e9350
Binary files /dev/null and b/downloaded_logos/NVIDIA.png differ
diff --git "a/downloaded_logos/Nestle\314\201.png" "b/downloaded_logos/Nestle\314\201.png"
new file mode 100644
index 0000000000000000000000000000000000000000..537470779810578cf8dd76113b5da09a8780c1a7
Binary files /dev/null and "b/downloaded_logos/Nestle\314\201.png" differ
diff --git a/downloaded_logos/Netflix.png b/downloaded_logos/Netflix.png
new file mode 100644
index 0000000000000000000000000000000000000000..1acbd6763dd5d4aef810273ac6e9793df77126ed
Binary files /dev/null and b/downloaded_logos/Netflix.png differ
diff --git a/downloaded_logos/Novartis.png b/downloaded_logos/Novartis.png
new file mode 100644
index 0000000000000000000000000000000000000000..42bc569d51d4f47fec3eeb9f0a7b51b19090e139
Binary files /dev/null and b/downloaded_logos/Novartis.png differ
diff --git a/downloaded_logos/Novo Nordisk.png b/downloaded_logos/Novo Nordisk.png
new file mode 100644
index 0000000000000000000000000000000000000000..78b2ad443a85efd06d21c8b76dfb22969ec4f04f
Binary files /dev/null and b/downloaded_logos/Novo Nordisk.png differ
diff --git a/downloaded_logos/Oracle.png b/downloaded_logos/Oracle.png
new file mode 100644
index 0000000000000000000000000000000000000000..6b9a4c24c404ddc6f2492dfe106b718f6eae3d53
Binary files /dev/null and b/downloaded_logos/Oracle.png differ
diff --git a/downloaded_logos/PG.png b/downloaded_logos/PG.png
new file mode 100644
index 0000000000000000000000000000000000000000..8b96a0d73cc1bedb1d2c806a79c92ad775a726ae
Binary files /dev/null and b/downloaded_logos/PG.png differ
diff --git a/downloaded_logos/Pepsico.png b/downloaded_logos/Pepsico.png
new file mode 100644
index 0000000000000000000000000000000000000000..6f0c5984f84996d000f8ff252f086f349a45ccdd
Binary files /dev/null and b/downloaded_logos/Pepsico.png differ
diff --git a/downloaded_logos/PetroChina.png b/downloaded_logos/PetroChina.png
new file mode 100644
index 0000000000000000000000000000000000000000..af2da411e34170a3bba244184a80803a5586364b
Binary files /dev/null and b/downloaded_logos/PetroChina.png differ
diff --git a/downloaded_logos/Pfizer.png b/downloaded_logos/Pfizer.png
new file mode 100644
index 0000000000000000000000000000000000000000..a88ba281e5cf81f540a3939e998add9d333dbb08
Binary files /dev/null and b/downloaded_logos/Pfizer.png differ
diff --git a/downloaded_logos/Philip Morris.png b/downloaded_logos/Philip Morris.png
new file mode 100644
index 0000000000000000000000000000000000000000..cef71b698afa7cf7d1b1358dffe42811c97eea0c
Binary files /dev/null and b/downloaded_logos/Philip Morris.png differ
diff --git a/downloaded_logos/Pinduoduo.png b/downloaded_logos/Pinduoduo.png
new file mode 100644
index 0000000000000000000000000000000000000000..4079910cc548a0a1695d643be872e60c6ee6dc96
Binary files /dev/null and b/downloaded_logos/Pinduoduo.png differ
diff --git a/downloaded_logos/Prosus.png b/downloaded_logos/Prosus.png
new file mode 100644
index 0000000000000000000000000000000000000000..094a5fe7e5cb1c41bbc45790e869b6c74987420a
Binary files /dev/null and b/downloaded_logos/Prosus.png differ
diff --git a/downloaded_logos/QUALCOMM.png b/downloaded_logos/QUALCOMM.png
new file mode 100644
index 0000000000000000000000000000000000000000..c88c0bc115a7873d50ad45e083b2d24ab464ec3c
Binary files /dev/null and b/downloaded_logos/QUALCOMM.png differ
diff --git a/downloaded_logos/Reliance Industries.png b/downloaded_logos/Reliance Industries.png
new file mode 100644
index 0000000000000000000000000000000000000000..66a134997b04304bf526690a194219ffc13900eb
Binary files /dev/null and b/downloaded_logos/Reliance Industries.png differ
diff --git a/downloaded_logos/Roche.png b/downloaded_logos/Roche.png
new file mode 100644
index 0000000000000000000000000000000000000000..d8547859ba763973225ea734c96daafb8688ded8
Binary files /dev/null and b/downloaded_logos/Roche.png differ
diff --git a/downloaded_logos/Royal Bank Of Canada.png b/downloaded_logos/Royal Bank Of Canada.png
new file mode 100644
index 0000000000000000000000000000000000000000..4671ca8521c54b01098b1a43f17d7c947119303c
Binary files /dev/null and b/downloaded_logos/Royal Bank Of Canada.png differ
diff --git a/downloaded_logos/S&P Global.png b/downloaded_logos/S&P Global.png
new file mode 100644
index 0000000000000000000000000000000000000000..f800799eb596ac37d35a9ffee48a76c9c6e06590
Binary files /dev/null and b/downloaded_logos/S&P Global.png differ
diff --git a/downloaded_logos/SAP.png b/downloaded_logos/SAP.png
new file mode 100644
index 0000000000000000000000000000000000000000..7524cacab22632d4ba2771db2a1519af9d2f1f6a
Binary files /dev/null and b/downloaded_logos/SAP.png differ
diff --git a/downloaded_logos/Samsung.png b/downloaded_logos/Samsung.png
new file mode 100644
index 0000000000000000000000000000000000000000..5aee122114392d661e9de17cbcee1713cf41740c
Binary files /dev/null and b/downloaded_logos/Samsung.png differ
diff --git a/downloaded_logos/Sanofi.png b/downloaded_logos/Sanofi.png
new file mode 100644
index 0000000000000000000000000000000000000000..6d400296bb12eaaf69aeb30faf1b6aabd6ab77d4
Binary files /dev/null and b/downloaded_logos/Sanofi.png differ
diff --git a/downloaded_logos/Saudi Aramco.png b/downloaded_logos/Saudi Aramco.png
new file mode 100644
index 0000000000000000000000000000000000000000..94ac95370339167f54961f598d1dbdc0a297c8d7
Binary files /dev/null and b/downloaded_logos/Saudi Aramco.png differ
diff --git a/downloaded_logos/Shell.png b/downloaded_logos/Shell.png
new file mode 100644
index 0000000000000000000000000000000000000000..1e21cc70736159a48be2cfb52a57e7284bd27eb3
Binary files /dev/null and b/downloaded_logos/Shell.png differ
diff --git a/downloaded_logos/T-Mobile US.png b/downloaded_logos/T-Mobile US.png
new file mode 100644
index 0000000000000000000000000000000000000000..37860aa2d90248981a6abc2fef9c6cdbd22f9784
Binary files /dev/null and b/downloaded_logos/T-Mobile US.png differ
diff --git a/downloaded_logos/TRV.png b/downloaded_logos/TRV.png
new file mode 100644
index 0000000000000000000000000000000000000000..08a9d4bfef56148818c425cb65df464138ad4da4
Binary files /dev/null and b/downloaded_logos/TRV.png differ
diff --git a/downloaded_logos/TSMC.png b/downloaded_logos/TSMC.png
new file mode 100644
index 0000000000000000000000000000000000000000..ed8e5ffc28afc0b92bb2771a6f1e30dd544b0694
Binary files /dev/null and b/downloaded_logos/TSMC.png differ
diff --git a/downloaded_logos/Tata.png b/downloaded_logos/Tata.png
new file mode 100644
index 0000000000000000000000000000000000000000..7471551c6ddc1fc85bc8d6c8e55b03d8abede0b2
Binary files /dev/null and b/downloaded_logos/Tata.png differ
diff --git a/downloaded_logos/Tencent.png b/downloaded_logos/Tencent.png
new file mode 100644
index 0000000000000000000000000000000000000000..fa46149a1e7e82e32a90fc4a37a2b8a2e5c82bf6
Binary files /dev/null and b/downloaded_logos/Tencent.png differ
diff --git a/downloaded_logos/Tesla.png b/downloaded_logos/Tesla.png
new file mode 100644
index 0000000000000000000000000000000000000000..ebb01c12bb755c67798b61b69dba35049ea316e5
Binary files /dev/null and b/downloaded_logos/Tesla.png differ
diff --git a/downloaded_logos/Texas Instruments.png b/downloaded_logos/Texas Instruments.png
new file mode 100644
index 0000000000000000000000000000000000000000..ddde30fb9415c3cfcdfeb5b301257bdfebee6abb
Binary files /dev/null and b/downloaded_logos/Texas Instruments.png differ
diff --git a/downloaded_logos/Thermo Fisher Scientific.png b/downloaded_logos/Thermo Fisher Scientific.png
new file mode 100644
index 0000000000000000000000000000000000000000..3e5ff5407d76b2bfac0120dcd5e2136b8b8c1431
Binary files /dev/null and b/downloaded_logos/Thermo Fisher Scientific.png differ
diff --git a/downloaded_logos/TotalEnergies.png b/downloaded_logos/TotalEnergies.png
new file mode 100644
index 0000000000000000000000000000000000000000..af0e2e8ab28bbb1c5c6887d46630fb01dde8492a
Binary files /dev/null and b/downloaded_logos/TotalEnergies.png differ
diff --git a/downloaded_logos/Toyota.png b/downloaded_logos/Toyota.png
new file mode 100644
index 0000000000000000000000000000000000000000..e305bc8db2e41d3c550f7a7da5d11ca7d9b16687
Binary files /dev/null and b/downloaded_logos/Toyota.png differ
diff --git a/downloaded_logos/UNH.png b/downloaded_logos/UNH.png
new file mode 100644
index 0000000000000000000000000000000000000000..10a4487cccb23f03017b1130eae15f3c36240638
Binary files /dev/null and b/downloaded_logos/UNH.png differ
diff --git a/downloaded_logos/Unilever.png b/downloaded_logos/Unilever.png
new file mode 100644
index 0000000000000000000000000000000000000000..b30dae520231b38f7528087eaa9b9d92bec9e029
Binary files /dev/null and b/downloaded_logos/Unilever.png differ
diff --git a/downloaded_logos/Union Pacific Corporation.png b/downloaded_logos/Union Pacific Corporation.png
new file mode 100644
index 0000000000000000000000000000000000000000..bdffbb16a8091cbf1087a061d0184ea8cd19a031
Binary files /dev/null and b/downloaded_logos/Union Pacific Corporation.png differ
diff --git a/downloaded_logos/United Parcel Service.png b/downloaded_logos/United Parcel Service.png
new file mode 100644
index 0000000000000000000000000000000000000000..b467a6cb92991ed40c129f32e6fbafe4f133032a
Binary files /dev/null and b/downloaded_logos/United Parcel Service.png differ
diff --git a/downloaded_logos/V.png b/downloaded_logos/V.png
new file mode 100644
index 0000000000000000000000000000000000000000..aacbe34c3c1608407f14d627064127c9bdc03833
Binary files /dev/null and b/downloaded_logos/V.png differ
diff --git a/downloaded_logos/VZ.png b/downloaded_logos/VZ.png
new file mode 100644
index 0000000000000000000000000000000000000000..f13dc5be186ab3915816a2b2c0469807472e1e13
Binary files /dev/null and b/downloaded_logos/VZ.png differ
diff --git a/downloaded_logos/WBA.png b/downloaded_logos/WBA.png
new file mode 100644
index 0000000000000000000000000000000000000000..1b3fb5490d5e1aa986763216ea210aed79c4ea56
Binary files /dev/null and b/downloaded_logos/WBA.png differ
diff --git a/downloaded_logos/Wells Fargo.png b/downloaded_logos/Wells Fargo.png
new file mode 100644
index 0000000000000000000000000000000000000000..ff242682d8668c86b8b42e3f38f6aba9ab93bee3
Binary files /dev/null and b/downloaded_logos/Wells Fargo.png differ
diff --git a/images/.DS_Store b/images/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6
Binary files /dev/null and b/images/.DS_Store differ
diff --git a/images/img.png b/images/img.png
new file mode 100644
index 0000000000000000000000000000000000000000..aa53bcac30a8a7a79b595294ba77a75a8dcb6ec2
--- /dev/null
+++ b/images/img.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:23731a0a9b13c427002d1be1f7b84f4f5accbe4dcbc216ac90cb0798174e2372
+size 2799432
diff --git a/model/BITCOIN BiLSTM.ipynb b/model/BITCOIN BiLSTM.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..f8a09e8458413cfaa775c1941b2b7f05ec34a050
--- /dev/null
+++ b/model/BITCOIN BiLSTM.ipynb
@@ -0,0 +1,399 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import torch\n",
+ "import torch.nn as nn\n",
+ "import torch.optim as optim\n",
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt\n",
+ "from sklearn.metrics import mean_squared_error\n",
+ "from sklearn.preprocessing import MinMaxScaler\n",
+ "from datetime import datetime, timedelta"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def rmse(predictions, targets):\n",
+ " return np.sqrt(((predictions - targets) ** 2).mean())\n",
+ "\n",
+ "def mape(predictions, targets):\n",
+ " return np.mean(np.abs((targets - predictions) / targets)) * 100\n",
+ "\n",
+ "def weighted_mape(predictions, targets, weights):\n",
+ " errors = np.abs(targets - predictions)\n",
+ " weighted_errors = errors * weights\n",
+ " weighted_mape = np.sum(weighted_errors) / np.sum(np.abs(targets) * weights) * 100\n",
+ " return weighted_mape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "class BiLSTM(nn.Module):\n",
+ " def __init__(self, input_size, hidden_size, num_layers, output_size):\n",
+ " super(BiLSTM, self).__init__()\n",
+ " self.hidden_size = hidden_size\n",
+ " self.num_layers = num_layers\n",
+ " self.lstm = nn.LSTM(input_size, hidden_size, num_layers, batch_first=True, bidirectional=True)\n",
+ " self.fc = nn.Linear(hidden_size*2, output_size) # Умножаем на 2 из-за двунаправленности\n",
+ "\n",
+ " def forward(self, x):\n",
+ " h0 = torch.zeros(self.num_layers*2, x.size(0), self.hidden_size).to(x.device) # 2 для bidirectional\n",
+ " c0 = torch.zeros(self.num_layers*2, x.size(0), self.hidden_size).to(x.device)\n",
+ "\n",
+ " out, _ = self.lstm(x, (h0, c0))\n",
+ " out = self.fc(out[:, -1, :])\n",
+ " return out"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df = pd.read_csv('BTC-USD_data.csv')\n",
+ "df['Date'] = pd.to_datetime(df['Date'])\n",
+ "df.sort_values('Date', inplace=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "scaler = MinMaxScaler(feature_range=(0, 1))\n",
+ "scaled_data = scaler.fit_transform(df['Adj Close'].values.reshape(-1,1))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def create_dataset(data, time_step=1):\n",
+ " X, Y = [], []\n",
+ " for i in range(len(data)-time_step-1):\n",
+ " a = data[i:(i+time_step), 0]\n",
+ " X.append(a)\n",
+ " Y.append(data[i + time_step, 0])\n",
+ " return np.array(X), np.array(Y)\n",
+ "\n",
+ "time_step = 14"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "X, y = create_dataset(scaled_data, time_step)\n",
+ "\n",
+ "# Разделяем данные на обучающую и тестовую выборки\n",
+ "test_size = 14 # 14 дней для теста\n",
+ "train_size = len(X) - test_size\n",
+ "X_train, X_test = X[:train_size], X[train_size:]\n",
+ "y_train, y_test = y[:train_size], y[train_size:]\n",
+ "\n",
+ "X_train = torch.Tensor(X_train).unsqueeze(-1) # Добавляем размерность\n",
+ "X_test = torch.Tensor(X_test).unsqueeze(-1) # Для совместимости с LSTM\n",
+ "y_train = torch.Tensor(y_train)\n",
+ "y_test = torch.Tensor(y_test)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "input_size = 1 # Входной размер равен 1, так как мы рассматриваем одну фичу - цену\n",
+ "hidden_size = 128\n",
+ "num_layers = 3\n",
+ "output_size = 1\n",
+ "\n",
+ "model = BiLSTM(input_size, hidden_size, num_layers, output_size)\n",
+ "criterion = nn.MSELoss()\n",
+ "optimizer = optim.Adam(model.parameters(), lr=0.001)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Задаем путь для сохранения весов\n",
+ "weights_path = 'model_weights3.pth'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "BiLSTM(\n",
+ " (lstm): LSTM(1, 128, num_layers=3, batch_first=True, bidirectional=True)\n",
+ " (fc): Linear(in_features=256, out_features=1, bias=True)\n",
+ ")"
+ ]
+ },
+ "execution_count": 10,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Загружаем веса модели\n",
+ "model = BiLSTM(input_size, hidden_size, num_layers, output_size)\n",
+ "model.load_state_dict(torch.load(weights_path))\n",
+ "model.eval()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Test Loss: 0.0008\n",
+ "Test RMSE: 1441.8396\n",
+ "Test MAPE: 2.1854%\n",
+ "Test Weighted MAPE: 2.1708%\n"
+ ]
+ }
+ ],
+ "source": [
+ "model.eval()\n",
+ "with torch.no_grad():\n",
+ " test_predictions = model(X_test)\n",
+ " test_loss = criterion(test_predictions, y_test.view(-1, 1))\n",
+ "\n",
+ " test_predictions = scaler.inverse_transform(test_predictions.cpu().numpy())\n",
+ " y_test = scaler.inverse_transform(y_test.view(-1, 1).cpu().numpy())\n",
+ " \n",
+ " test_rmse = rmse(test_predictions, y_test)\n",
+ " test_mape = mape(test_predictions, y_test)\n",
+ " weights = np.array([1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4])\n",
+ " test_weighted_mape = weighted_mape(test_predictions, y_test, weights)\n",
+ "\n",
+ " print(f'Test Loss: {test_loss.item():.4f}')\n",
+ " print(f'Test RMSE: {test_rmse:.4f}')\n",
+ " print(f'Test MAPE: {test_mape:.4f}%')\n",
+ " print(f'Test Weighted MAPE: {test_weighted_mape:.4f}%')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Получите предсказания с использованием вашей модели на тестовых данных или другим способом\n",
+ "# Пример:\n",
+ "with torch.no_grad():\n",
+ " test_predictions = model(X_test)\n",
+ " adjusted_future_predictions = scaler.inverse_transform(test_predictions.cpu().numpy())\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Пример загрузки и предварительной обработки данных\n",
+ "import pandas as pd\n",
+ "\n",
+ "# Загрузка и предобработка данных, например:\n",
+ "df = pd.read_csv('BTC-USD_data.csv')\n",
+ "# Выполните предварительную обработку данных, например, сортировку и масштабирование\n",
+ "\n",
+ "# После предварительной обработки сохраните DataFrame в переменной filtered_df\n",
+ "filtered_df = df\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Прогнозы с учетом трендов\n",
+ "trend_first_day = adjusted_future_predictions[0] - filtered_df['Adj Close'].iloc[-1]\n",
+ "trend_14_days = adjusted_future_predictions[-1] - adjusted_future_predictions[0]\n",
+ "adjusted_future_predictions = [filtered_df['Adj Close'].iloc[-1] + trend_first_day + (trend_14_days / 14) * i for i in range(14)]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Определение переменной end_date\n",
+ "end_date = filtered_df['Date'].max() # Находим максимальную дату в filtered_df\n",
+ "\n",
+ "# Преобразование 'end_date' в объект datetime\n",
+ "end_date = pd.to_datetime(end_date)\n",
+ "\n",
+ "# Вычисляем дату, которая находится на 3 месяца назад\n",
+ "start_date = end_date - pd.DateOffset(months=3)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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YdeuXXjppZeQl5eHGTNmAABSUlLg7u6ut4+7uztycnJQWFiIzMxMqFSqSttcvny5yv58+OGHWLBggaGXKgb+bm5usLKy4h/1RFSBIAgoKCgQpxx5enoauUdERERE1FwYLfhPSkrCf//7X0RGRsLCwqLatoWFhdi0aRPefvvtCq/pbuvWrRvy8/OxaNEiMfhvKHPnzsXs2bPF59r1FSujUqnEwN/Z2blB+0VETZulpSUAIC0tDW5ubpwCQERERET1wmgF/6KiopCWlobg4GDI5XLI5XLs378fy5Ytg1wuh0qlEtv+/PPPKCgowNNPP13jcXv27IkbN26IKfkeHh5ITU3Va5Oamgo7OztYWlrCxcUFMpms0jYeHh5VnkehUMDOzk7vURXtHH8rK6sa+09EpP1dwfogRERERFRfjBb8Dx48GOfOnUN0dLT46N69OyZMmIDo6Gi90a61a9di5MiRcHV1rfG40dHRcHR0hEKhAACEhYVhz549em0iIyMRFhYGADA3N0dISIheG7VajT179oht6gtT/YnIEPxdQURERET1zWhp/7a2tujYsaPeNmtrazg7O+ttv3r1Kg4cOIC//vqrwjG2bt2K1NRU9OrVCxYWFoiMjMQHH3yAV199VWwzdepULF++HK+//jomT56MvXv34qeffsL27dvFNrNnz8bEiRPRvXt3hIaG4vPPP0d+fj4mTZrUAFdORERERERE1LiMXu2/JuvWrYO3tzeGDh1a4TUzMzOsWLECs2bNgiAIaNWqFRYvXoznnntObBMQEIDt27dj1qxZWLp0Kby9vbFmzRqEh4eLbcaNG4f09HS88847SElJQdeuXfH3339XKAJIpqWmZR6JiIiIiIhIQyIIgmDsTjQH1a2vWFRUhPj4eAQEBNRY3NBUHT16FH369MGwYcP0siZq4u/vj5kzZ4pLK9YnBv/UXDWH3xlERERE1PCqi0PvZrQ5/9S0rF27Fi+//DIOHDiAW7duGbs7REREREREVAsM/qlGeXl5+PHHH/Hiiy8iIiICGzZs0Ht969at6NGjBywsLODi4oJHH30UADBgwABcv34ds2bNgkQiEYuYzZ8/H127dtU7xueffw5/f3/x+YkTJ/Dggw/CxcUF9vb26N+/P06dOtWQl0lERERERNRsMfinGv30008ICgpC27Zt8Z///Afr1q2DdrbI9u3b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oyFDhmjEiBG6/vrrXRwlqpvNZtM333yjmJgYrVy5UnXr1tXzzz+vH374gRFBN1JQUKAnnnhCeXl5evbZZyVJ1113nYYNG6bevXtrwIABGjdunGuDhMtxvnsGznc4o7CwUJ988oni4+O1adMmZWVlacyYMVq7dq3jPK8t57vJqC2RAChXUlKS/vzzT0dyePfdd2vNmjUaOnSo7rnnHtWpU4cRBDeQlpamwYMH68iRI2rQoIFCQ0M1adIkhYaG6o8//tALL7ygHj166P3333d1qKhG69ev186dOzVkyBDZ7Xb1799fKSkpevzxxzVgwAD5+vpyPtdyhmFo1apVGj16tAIDAxUcHCx/f389+OCDioiI0KxZs/Tdd9/phhtu0KRJk1wdLlyI8939cb7DGVarVb/88osyMzN10003yWq1KjY2VhaLRR988IE6deoks7l2jLmT/AO1nN1uL/OGYbVadf/99zu+AChZAjBz5kzddtttrgsU5Sr9we7YsWO6/vrrlZaWpp9++klRUVGSitv0ueee0+zZs7Vw4UKFhYW5MmRUo6KiIlksFsfvhYWFGjRokCMhGDRokCwWi2bPnq1Bgwa5MFKUp/T5vG7dOt12223y9vbW7NmzFRkZKUnKy8vTXXfdpcOHD+unn36Sj4+PK0OGC3G+uzfOd1RGfn6+/Pz8HL8XFBSoU6dOji8A4uPjZRiGli5dql69erksTtb8A7VMUlKStm/fLm9vb8XExCgiIsJxm9Vqlbe3t15//XU98MAD+vrrr2W327V79269//776t27tyOhhGsVFBTI19dX0skPEKGhofruu++0cuVKxxpBu90ub29vNW7cWAUFBWU+KML9paWl6cCBAwoICFDDhg1Vr149xxd6VqtVPj4++v777zV48GA9//zzstls+vXXX/XDDz+oa9euaty4satfAlQ2iSs5nzt27KhPPvlESUlJjvdpm80mf39/tW7dWps3b2ZZ1gWG890zcL7DGenp6Tp69KiCg4NVp04dBQQEyG63y2QyyWazydfXV2vXrlXnzp01ZswYvfPOO/roo4+0fPlyLVy4UA0aNHBN4AaAWmPDhg1GVFSUERMTYzRu3NiIiIgwZs2aZRQUFDiOKSoqcvw7duxYw9fX1wgODjbWrl3rqrBxii1bthiXXnqp8euvvxqGYRh2u92w2+0V3ueee+4xbrzxRiMvL68GIkRN2LBhg9GqVSvjoosuMiIjI434+Hhj+fLlZY4pOZ8LCgqMa6+91rBYLEadOnWMNWvWuCJklGPbtm3G8OHDy7RJyflss9kMm8122n1Gjx5t3HbbbY72hefjfPcMnO9wxoYNG4zY2FgjJibGaNGihTFkyBBj69athmEYjj5SWFhoGIZh5OfnGx06dDC8vb0Nf39/l5/vtWPxAQAdOXJEQ4cO1c0336ylS5fqhx9+0C233KJhw4bp1VdfVVZWliTJ29tbNptN3t7eMpvNCggI0LJly9SpUycXvwJI0t69ezVw4EBt3bpVDz30kH777bcK13MePHhQjz32mL788ks9/fTTZaaMwX0lJydrwIABGjx4sH766Se98cYbatmypS6//HJ98cUXjuNKzmcfHx9FRUUpKChIK1asYPeHWmL37t266qqr9NNPP+m5557TunXrJMlRrM1sNpdZlnXs2DE9/vjjmjNnjh5++GF5ezPB8kLA+e4ZON/hjIMHDyoxMVF9+vTRp59+qgcffFBZWVlKSEjQn3/+KbPZLJvNJovFIqvVKl9fX11yySUKCQnR6tWrXX++u/SrBwAOu3fvNlq3bm2sXr26zPWvvvqqYTKZjDfeeMMwjJPfKH7wwQeGyWRixL8Wyc/PN+677z7jhhtuMP7zn/8YN910kxEbG2ssWbLEMAzjtNH///73v8add95pREVFGevWrXNBxKgu69atM9q3b2/s2bPHcV1ubq7xj3/8w/Dx8THmzJljGMbJ83n69Omcz7VMbm6ucdtttxlDhgwxpk+fbvTp08cYMGDAGdto/vz5xqhRo4zIyEja8QLD+e7+ON/hrEWLFhnx8fHG0aNHHdft3LnTuOWWW4yAgABHfyg5319++eVadb6T/AO1xPr16w0fHx9j1apVhmGcnC5kGIYxefJkw9vb+7QvBkp/0EDt8NNPPxnvvvuuYRiGsXz5cmPo0KFlvgAo7dixY8YPP/xg7Nu3r6bDRDVbsmSJYTKZjN27dxuGcfJDgN1uN+69914jODjY2LFjh+P4tLQ0Y9euXS6JFWf2xRdfOM7nb775psKEICkpyZgxY4ajzXHh4Hz3DJzvcMY333xjeHl5GcnJyWWuP3TokDFkyBDjoosuMvbv328YRvF7wNq1a8uc/65GtX+gFimpAvzDDz+oYcOGslqt8vLykiQNHDhQoaGhmjFjhgzDoKKsm/jjjz/0+uuva9u2bXr99dfVq1cvFRQUaOfOnbr44otdHR6qic1m05VXXqlGjRrpzTffVGhoqKPw16FDhzR8+HD16dNHTz75pGM6KWq/WbNm6e2331ZAQICeeeYZdezYUQUFBTp69KgaN2582u4suDBwvnsmzneUJzk5WYMGDVKfPn00ceJEBQUFOW77888/df/992vcuHH629/+5sIoz4weC9Qid911lywWix5++GGlpaXJ29vbUWk2IiJCaWlpslgsJP5uoKTq7yWXXKIHHnhAbdq00QMPPKBFixbp4YcfVp8+fRx1HOB5vLy8NGzYMO3du1evv/66MjMzHR8SmzRposDAQG3btk0mk4kPj27AZrNJkoYMGaK77rpLubm5mjRpklatWqXx48erS5cuKigoYL/2CxTnu2fhfEdFIiIi1KtXLy1YsEDffvut8vPzHbf16NFDNptNf/zxhwsjrBiVKYBa5JprrtGuXbv08ccf6+6779a0adMUHh4uSTKbzapbt64KCwtlsVj4T6eWKvmyxmw2O7YLuuSSSyRJb7zxhhITExUUFKQFCxaU+bYYnqOkD9x9993atWuXZs+erby8PP3f//2fgoODJUn169dXvXr1ZLPZZDabOZ9rqZK29PLycpzPQ4cOlclk0rvvvqtrrrlGNptNCxYscGztiQsL57vn4HzH2ZTM9njhhRd00003acqUKcrLy9Ntt93mKNjcvHnzWr1tJ9P+gVrAZrPJy8tL+fn58vPz0yeffKIZM2Zo8+bNuvbaa5WRkaHFixdr2bJl6tChg6vDxRmUtOOxY8cUGhoq6eSHCUkaMGCAfv/9d/3+++9M+fdgJf2g5EPCs88+q7lz5yo9PV0DBw7UgQMHNGfOHP3555/0g1qspB0zMjIUEhIiqez53KdPH61du1b//e9/1b59e1eGChfifPcMnO9wRkk/KTFmzBht2LBB9evXV79+/bRt2zZ99dVXWrlypdq0aePCSM+MuUdADTv1+7aSN5J9+/YpKipK3377rUaMGKEPP/xQ48aNkyRFR0drxYoVJP61SEXt2L59e3322WeSircIstlsmjx5shYvXqxff/2VD4AeyjCMMv2gQ4cOWrJkiZ588km9+OKL6tevnzZu3ChfX18tX76cflBLndqOl19+uebMmSOp+Hy2Wq165JFH9N///ldLliwhEbiAlCznKsH57p4qakfOd5THMAxHHa59+/apV69e2rhxo95//309+OCDatCggWbNmqWjR4/q999/r7WJv8TIP1BjzjQaLEkHDhxQjx49NHDgQL3xxhvsFVuLOduOb775Zpnb5s+fr6ioKLVt27bGY0bVO3DggBYvXqzjx48rNjZWV155paM/7Nu3T5dccomuu+46TZs2rcz5bBTvssO631rC2XZ86623ypzPX375pdq0aaO4uDgXRo+aUno0+NQib5zv7sPZduR8v7AdPnxYq1atUn5+vlq2bKnOnTs7btu9e7euuOIKXXPNNZo+fXqZ872goEBms1kWi8UVYTuN5B+oAVu2bFFcXJzuvfdevfbaa5LKJo7/93//p7y8PL388suO605NLOF659KO8DwbN27UgAED1KRJEx0/flw7d+7UzJkzNXz4cBmGoTFjxsjHx0dvv/0253MtRjvCGVu2bFHPnj31yCOP6PHHH5dUNnEcM2aMLBYL/aSWox3hjI0bN+r6669XvXr1lJqaKkl688031b9/fxmGoauvvlphYWH69NNP3bZvkPwD1ezw4cO6/vrrZbVatX37dt1555169dVXJZ38j8VqtTLaX8vRjpCkPXv2qHfv3rr55pv19NNPKysrS9OmTdOcOXP0008/KTw83FEoCrUX7QhnHDx4UAMHDlROTo7S0tL08MMP67HHHpN0cqo4/aT2ox3hjF27dqlXr1669dZb9dhjj+nAgQN68803deTIEX300UeqU6eORxTd5lMqUI0Mw9Cvv/6qqKgojRs3Tvv27dPo0aNlMpn0yiuvkDC6CdoRkmS1WvXBBx+oU6dOeuqpp+Tn5yc/Pz/17NlT7733nuM4PkDWbrQjnGG32/XNN9+oefPmuu+++7Ry5Uo9//zzkqTHHnuMhNFN0I5wRmFhoaZPn66ePXvq2WeflcViUd26ddW1a1c9+eSTjjoRnrDVNp9UgWpkMpl0+eWXKygoSD179lTPnj0d00kNw9Crr74qb29vppbVcrQjJMnb21uxsbHy9/eXv7+/4/ru3bvL29tbaWlpjq05UXvRjnCG2WzWtddeq4YNG6p3797q2LGjDMPQ5MmTJRUnjhaL5bS146hdaEc4w2w2KyYmRs2bN5fFYnF8nrvyyiv1zDPPKCMj47Ttmd31Mx/JP1DNmjZtqqZNmzp+HzZsmEwmU5mRY5vNpi+//FJxcXFUkq2laEdIxds1luzlW/Iff8mMj6KiIsdxq1atUteuXV0SI86OdoQzWrZsqZiYGElSvXr1dMcdd8hkMpUZOTYMQz/++KMSEhIUFhbmynBxBrQjzsbb21vXX3+9GjVqVOb6kpF+m83m+L9i27ZtatOmjVsm/hLJP1DlzjZ9zMvLS0OHDpUkjR49WlLxm8pbb72lnTt31kiMODvaEdLp/aAkYZRObgOVnZ0tq9WqgIAASdLEiRP14osvKjU1lQ+RtQTtCGccPnxYhw4d0tGjR9W3b1+ZzWaZzWbHsq6wsDCNGTNGkvT888/LMAwdPXpUU6dO1f79+10cPUrQjnBGST9JS0tTYmKiY8ZXST+x2+3KzMxUbm6ufHx8ZDKZHP8vHD9+XMHBwe75BYABoMps2rTJGDhwoLF58+azHmu1Wo1PPvnEMJlMRr169YxVq1bVQIRwBu0Iw3CuH9jtdiMtLc1o3LixsXfvXuOf//ynERgYaKxcubIGI0VFaEc4Y8OGDUbTpk2Ndu3aGd7e3kanTp2Mt956y8jKyjIMo/i9vsSRI0eMyZMn875fC9GOcEZ5/eTNN9909BObzWYYhmHs2rXLaNSokXH8+HHj6aefNoKCgowVK1a4MvTzRvIPVJE9e/YYLVq0MEwmk9GxY0dj+/btFR5vs9mM22+/3QgODja2bNlSQ1HibGhHGEbl+kFubq7Rvn17o1+/foaPj4+xevXqGowUFaEd4YwjR44Ybdu2NR599FFjz549RmpqqnHLLbcY3bt3N8aNG2dkZmYahnEyITAMwxgxYoQRHBzs1JfEqBm0I5zhbD8xDMNISUkxYmNjjaFDh3rM/wtUtgCqQEFBgT766CPFxcVp5cqV8vHx0eDBg7Vjx44z3mfBggVavHixFi1apLZt29ZgtDgT2hFS5fqBYRg6cuSINm/erN9++02rVq1SfHy8C6LGqWhHOCs5OVl5eXkaPny4oqOj1aBBA82cOVOJiYlatmyZXnzxReXn58tsNsswDH366af6+eef9euvv6pdu3auDh8n0I5whrP9RJKOHDmijRs3as6cOVq5cqVH/L9A8g9UAYvFog4dOmj48OHq0qWLFixYoKCgoAoTx7i4OC1btkxdunSp4WhxJrQjpMr1A5PJpGbNmumll17S2rVrFRsb66KocSraEc4qWc9bst7barXKx8dHTz75pHr16qW5c+dq1apVkor7yiWXXKIVK1aoc+fOrgwbp6Ad4YzK9JMmTZrooYce0po1axQXF+fKsKuMyTAMw9VBAJ7AZrPJy8vL8fvRo0d17bXXKisrS7Nnz1bLli1ltVq1cuVKde7cuUzBKdQetCOkyvWDrl27ytvb2z0L/3g42hHOKCgo0KWXXqqIiAh9//338vLychT9MgxDcXFx6tSpkz766CO33d7rQkA7whmV6Sclx/v6+ro46qrDyD9QRUo+YJZ8n1a/fn3NnTtXQUFBGjRokDZv3qz7779f48ePV05OjitDRQVoR0jO94MHH3xQWVlZfIispWhHnI3dbpevr68+/PBDLV26VHfffbckORIBk8mkgQMHKjU1VZLoI7UU7QhnVKaflPy/4UmJv8RWf0CVKXnTKPkPxTAMhYWF6aefftKAAQMUGxsrX19fLV26VPXr13dxtDgT2hFS5fpBaGioi6PFmdCOOBuz2Sybzab27dvro48+0ogRI5Sfn68pU6aoYcOGkqQ9e/aoXr16p80kQe1BO8IZlekndrvdI/sJyT9wDk6dLlbyH0lmZqbsdrvq1q3ruL1+/fpq06aNduzYoaVLl1JUphahHSHRDzwF7Qhn2O12mc0nJ76WTPfNzs7WZZddpu+//17Dhw/Xtm3bFBoaqvr162v27Nlavny5RyYC7op2hDPoJ6dj2j9QCTabTdLJKaSGYchqtcrLy0t79+5V27ZttXz5csfxhmHojTfe0MyZM7Vw4UI+YNYStCMk+oGnoB3hjLS0NEknR/6k4r7j7e2tvXv3qlWrVlq1apX69OmjzZs369prr1WTJk3UsGFDrVy5Uh06dHBl+DiBdoQz6CdnRsE/wEk7duzQW2+9pf379ysuLk4jRoxQ8+bNJUkHDhxQ586dNXjwYL377rtlppj+9ttvioyMVExMjCvDxwm0IyT6gaegHeGMHTt2qEuXLrr55pv17rvvSjo5M6SknwwaNEjvvfeeY6pvyUySU0cO4Tq0I5xBP6mYZ786oIps3LhRPXv21PHjx2W32zVv3jz95z//kWEYKioq0uzZs3XrrbeW+YApFReUueKKK/iAWUvQjpDoB56CdoSztmzZIn9/f23cuFF33XWXpOJikIWFhfrhhx80YsQIvfPOOzKZTKdN9aUwXO1BO8IZ9JOKseYfOIvdu3drwIABGjt2rJ577jlJ0h133KGUlBSZTCZZLBbdd999stlsF8SbhruiHSHRDzwF7YjK8PX1Vd26dTV48GB99tlnGjt2rN5++235+Pho0KBBioyMPO0+Jf2G/lN70I5wBv2kYiT/QAVsNpsWLlyoPn366KGHHnJMC/L399emTZvUq1cvRUVFaezYserZsyf7xtZStCMk+oGnoB1RWR06dFB8fLzuuOMO+fj4aObMmZowYYIyMjLUrVs3jRkzRhaLxdVh4ixoRziDflIx1vwDZ7Fnzx7l5ubq4osvliQ988wzmjx5siZNmqT8/Hxt375dq1at0i+//OJYa4rah3aERD/wFLQjKiM3N1cJCQn66KOP1KpVK3322WeaOHGijh07pg0bNqhDhw5s/+YGaEc4g35SMUb+gbNo3ry5o4p0QUGBVqxYoVmzZql///6SpN9//1033nijdu7cyYfMWox2hEQ/8BS0I5xVVFQkX19fRUREKDs7WwEBAVq0aJGKiooUExOjGTNmaOrUqRdsIuAuaEc4g35ydiT/wCkOHz6stWvXqrCwUFFRUYqPj5fJZJLNZpOvr69+/PFHmc1mR0XQ0NBQhYeHKzQ01NWhoxTaERL9wFPQjnBG6X4SHR2tzp07O6b3xsfHa+fOnXr33Xe1dOlS/fjjj9q4caNeeOEFeXt76+WXX3Zx9ChBO8IZ9JNzQ/IPlLJx40YNHjxYYWFh2r17t6Kjo/Xoo49qyJAhjm8JS9aOlmwF8sknn8jPz09RUVEuixtl0Y6Q6AeegnaEMyrqJ1JxEbAxY8YoOjpac+bMUefOnRUbGyuz2azExEQXR48StCOcQT85DwYAwzAMY+fOnUZkZKTxyCOPGOnp6cbq1auNUaNGGWPGjDGsVqtht9vLHL9v3z7j4YcfNurVq2ds2LDBRVHjVLQjDIN+4CloRzijon5SVFRkGIZhFBUVGffcc4+xcuVKwzAMR9+x2Wwuixtl0Y5wBv3k/JD8A4ZhFBQUGBMmTDBuuukmo6CgwHH9+++/b9SvX99IS0src/yqVauMe+65x4iLizPWr19f0+HiDGhHGAb9wFPQjnBGZfsJaifaEc6gn5w/pv0Dkux2uyIjI9W2bVv5+Pg4tobq2bOnAgMDVVRUVOb4Ll26KC8vT0888YQaNWrkoqhxKtoREv3AU9COcEZl+0nJfUqWiKB2oB3hDPrJ+SP5ByT5+flp8ODBp1WFrlu3riwWS5k3kzVr1ig+Pl6XXXZZTYeJs6AdIdEPPAXtCGdUpp+sW7dOnTp1IhGohWhHOIN+cv74a+CClZSUpJUrV2r+/Pmy2+2ONxKbzeYoHpWRkaHjx4877jNp0iRdddVVOnr0qGObKbgW7QiJfuApaEc441z7SZ8+fegntQjtCGfQT6qYK9YaAK62YcMGIyoqymjVqpUREhJitGnTxvj888+No0ePGoZxsjDI9u3bjQYNGhjHjh0znn32WcPf399YvXq1K0NHKbQjDIN+4CloRziDfuIZaEc4g35S9Uj+ccFJTU012rRpYzz++OPGrl27jEOHDhnDhg0z2rZtazz11FNGamqq49iUlBSjU6dOxrBhwwwfHx/eSGoR2hGGQT/wFLQjnEE/8Qy0I5xBP6keJP+44GzevNmIjo4+7Y3h0UcfNTp06GC89NJLRk5OjmEYhrFlyxbDZDIZ/v7+xrp161wQLc6EdoRh0A88Be0IZ9BPPAPtCGfQT6oHa/5xwSkqKpLValVubq4kKS8vT5L0wgsvqHfv3nrrrbe0c+dOSVK9evV0zz33aO3aterYsaOrQkY5aEdI9ANPQTvCGfQTz0A7whn0k+phMgyqIODC061bNwUGBmrx4sWSpIKCAvn6+kqSunbtqpiYGP3nP/+RJOXn58vPz89lseLMaEdI9ANPQTvCGfQTz0A7whn0k6rHyD88Xk5OjrKyspSZmem47p133tHmzZs1fPhwSZKvr6+sVqsk6fLLL1dOTo7jWN5IagfaERL9wFPQjnAG/cQz0I5wBv2kZpD8w6Nt2bJFN9xwg3r16qW2bdvqs88+kyS1bdtWU6dO1cKFCzV06FAVFRU59gFNTU1VnTp1ZLVa2R6klqAdIdEPPAXtCGfQTzwD7Qhn0E9qjrerAwCqy5YtW3T55Zdr5MiR6tKli9asWaPRo0erXbt26tSpkwYOHKg6deronnvuUWxsrNq0aSMfHx/NnTtXf/75p7y9OT1qA9oREv3AU9COcAb9xDPQjnAG/aRmseYfHunYsWO65ZZb1KZNG02dOtVxfe/evdWhQwe9/vrrjuuysrL03HPP6dixY/Lz89Pdd9+tdu3auSJsnIJ2hEQ/8BS0I5xBP/EMtCOcQT+peXxVAo9UVFSk9PR0DRkyRJJkt9tlNpvVvHlzHTt2TJJkFG91qaCgIL344otljkPtQDtCoh94CtoRzqCfeAbaEc6gn9Q8/mrwSOHh4fr000912WWXSZJsNpskqUmTJo43C5PJJLPZXKawiMlkqvlgcUa0IyT6gaegHeEM+olnoB3hDPpJzSP5h8dq2bKlpOJvBy0Wi6Tibw9TU1Mdx0yePFkzZsxwVA7lzaT2oR0h0Q88Be0IZ9BPPAPtCGfQT2oW0/7h8cxmswzDcLxRlHyTOGnSJD333HNat24dxULcAO0IiX7gKWhHOIN+4hloRziDflIzGPnHBaGkrqW3t7eaNm2qf//733rppZe0evVqxcXFuTg6OIt2hEQ/8BS0I5xBP/EMtCOcQT+pfnx9ggtCybeHFotF7733noKDg/X777+rc+fOLo4MlUE7QqIfeAraEc6gn3gG2hHOoJ9UP0b+cUFJTEyUJC1btkxdunRxcTQ4V7QjJPqBp6Ad4Qz6iWegHeEM+kn1MRkl8yuAC0ROTo7q1Knj6jBwnmhHSPQDT0E7whn0E89AO8IZ9JPqQfIPAAAAAICHY9o/AAAAAAAejuQfAAAAAAAPR/IPAAAAAICHI/kHAAAAAMDDkfwDAAAAAODhSP4BAAAAAPBwJP8AAAAAAHg4kn8AAFAlbrvtNplMJplMJlksFoWHh+uqq67SBx98ILvd7vTjzJw5U3Xr1q2+QAEAuACR/AMAgCpz9dVXKykpSXv37tW8efPUu3dvPfjgg7ruuutktVpdHR4AABcskn8AAFBlfH19FRERoSZNmqhz5856/PHHNXv2bM2bN08zZ86UJL3yyivq0KGD6tSpo6ZNm+qee+5Rdna2JGnJkiUaPXq0MjIyHLMInn76aUlSQUGB/vGPf6hJkyaqU6eOunfvriVLlrjmhQIA4GZI/gEAQLW68sorFRcXp2+//VaSZDab9frrr2vz5s366KOPtHjxYj3yyCOSpJ49e+q1115TcHCwkpKSlJSUpH/84x+SpPvuu0/Lly/XF198ob/++ktDhw7V1Vdfrf/9738ue20AALgLk2EYhquDAAAA7u+2225Tenq6vv/++9Nuu/nmm/XXX39py5Ytp902a9YsjR07VmlpaZKK1/yPGzdO6enpjmP279+vFi1aaP/+/WrcuLHj+r59+6pbt256/vnnq/z1AADgSbxdHQAAAPB8hmHIZDJJkn755RdNnjxZ27ZtU2ZmpqxWq/Lz85Wbm6uAgIBy779x40bZbDa1atWqzPUFBQWqX79+tccPAIC7I/kHAADVbuvWrWrevLn27t2r6667Tnfffbf+9a9/KTQ0VL///rtuv/12FRYWnjH5z87OlpeXl9asWSMvL68ytwUGBtbESwAAwK2R/AMAgGq1ePFibdy4UePHj9eaNWtkt9v18ssvy2wuLj301VdflTnex8dHNputzHWdOnWSzWZTamqqLrvsshqLHQAAT0HyDwAAqkxBQYGSk5Nls9mUkpKi+fPna/Lkybruuus0cuRIbdq0SUVFRXrjjTc0YMAA/fHHH3r77bfLPEZ0dLSys7O1aNEixcXFKSAgQK1atdLf/vY3jRw5Ui+//LI6deqkI0eOaNGiRYqNjVX//v1d9IoBAHAPVPsHAABVZv78+WrUqJGio6N19dVX69dff9Xrr7+u2bNny8vLS3FxcXrllVf04osvqn379vrss880efLkMo/Rs2dPjR07VsOGDVODBg300ksvSZI+/PBDjRw5Ug899JBat26twYMHa9WqVWrWrJkrXioAAG6Fav8AAAAAAHg4Rv4BAAAAAPBwJP8AAAAAAHg4kn8AAAAAADwcyT8AAAAAAB6O5B8AAAAAAA9H8g8AAAAAgIcj+QcAAAAAwMOR/AMAAAAA4OFI/gEAAAAA8HAk/wAAAAAAeDiSfwAAAAAAPBzJPwAAAAAAHu7/ATF++82PEZjUAAAAAElFTkSuQmCC",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Вычисление даты, которая находится на 3 месяца назад\n",
+ "start_date = end_date - timedelta(days=90)\n",
+ "\n",
+ "# Преобразование строк столбца 'Date' в объекты datetime\n",
+ "df['Date'] = pd.to_datetime(df['Date'])\n",
+ "\n",
+ "# Фильтрация данных за последние 3 месяца\n",
+ "filtered_df = df[(df['Date'] >= start_date) & (df['Date'] <= end_date)]\n",
+ "\n",
+ "# Генерация дат для будущих предсказаний\n",
+ "future_dates = [filtered_df['Date'].values[-1] + np.timedelta64(i+1, 'D') for i in range(14)]\n",
+ "\n",
+ "# Расчет тренда на первый день\n",
+ "trend_first_day = adjusted_future_predictions[0] - filtered_df['Adj Close'].iloc[-1]\n",
+ "\n",
+ "# Расчет тренда за 14 дней (как разницу между первым и последним днем)\n",
+ "trend_14_days = adjusted_future_predictions[-1] - adjusted_future_predictions[0]\n",
+ "\n",
+ "# Прогнозы с учетом трендов\n",
+ "adjusted_future_predictions = [filtered_df['Adj Close'].iloc[-1] + trend_first_day + (trend_14_days / 14) * i for i in range(14)]\n",
+ "\n",
+ "# Создание графика\n",
+ "plt.figure(figsize=(12,6))\n",
+ "plt.plot(filtered_df['Date'], filtered_df['Adj Close'], label='Actual', linewidth=2)\n",
+ "plt.plot(future_dates, adjusted_future_predictions, label='Future Predictions (with Trends)', linestyle='--', linewidth=2)\n",
+ "\n",
+ "plt.title('Bitcoin Price Prediction (Last 3 Months)')\n",
+ "plt.xlabel('Date')\n",
+ "plt.ylabel('Price')\n",
+ "plt.xticks(rotation=45)\n",
+ "plt.legend()\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Прогноз на 14 дней вперед:\n",
+ "День 1 (2024-01-20T00:00:00.000000000): Прогноз: 44059.55\n",
+ "День 2 (2024-01-21T00:00:00.000000000): Прогноз: 43979.44\n",
+ "День 3 (2024-01-22T00:00:00.000000000): Прогноз: 43899.33\n",
+ "День 4 (2024-01-23T00:00:00.000000000): Прогноз: 43819.22\n",
+ "День 5 (2024-01-24T00:00:00.000000000): Прогноз: 43739.11\n",
+ "День 6 (2024-01-25T00:00:00.000000000): Прогноз: 43659.00\n",
+ "День 7 (2024-01-26T00:00:00.000000000): Прогноз: 43578.89\n",
+ "День 8 (2024-01-27T00:00:00.000000000): Прогноз: 43498.77\n",
+ "День 9 (2024-01-28T00:00:00.000000000): Прогноз: 43418.66\n",
+ "День 10 (2024-01-29T00:00:00.000000000): Прогноз: 43338.55\n",
+ "День 11 (2024-01-30T00:00:00.000000000): Прогноз: 43258.44\n",
+ "День 12 (2024-01-31T00:00:00.000000000): Прогноз: 43178.33\n",
+ "День 13 (2024-02-01T00:00:00.000000000): Прогноз: 43098.21\n",
+ "День 14 (2024-02-02T00:00:00.000000000): Прогноз: 43018.11\n",
+ "Тренд на первый день: Рост\n",
+ "Тренд на последний день: Падение\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "C:\\Users\\SoloYolo\\AppData\\Local\\Temp\\ipykernel_7288\\648475885.py:13: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.)\n",
+ " print(f\"День {i+1} ({date}): Прогноз: {float(pred):.2f}\")\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Генерация дат для будущих предсказаний\n",
+ "future_dates = [df['Date'].values[-1] + np.timedelta64(i+1, 'D') for i in range(14)]\n",
+ "\n",
+ "# Расчет тренда на первый день\n",
+ "trend_first_day = adjusted_future_predictions[0] - filtered_df['Adj Close'].iloc[-1]\n",
+ "\n",
+ "# Расчет тренда на последний день\n",
+ "trend_last_day = adjusted_future_predictions[-1] - adjusted_future_predictions[0]\n",
+ "\n",
+ "# Вывод прогнозов\n",
+ "print(\"Прогноз на 14 дней вперед:\")\n",
+ "for i, (date, pred) in enumerate(zip(future_dates, adjusted_future_predictions)):\n",
+ " print(f\"День {i+1} ({date}): Прогноз: {float(pred):.2f}\")\n",
+ "\n",
+ "# Вывод тренда на первый и последний день\n",
+ "trend_first_day_text = \"Рост\" if trend_first_day > 0 else \"Падение\" if trend_first_day < 0 else \"Нет тренда\"\n",
+ "trend_last_day_text = \"Рост\" if trend_last_day > 0 else \"Падение\" if trend_last_day < 0 else \"Нет тренда\"\n",
+ "\n",
+ "print(f\"Тренд на первый день: {trend_first_day_text}\")\n",
+ "print(f\"Тренд на последний день: {trend_last_day_text}\")\n"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "af",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.11.7"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/model/BTC-USD_data.csv b/model/BTC-USD_data.csv
new file mode 100644
index 0000000000000000000000000000000000000000..c81832d5777e63406d2998b46c60bb39809952e3
--- /dev/null
+++ b/model/BTC-USD_data.csv
@@ -0,0 +1,1115 @@
+Date,Open,High,Low,Close,Adj Close,Volume
+2021-01-01,28994.009765625,29600.626953125,28803.5859375,29374.15234375,29374.15234375,40730301359
+2021-01-02,29376.455078125,33155.1171875,29091.181640625,32127.267578125,32127.267578125,67865420765
+2021-01-03,32129.408203125,34608.55859375,32052.31640625,32782.0234375,32782.0234375,78665235202
+2021-01-04,32810.94921875,33440.21875,28722.755859375,31971.9140625,31971.9140625,81163475344
+2021-01-05,31977.041015625,34437.58984375,30221.1875,33992.4296875,33992.4296875,67547324782
+2021-01-06,34013.61328125,36879.69921875,33514.03515625,36824.36328125,36824.36328125,75289433811
+2021-01-07,36833.875,40180.3671875,36491.19140625,39371.04296875,39371.04296875,84762141031
+2021-01-08,39381.765625,41946.73828125,36838.63671875,40797.609375,40797.609375,88107519480
+2021-01-09,40788.640625,41436.3515625,38980.875,40254.546875,40254.546875,61984162837
+2021-01-10,40254.21875,41420.19140625,35984.62890625,38356.44140625,38356.44140625,79980747690
+2021-01-11,38346.53125,38346.53125,30549.599609375,35566.65625,35566.65625,123320567399
+2021-01-12,35516.359375,36568.52734375,32697.9765625,33922.9609375,33922.9609375,74773277909
+2021-01-13,33915.12109375,37599.9609375,32584.66796875,37316.359375,37316.359375,69364315979
+2021-01-14,37325.109375,39966.40625,36868.5625,39187.328125,39187.328125,63615990033
+2021-01-15,39156.70703125,39577.7109375,34659.58984375,36825.3671875,36825.3671875,67760757881
+2021-01-16,36821.6484375,37864.3671875,35633.5546875,36178.140625,36178.140625,57706187875
+2021-01-17,36163.6484375,36722.3515625,34069.3203125,35791.27734375,35791.27734375,52359854336
+2021-01-18,35792.23828125,37299.28515625,34883.84375,36630.07421875,36630.07421875,49511702429
+2021-01-19,36642.234375,37755.890625,36069.8046875,36069.8046875,36069.8046875,57244195486
+2021-01-20,36050.11328125,36378.328125,33570.4765625,35547.75,35547.75,66834573161
+2021-01-21,35549.3984375,35552.6796875,30250.75,30825.69921875,30825.69921875,75643067688
+2021-01-22,30817.625,33811.8515625,28953.373046875,33005.76171875,33005.76171875,77207272511
+2021-01-23,32985.7578125,33360.9765625,31493.16015625,32067.642578125,32067.642578125,48354737975
+2021-01-24,32064.376953125,32944.0078125,31106.685546875,32289.37890625,32289.37890625,48643830599
+2021-01-25,32285.798828125,34802.7421875,32087.787109375,32366.392578125,32366.392578125,59897054838
+2021-01-26,32358.61328125,32794.55078125,31030.265625,32569.849609375,32569.849609375,60255421470
+2021-01-27,32564.029296875,32564.029296875,29367.138671875,30432.546875,30432.546875,62576762015
+2021-01-28,30441.041015625,33858.3125,30023.20703125,33466.09765625,33466.09765625,76517157706
+2021-01-29,34318.671875,38406.26171875,32064.814453125,34316.38671875,34316.38671875,117894572511
+2021-01-30,34295.93359375,34834.70703125,32940.1875,34269.5234375,34269.5234375,65141828798
+2021-01-31,34270.87890625,34288.33203125,32270.17578125,33114.359375,33114.359375,52754542671
+2021-02-01,33114.578125,34638.21484375,32384.228515625,33537.17578125,33537.17578125,61400400660
+2021-02-02,33533.19921875,35896.8828125,33489.21875,35510.2890625,35510.2890625,63088585433
+2021-02-03,35510.8203125,37480.1875,35443.984375,37472.08984375,37472.08984375,61166818159
+2021-02-04,37475.10546875,38592.17578125,36317.5,36926.06640625,36926.06640625,68838074392
+2021-02-05,36931.546875,38225.90625,36658.76171875,38144.30859375,38144.30859375,58598066402
+2021-02-06,38138.38671875,40846.546875,38138.38671875,39266.01171875,39266.01171875,71326033653
+2021-02-07,39250.19140625,39621.8359375,37446.15234375,38903.44140625,38903.44140625,65500641143
+2021-02-08,38886.828125,46203.9296875,38076.32421875,46196.46484375,46196.46484375,101467222687
+2021-02-09,46184.9921875,48003.72265625,45166.9609375,46481.10546875,46481.10546875,91809846886
+2021-02-10,46469.76171875,47145.56640625,43881.15234375,44918.18359375,44918.18359375,87301089896
+2021-02-11,44898.7109375,48463.46875,44187.76171875,47909.33203125,47909.33203125,81388911810
+2021-02-12,47877.03515625,48745.734375,46424.9765625,47504.8515625,47504.8515625,76555041196
+2021-02-13,47491.203125,48047.74609375,46392.28125,47105.515625,47105.515625,70250456155
+2021-02-14,47114.5078125,49487.640625,47114.5078125,48717.2890625,48717.2890625,71248675228
+2021-02-15,48696.53515625,48875.5703125,46347.4765625,47945.05859375,47945.05859375,77069903166
+2021-02-16,47944.45703125,50341.1015625,47201.3046875,49199.87109375,49199.87109375,77049582886
+2021-02-17,49207.27734375,52533.9140625,49072.37890625,52149.0078125,52149.0078125,80820545404
+2021-02-18,52140.97265625,52474.10546875,51015.765625,51679.796875,51679.796875,52054723579
+2021-02-19,51675.98046875,56113.65234375,50937.27734375,55888.1328125,55888.1328125,63495496918
+2021-02-20,55887.3359375,57505.2265625,54626.55859375,56099.51953125,56099.51953125,68145460026
+2021-02-21,56068.56640625,58330.5703125,55672.609375,57539.9453125,57539.9453125,51897585191
+2021-02-22,57532.73828125,57533.390625,48967.56640625,54207.3203125,54207.3203125,92052420332
+2021-02-23,54204.9296875,54204.9296875,45290.58984375,48824.42578125,48824.42578125,106102492824
+2021-02-24,48835.0859375,51290.13671875,47213.5,49705.33203125,49705.33203125,63695521388
+2021-02-25,49709.08203125,51948.96875,47093.8515625,47093.8515625,47093.8515625,54506565949
+2021-02-26,47180.46484375,48370.78515625,44454.84375,46339.76171875,46339.76171875,350967941479
+2021-02-27,46344.7734375,48253.26953125,45269.02734375,46188.453125,46188.453125,45910946382
+2021-02-28,46194.015625,46716.4296875,43241.6171875,45137.76953125,45137.76953125,53443887451
+2021-03-01,45159.50390625,49784.015625,45115.09375,49631.2421875,49631.2421875,53891300112
+2021-03-02,49612.10546875,50127.51171875,47228.84375,48378.98828125,48378.98828125,47530897720
+2021-03-03,48415.81640625,52535.13671875,48274.3203125,50538.2421875,50538.2421875,53220811975
+2021-03-04,50522.3046875,51735.08984375,47656.9296875,48561.16796875,48561.16796875,52343816680
+2021-03-05,48527.03125,49396.4296875,46542.515625,48927.3046875,48927.3046875,48625928883
+2021-03-06,48899.23046875,49147.21875,47257.52734375,48912.3828125,48912.3828125,34363564661
+2021-03-07,48918.6796875,51384.3671875,48918.6796875,51206.69140625,51206.69140625,43137459378
+2021-03-08,51174.1171875,52314.0703125,49506.0546875,52246.5234375,52246.5234375,48597428048
+2021-03-09,52272.96875,54824.1171875,51981.83203125,54824.1171875,54824.1171875,50912227385
+2021-03-10,54824.01171875,57258.25390625,53290.890625,56008.55078125,56008.55078125,57295577614
+2021-03-11,55963.1796875,58091.0625,54484.59375,57805.12109375,57805.12109375,56772343595
+2021-03-12,57821.21875,57996.62109375,55376.6484375,57332.08984375,57332.08984375,55689944702
+2021-03-13,57343.37109375,61683.86328125,56217.97265625,61243.0859375,61243.0859375,60669829814
+2021-03-14,61221.1328125,61597.91796875,59302.31640625,59302.31640625,59302.31640625,43901225564
+2021-03-15,59267.4296875,60540.9921875,55393.1640625,55907.19921875,55907.19921875,66419369890
+2021-03-16,55840.78515625,56833.1796875,53555.02734375,56804.90234375,56804.90234375,59749798599
+2021-03-17,56825.828125,58969.81640625,54528.62890625,58870.89453125,58870.89453125,60258313191
+2021-03-18,58893.078125,60116.25,54253.578125,57858.921875,57858.921875,55746041000
+2021-03-19,57850.44140625,59498.375,56643.703125,58346.65234375,58346.65234375,49063873786
+2021-03-20,58332.26171875,60031.28515625,58213.296875,58313.64453125,58313.64453125,50361731222
+2021-03-21,58309.9140625,58767.8984375,56005.6171875,57523.421875,57523.421875,51943414539
+2021-03-22,57517.890625,58471.48046875,54288.15625,54529.14453125,54529.14453125,56521454974
+2021-03-23,54511.66015625,55985.44140625,53470.6953125,54738.9453125,54738.9453125,56435023914
+2021-03-24,54710.48828125,57262.3828125,52514.33203125,52774.265625,52774.265625,70567223787
+2021-03-25,52726.74609375,53392.38671875,50856.5703125,51704.16015625,51704.16015625,67999812841
+2021-03-26,51683.01171875,55137.3125,51579.85546875,55137.3125,55137.3125,56652197978
+2021-03-27,55137.56640625,56568.21484375,54242.91015625,55973.51171875,55973.51171875,47266542233
+2021-03-28,55974.94140625,56610.3125,55071.11328125,55950.74609375,55950.74609375,47686580918
+2021-03-29,55947.8984375,58342.09765625,55139.33984375,57750.19921875,57750.19921875,57625587027
+2021-03-30,57750.1328125,59447.22265625,57251.55078125,58917.69140625,58917.69140625,54414116432
+2021-03-31,58930.27734375,59930.02734375,57726.41796875,58918.83203125,58918.83203125,65520826225
+2021-04-01,58926.5625,59586.0703125,58505.27734375,59095.80859375,59095.80859375,61669163792
+2021-04-02,59098.87890625,60267.1875,58869.28125,59384.3125,59384.3125,58727860620
+2021-04-03,59397.41015625,60110.26953125,57603.890625,57603.890625,57603.890625,59641344484
+2021-04-04,57604.83984375,58913.74609375,57168.67578125,58758.5546875,58758.5546875,50749662970
+2021-04-05,58760.875,59891.296875,57694.82421875,59057.87890625,59057.87890625,60706272115
+2021-04-06,59171.93359375,59479.578125,57646.80859375,58192.359375,58192.359375,66058027988
+2021-04-07,58186.5078125,58731.14453125,55604.0234375,56048.9375,56048.9375,75645303584
+2021-04-08,56099.9140625,58338.73828125,55879.0859375,58323.953125,58323.953125,53053855641
+2021-04-09,58326.5625,58937.046875,57807.86328125,58245.00390625,58245.00390625,46655208546
+2021-04-10,58253.77734375,61276.6640625,58038.70703125,59793.234375,59793.234375,58238470525
+2021-04-11,59846.23046875,60790.5546875,59289.796875,60204.96484375,60204.96484375,46280252580
+2021-04-12,60175.9453125,61253.03515625,59589.875,59893.453125,59893.453125,51828688519
+2021-04-13,59890.01953125,63742.28515625,59869.95703125,63503.45703125,63503.45703125,69983454362
+2021-04-14,63523.75390625,64863.09765625,61554.796875,63109.6953125,63109.6953125,77451779687
+2021-04-15,63075.1953125,63821.671875,62208.96484375,63314.01171875,63314.01171875,60954381579
+2021-04-16,63258.50390625,63594.72265625,60222.53125,61572.7890625,61572.7890625,84293007468
+2021-04-17,61529.921875,62572.17578125,60361.3515625,60683.8203125,60683.8203125,66138759198
+2021-04-18,60701.88671875,61057.45703125,52829.53515625,56216.18359375,56216.18359375,97468872758
+2021-04-19,56191.5859375,57520.0546875,54368.59375,55724.265625,55724.265625,65344865159
+2021-04-20,55681.79296875,57062.1484375,53448.046875,56473.03125,56473.03125,67849323955
+2021-04-21,56471.12890625,56757.97265625,53695.46875,53906.08984375,53906.08984375,54926612466
+2021-04-22,53857.10546875,55410.23046875,50583.8125,51762.2734375,51762.2734375,74798630778
+2021-04-23,51739.80859375,52120.79296875,47714.6640625,51093.65234375,51093.65234375,86668667320
+2021-04-24,51143.2265625,51167.5625,48805.28515625,50050.8671875,50050.8671875,49014494781
+2021-04-25,50052.83203125,50506.01953125,47159.484375,49004.25390625,49004.25390625,46117114240
+2021-04-26,49077.79296875,54288.00390625,48852.796875,54021.75390625,54021.75390625,58284039825
+2021-04-27,54030.3046875,55416.96484375,53319.1875,55033.1171875,55033.1171875,49448222757
+2021-04-28,55036.63671875,56227.20703125,53887.91796875,54824.703125,54824.703125,48000572955
+2021-04-29,54858.08984375,55115.84375,52418.02734375,53555.109375,53555.109375,46088929780
+2021-04-30,53568.6640625,57900.71875,53129.6015625,57750.17578125,57750.17578125,52395931985
+2021-05-01,57714.6640625,58448.33984375,57052.2734375,57828.05078125,57828.05078125,42836427360
+2021-05-02,57825.86328125,57902.59375,56141.90625,56631.078125,56631.078125,38177405335
+2021-05-03,56620.2734375,58973.30859375,56590.87109375,57200.29296875,57200.29296875,51713139031
+2021-05-04,57214.1796875,57214.1796875,53191.42578125,53333.5390625,53333.5390625,68564706967
+2021-05-05,53252.1640625,57911.36328125,52969.0546875,57424.0078125,57424.0078125,69241316747
+2021-05-06,57441.30859375,58363.31640625,55382.5078125,56396.515625,56396.515625,69523285106
+2021-05-07,56413.953125,58606.6328125,55321.84765625,57356.40234375,57356.40234375,68434023376
+2021-05-08,57352.765625,59464.61328125,56975.2109375,58803.77734375,58803.77734375,65382980634
+2021-05-09,58877.390625,59210.8828125,56482.00390625,58232.31640625,58232.31640625,65906690347
+2021-05-10,58250.87109375,59519.35546875,54071.45703125,55859.796875,55859.796875,71776546298
+2021-05-11,55847.2421875,56872.54296875,54608.65234375,56704.57421875,56704.57421875,61308396325
+2021-05-12,56714.53125,57939.36328125,49150.53515625,49150.53515625,49150.53515625,75215403907
+2021-05-13,49735.43359375,51330.84375,46980.01953125,49716.19140625,49716.19140625,96721152926
+2021-05-14,49682.98046875,51438.1171875,48868.578125,49880.53515625,49880.53515625,55737497453
+2021-05-15,49855.49609375,50639.6640625,46664.140625,46760.1875,46760.1875,59161047474
+2021-05-16,46716.63671875,49720.04296875,43963.3515625,46456.05859375,46456.05859375,64047871555
+2021-05-17,46415.8984375,46623.55859375,42207.2890625,43537.51171875,43537.51171875,74903638450
+2021-05-18,43488.05859375,45812.45703125,42367.83203125,42909.40234375,42909.40234375,56187365084
+2021-05-19,42944.9765625,43546.1171875,30681.49609375,37002.44140625,37002.44140625,126358098747
+2021-05-20,36753.66796875,42462.984375,35050.6171875,40782.73828125,40782.73828125,88281943359
+2021-05-21,40596.94921875,42172.171875,33616.453125,37304.69140625,37304.69140625,82051616861
+2021-05-22,37371.03125,38831.0546875,35383.68359375,37536.6328125,37536.6328125,57377273240
+2021-05-23,37531.44921875,38289.21875,31227.33984375,34770.58203125,34770.58203125,78469274361
+2021-05-24,34700.36328125,39835.140625,34551.08203125,38705.98046875,38705.98046875,67359584098
+2021-05-25,38795.78125,39776.3515625,36581.4296875,38402.22265625,38402.22265625,56211915803
+2021-05-26,38392.625,40782.078125,37905.8359375,39294.19921875,39294.19921875,51346735160
+2021-05-27,39316.890625,40379.6171875,37247.90234375,38436.96875,38436.96875,43210968721
+2021-05-28,38507.08203125,38856.96875,34779.0390625,35697.60546875,35697.60546875,55200191952
+2021-05-29,35684.15625,37234.5,33693.9296875,34616.06640625,34616.06640625,45231013335
+2021-05-30,34607.40625,36400.66796875,33520.73828125,35678.12890625,35678.12890625,31646080921
+2021-05-31,35658.59375,37468.25,34241.9453125,37332.85546875,37332.85546875,39009847639
+2021-06-01,37293.79296875,37896.734375,35787.0859375,36684.92578125,36684.92578125,34639423297
+2021-06-02,36699.921875,38231.33984375,35966.30859375,37575.1796875,37575.1796875,33070867190
+2021-06-03,37599.41015625,39478.953125,37243.97265625,39208.765625,39208.765625,35460750427
+2021-06-04,39242.484375,39242.484375,35717.72265625,36894.40625,36894.40625,41831090187
+2021-06-05,36880.15625,37917.71484375,34900.4140625,35551.95703125,35551.95703125,35959473399
+2021-06-06,35538.609375,36436.421875,35304.578125,35862.37890625,35862.37890625,28913440585
+2021-06-07,35835.265625,36790.5703125,33480.640625,33560.70703125,33560.70703125,33683936663
+2021-06-08,33589.51953125,34017.38671875,31114.443359375,33472.6328125,33472.6328125,49902050442
+2021-06-09,33416.9765625,37537.37109375,32475.865234375,37345.12109375,37345.12109375,53972919008
+2021-06-10,37389.515625,38334.32421875,35847.59375,36702.59765625,36702.59765625,43576032854
+2021-06-11,36697.03125,37608.6953125,36044.44921875,37334.3984375,37334.3984375,38699736985
+2021-06-12,37340.14453125,37408.92578125,34728.19140625,35552.515625,35552.515625,37924228550
+2021-06-13,35555.7890625,39322.78125,34864.109375,39097.859375,39097.859375,40669112838
+2021-06-14,39016.96875,40978.36328125,38757.28515625,40218.4765625,40218.4765625,43148914673
+2021-06-15,40427.16796875,41295.26953125,39609.46875,40406.26953125,40406.26953125,46420149185
+2021-06-16,40168.69140625,40516.77734375,38176.03515625,38347.0625,38347.0625,39211635100
+2021-06-17,38341.421875,39513.671875,37439.67578125,38053.50390625,38053.50390625,37096670047
+2021-06-18,38099.4765625,38187.26171875,35255.85546875,35787.24609375,35787.24609375,36200887275
+2021-06-19,35854.52734375,36457.796875,34933.0625,35615.87109375,35615.87109375,31207279719
+2021-06-20,35563.140625,36059.484375,33432.07421875,35698.296875,35698.296875,36664034054
+2021-06-21,35641.14453125,35721.640625,31295.935546875,31676.693359375,31676.693359375,52809038594
+2021-06-22,31622.376953125,33292.453125,28893.62109375,32505.66015625,32505.66015625,58964353058
+2021-06-23,32515.71484375,34753.41015625,31772.6328125,33723.02734375,33723.02734375,46317108925
+2021-06-24,33682.80078125,35228.8515625,32385.21484375,34662.4375,34662.4375,33123368116
+2021-06-25,34659.10546875,35487.24609375,31350.884765625,31637.779296875,31637.779296875,40230904226
+2021-06-26,31594.6640625,32637.587890625,30184.501953125,32186.27734375,32186.27734375,38585385521
+2021-06-27,32287.5234375,34656.12890625,32071.7578125,34649.64453125,34649.64453125,35511640894
+2021-06-28,34679.12109375,35219.890625,33902.07421875,34434.3359375,34434.3359375,33892523752
+2021-06-29,34475.55859375,36542.109375,34252.484375,35867.77734375,35867.77734375,37901460044
+2021-06-30,35908.38671875,36074.7578125,34086.15234375,35040.8359375,35040.8359375,34059036099
+2021-07-01,35035.984375,35035.984375,32883.78125,33572.1171875,33572.1171875,37838957079
+2021-07-02,33549.6015625,33939.58984375,32770.6796875,33897.046875,33897.046875,38728974942
+2021-07-03,33854.421875,34909.26171875,33402.6953125,34668.546875,34668.546875,24383958643
+2021-07-04,34665.56640625,35937.56640625,34396.4765625,35287.78125,35287.78125,24924307911
+2021-07-05,35284.34375,35284.34375,33213.66015625,33746.00390625,33746.00390625,26721554282
+2021-07-06,33723.5078125,35038.53515625,33599.91796875,34235.1953125,34235.1953125,26501259870
+2021-07-07,34225.6796875,34997.6640625,33839.2890625,33855.328125,33855.328125,24796027477
+2021-07-08,33889.60546875,33907.90625,32133.18359375,32877.37109375,32877.37109375,29910396946
+2021-07-09,32861.671875,34042.29296875,32318.880859375,33798.01171875,33798.01171875,27436021028
+2021-07-10,33811.2421875,34209.0703125,33116.01171875,33520.51953125,33520.51953125,22971873468
+2021-07-11,33509.078125,34584.703125,33346.73828125,34240.1875,34240.1875,20108729370
+2021-07-12,34254.015625,34592.15625,32697.30859375,33155.84765625,33155.84765625,24321499537
+2021-07-13,33125.46875,33327.1015625,32261.419921875,32702.025390625,32702.025390625,19120856669
+2021-07-14,32723.845703125,33061.3984375,31639.125,32822.34765625,32822.34765625,21376531210
+2021-07-15,32827.875,33159.640625,31175.708984375,31780.73046875,31780.73046875,21300524237
+2021-07-16,31841.55078125,32218.40625,31100.673828125,31421.5390625,31421.5390625,23699476918
+2021-07-17,31397.30859375,31935.9453125,31223.990234375,31533.068359375,31533.068359375,18895018942
+2021-07-18,31533.884765625,32398.99609375,31215.4921875,31796.810546875,31796.810546875,18787986667
+2021-07-19,31800.01171875,31885.859375,30563.734375,30817.83203125,30817.83203125,20434789545
+2021-07-20,30838.28515625,31006.1875,29360.955078125,29807.34765625,29807.34765625,23148267245
+2021-07-21,29796.28515625,32752.326171875,29526.18359375,32110.693359375,32110.693359375,28203024559
+2021-07-22,32138.873046875,32576.400390625,31745.298828125,32313.10546875,32313.10546875,19555230518
+2021-07-23,32305.958984375,33581.55078125,32057.892578125,33581.55078125,33581.55078125,22552046192
+2021-07-24,33593.73046875,34490.390625,33424.859375,34292.4453125,34292.4453125,21664706865
+2021-07-25,34290.29296875,35364.92578125,33881.8359375,35350.1875,35350.1875,20856685287
+2021-07-26,35384.03125,40499.67578125,35287.3125,37337.53515625,37337.53515625,51022126212
+2021-07-27,37276.03515625,39406.94140625,36441.7265625,39406.94140625,39406.94140625,35097370560
+2021-07-28,39503.1875,40816.0703125,38862.4375,39995.90625,39995.90625,38702404695
+2021-07-29,39995.453125,40593.0703125,39352.05859375,40008.421875,40008.421875,27167146027
+2021-07-30,40027.484375,42235.546875,38397.35546875,42235.546875,42235.546875,33072782960
+2021-07-31,42196.3046875,42231.44921875,41110.83203125,41626.1953125,41626.1953125,25802845343
+2021-08-01,41460.84375,42541.6796875,39540.94140625,39974.89453125,39974.89453125,26688438115
+2021-08-02,39907.26171875,40419.1796875,38746.34765625,39201.9453125,39201.9453125,25595265436
+2021-08-03,39178.40234375,39750.03125,37782.05078125,38152.98046875,38152.98046875,26189830450
+2021-08-04,38213.33203125,39952.296875,37589.1640625,39747.50390625,39747.50390625,25372562724
+2021-08-05,39744.515625,41341.93359375,37458.00390625,40869.5546875,40869.5546875,35185031017
+2021-08-06,40865.8671875,43271.66015625,39932.1796875,42816.5,42816.5,38226483046
+2021-08-07,42832.796875,44689.859375,42618.56640625,44555.80078125,44555.80078125,40030862141
+2021-08-08,44574.4375,45282.3515625,43331.91015625,43798.1171875,43798.1171875,36302664750
+2021-08-09,43791.92578125,46456.83203125,42848.6875,46365.40234375,46365.40234375,38734079049
+2021-08-10,46280.84765625,46637.98828125,44705.5546875,45585.03125,45585.03125,33546019517
+2021-08-11,45599.703125,46735.6328125,45351.7109375,45593.63671875,45593.63671875,34319709073
+2021-08-12,45576.87890625,46228.91015625,43861.4453125,44428.2890625,44428.2890625,33723620826
+2021-08-13,44439.69140625,47831.9765625,44282.41796875,47793.3203125,47793.3203125,31744259539
+2021-08-14,47810.6875,48098.68359375,46177.6328125,47096.9453125,47096.9453125,31211354442
+2021-08-15,47096.66796875,47357.10546875,45579.58984375,47047.00390625,47047.00390625,30988958446
+2021-08-16,47019.9609375,47998.09765625,45700.3203125,46004.484375,46004.484375,32776876610
+2021-08-17,45936.45703125,47139.5703125,44512.41796875,44695.359375,44695.359375,33451362600
+2021-08-18,44686.75,45952.0625,44364.02734375,44801.1875,44801.1875,32194123075
+2021-08-19,44741.8828125,46970.76171875,43998.31640625,46717.578125,46717.578125,37204312299
+2021-08-20,46723.12109375,49342.15234375,46650.70703125,49339.17578125,49339.17578125,34706867452
+2021-08-21,49327.07421875,49717.01953125,48312.19921875,48905.4921875,48905.4921875,40585205312
+2021-08-22,48869.10546875,49471.609375,48199.94140625,49321.65234375,49321.65234375,25370975378
+2021-08-23,49291.67578125,50482.078125,49074.60546875,49546.1484375,49546.1484375,34305053719
+2021-08-24,49562.34765625,49878.76953125,47687.1171875,47706.1171875,47706.1171875,35361168834
+2021-08-25,47727.2578125,49202.87890625,47163.61328125,48960.7890625,48960.7890625,32646349931
+2021-08-26,49002.640625,49347.58203125,46405.78125,46942.21875,46942.21875,32666549568
+2021-08-27,46894.5546875,49112.78515625,46394.28125,49058.66796875,49058.66796875,34511076995
+2021-08-28,49072.5859375,49283.50390625,48499.23828125,48902.40234375,48902.40234375,28568103401
+2021-08-29,48911.25,49644.11328125,47925.85546875,48829.83203125,48829.83203125,25889650240
+2021-08-30,48834.8515625,48925.60546875,46950.2734375,47054.984375,47054.984375,31847007016
+2021-08-31,47024.33984375,48189.55078125,46750.09375,47166.6875,47166.6875,34730363427
+2021-09-01,47099.7734375,49111.08984375,46562.4375,48847.02734375,48847.02734375,39139399125
+2021-09-02,48807.84765625,50343.421875,48652.3203125,49327.72265625,49327.72265625,39508070319
+2021-09-03,49288.25,50982.2734375,48386.0859375,50025.375,50025.375,43206179619
+2021-09-04,50009.32421875,50545.58203125,49548.78125,49944.625,49944.625,37471327794
+2021-09-05,49937.859375,51868.6796875,49538.59765625,51753.41015625,51753.41015625,30322676319
+2021-09-06,51769.00390625,52700.94140625,51053.6796875,52633.53515625,52633.53515625,38884105426
+2021-09-07,52660.48046875,52853.765625,43285.20703125,46811.12890625,46811.12890625,65210059683
+2021-09-08,46827.76171875,47334.0546875,44561.39453125,46091.390625,46091.390625,49007762488
+2021-09-09,45774.7421875,47261.94921875,45669.73828125,46391.421875,46391.421875,38672657013
+2021-09-10,46396.6640625,47031.7421875,44344.484375,44883.91015625,44883.91015625,39154666597
+2021-09-11,44869.83984375,45969.29296875,44818.265625,45201.45703125,45201.45703125,34499835245
+2021-09-12,45206.62890625,46364.87890625,44790.4609375,46063.26953125,46063.26953125,27881980161
+2021-09-13,46057.21484375,46598.6796875,43591.3203125,44963.07421875,44963.07421875,40969943253
+2021-09-14,44960.05078125,47218.125,44752.33203125,47092.4921875,47092.4921875,38652152880
+2021-09-15,47098.0,48450.46875,46773.328125,48176.34765625,48176.34765625,30484496466
+2021-09-16,48158.90625,48486.828125,47079.55859375,47783.359375,47783.359375,31764293754
+2021-09-17,47771.00390625,48160.921875,46832.5234375,47267.51953125,47267.51953125,28727713711
+2021-09-18,47273.52734375,48791.78125,47087.28515625,48278.36328125,48278.36328125,28575630451
+2021-09-19,48268.85546875,48328.3671875,46919.8046875,47260.21875,47260.21875,26967722648
+2021-09-20,47261.40625,47328.19921875,42598.9140625,42843.80078125,42843.80078125,43909845642
+2021-09-21,43012.234375,43607.609375,39787.609375,40693.67578125,40693.67578125,48701090088
+2021-09-22,40677.953125,43978.62109375,40625.6328125,43574.5078125,43574.5078125,38139709246
+2021-09-23,43560.296875,44942.17578125,43109.33984375,44895.09765625,44895.09765625,34244064430
+2021-09-24,44894.30078125,45080.4921875,40936.55859375,42839.75,42839.75,42839345714
+2021-09-25,42840.890625,42996.2578125,41759.921875,42716.59375,42716.59375,31604717236
+2021-09-26,42721.62890625,43919.30078125,40848.4609375,43208.5390625,43208.5390625,30661222077
+2021-09-27,43234.18359375,44313.24609375,42190.6328125,42235.73046875,42235.73046875,30980029059
+2021-09-28,42200.8984375,42775.14453125,40931.6640625,41034.54296875,41034.54296875,30214940550
+2021-09-29,41064.984375,42545.2578125,40829.66796875,41564.36328125,41564.36328125,30602359905
+2021-09-30,41551.26953125,44092.6015625,41444.58203125,43790.89453125,43790.89453125,31141681925
+2021-10-01,43816.7421875,48436.01171875,43320.0234375,48116.94140625,48116.94140625,42850641582
+2021-10-02,48137.46875,48282.0625,47465.49609375,47711.48828125,47711.48828125,30614346492
+2021-10-03,47680.02734375,49130.69140625,47157.2890625,48199.953125,48199.953125,26638115879
+2021-10-04,48208.90625,49456.77734375,47045.00390625,49112.90234375,49112.90234375,33383173002
+2021-10-05,49174.9609375,51839.984375,49072.83984375,51514.8125,51514.8125,35873904236
+2021-10-06,51486.6640625,55568.46484375,50488.19140625,55361.44921875,55361.44921875,49034730168
+2021-10-07,55338.625,55338.625,53525.46875,53805.984375,53805.984375,36807860413
+2021-10-08,53802.14453125,55922.98046875,53688.0546875,53967.84765625,53967.84765625,34800873924
+2021-10-09,53929.78125,55397.9453125,53735.14453125,54968.22265625,54968.22265625,32491211414
+2021-10-10,54952.8203125,56401.3046875,54264.2578125,54771.578125,54771.578125,39527792364
+2021-10-11,54734.125,57793.0390625,54519.765625,57484.7890625,57484.7890625,42637331698
+2021-10-12,57526.83203125,57627.87890625,54477.97265625,56041.05859375,56041.05859375,41083758949
+2021-10-13,56038.2578125,57688.66015625,54370.97265625,57401.09765625,57401.09765625,41684252783
+2021-10-14,57372.83203125,58478.734375,56957.07421875,57321.5234375,57321.5234375,36615791366
+2021-10-15,57345.90234375,62757.12890625,56868.14453125,61593.94921875,61593.94921875,51780081801
+2021-10-16,61609.52734375,62274.4765625,60206.12109375,60892.1796875,60892.1796875,34250964237
+2021-10-17,60887.65234375,61645.5234375,59164.46875,61553.6171875,61553.6171875,29032367511
+2021-10-18,61548.8046875,62614.66015625,60012.7578125,62026.078125,62026.078125,38055562075
+2021-10-19,62043.1640625,64434.53515625,61622.93359375,64261.9921875,64261.9921875,40471196346
+2021-10-20,64284.5859375,66930.390625,63610.67578125,65992.8359375,65992.8359375,40788955582
+2021-10-21,66002.234375,66600.546875,62117.41015625,62210.171875,62210.171875,45908121370
+2021-10-22,62237.890625,63715.0234375,60122.796875,60692.265625,60692.265625,38434082775
+2021-10-23,60694.62890625,61743.87890625,59826.5234375,61393.6171875,61393.6171875,26882546034
+2021-10-24,61368.34375,61505.8046875,59643.34375,60930.8359375,60930.8359375,27316183882
+2021-10-25,60893.92578125,63729.32421875,60691.80078125,63039.82421875,63039.82421875,31064911614
+2021-10-26,63032.76171875,63229.02734375,59991.16015625,60363.79296875,60363.79296875,34878965587
+2021-10-27,60352.0,61435.18359375,58208.1875,58482.38671875,58482.38671875,43657076893
+2021-10-28,58470.73046875,62128.6328125,58206.91796875,60622.13671875,60622.13671875,45257083247
+2021-10-29,60624.87109375,62927.609375,60329.96484375,62227.96484375,62227.96484375,36856881767
+2021-10-30,62239.36328125,62330.14453125,60918.38671875,61888.83203125,61888.83203125,32157938616
+2021-10-31,61850.48828125,62406.171875,60074.328125,61318.95703125,61318.95703125,32241199927
+2021-11-01,61320.44921875,62419.00390625,59695.18359375,61004.40625,61004.40625,36150572843
+2021-11-02,60963.25390625,64242.79296875,60673.0546875,63226.40234375,63226.40234375,37746665647
+2021-11-03,63254.3359375,63516.9375,61184.23828125,62970.046875,62970.046875,36124731509
+2021-11-04,62941.8046875,63123.2890625,60799.6640625,61452.23046875,61452.23046875,32615846901
+2021-11-05,61460.078125,62541.46875,60844.609375,61125.67578125,61125.67578125,30605102446
+2021-11-06,61068.875,61590.68359375,60163.78125,61527.48046875,61527.48046875,29094934221
+2021-11-07,61554.921875,63326.98828125,61432.48828125,63326.98828125,63326.98828125,24726754302
+2021-11-08,63344.06640625,67673.7421875,63344.06640625,67566.828125,67566.828125,41125608330
+2021-11-09,67549.734375,68530.3359375,66382.0625,66971.828125,66971.828125,42357991721
+2021-11-10,66953.3359375,68789.625,63208.11328125,64995.23046875,64995.23046875,48730828378
+2021-11-11,64978.890625,65579.015625,64180.48828125,64949.9609375,64949.9609375,35880633236
+2021-11-12,64863.98046875,65460.81640625,62333.9140625,64155.94140625,64155.94140625,36084893887
+2021-11-13,64158.12109375,64915.67578125,63303.734375,64469.52734375,64469.52734375,30474228777
+2021-11-14,64455.37109375,65495.1796875,63647.80859375,65466.83984375,65466.83984375,25122092191
+2021-11-15,65521.2890625,66281.5703125,63548.14453125,63557.87109375,63557.87109375,30558763548
+2021-11-16,63721.1953125,63721.1953125,59016.3359375,60161.24609375,60161.24609375,46844335592
+2021-11-17,60139.62109375,60823.609375,58515.41015625,60368.01171875,60368.01171875,39178392930
+2021-11-18,60360.13671875,60948.5,56550.79296875,56942.13671875,56942.13671875,41388338699
+2021-11-19,56896.12890625,58351.11328125,55705.1796875,58119.578125,58119.578125,38702407772
+2021-11-20,58115.08203125,59859.87890625,57469.7265625,59697.1953125,59697.1953125,30624264863
+2021-11-21,59730.5078125,60004.42578125,58618.9296875,58730.4765625,58730.4765625,26123447605
+2021-11-22,58706.84765625,59266.359375,55679.83984375,56289.2890625,56289.2890625,35036121783
+2021-11-23,56304.5546875,57875.515625,55632.76171875,57569.07421875,57569.07421875,37485803899
+2021-11-24,57565.8515625,57803.06640625,55964.22265625,56280.42578125,56280.42578125,36635566789
+2021-11-25,57165.41796875,59367.96875,57146.68359375,57274.6796875,57274.6796875,34284016248
+2021-11-26,58960.28515625,59183.48046875,53569.765625,53569.765625,53569.765625,41810748221
+2021-11-27,53736.4296875,55329.2578125,53668.35546875,54815.078125,54815.078125,30560857714
+2021-11-28,54813.0234375,57393.84375,53576.734375,57248.45703125,57248.45703125,28116886357
+2021-11-29,57291.90625,58872.87890625,56792.52734375,57806.56640625,57806.56640625,32370840356
+2021-11-30,57830.11328125,59113.40234375,56057.28125,57005.42578125,57005.42578125,36708594618
+2021-12-01,56907.96484375,59041.68359375,56553.08203125,57229.828125,57229.828125,36858195307
+2021-12-02,57217.37109375,57349.234375,55895.1328125,56477.81640625,56477.81640625,32379968686
+2021-12-03,56509.1640625,57482.16796875,52496.5859375,53598.24609375,53598.24609375,39789134215
+2021-12-04,53727.87890625,53904.6796875,42874.6171875,49200.703125,49200.703125,61385677469
+2021-12-05,49201.51953125,49768.1484375,47857.49609375,49368.84765625,49368.84765625,37198201161
+2021-12-06,49413.48046875,50929.51953125,47281.03515625,50582.625,50582.625,37707308001
+2021-12-07,50581.828125,51934.78125,50175.80859375,50700.0859375,50700.0859375,33676814852
+2021-12-08,50667.6484375,51171.375,48765.98828125,50504.796875,50504.796875,28479699446
+2021-12-09,50450.08203125,50797.1640625,47358.3515625,47672.12109375,47672.12109375,29603577251
+2021-12-10,47642.14453125,50015.25390625,47023.69921875,47243.3046875,47243.3046875,30966005122
+2021-12-11,47264.6328125,49458.2109375,46942.34765625,49362.5078125,49362.5078125,25775869261
+2021-12-12,49354.85546875,50724.8671875,48725.8515625,50098.3359375,50098.3359375,21939223599
+2021-12-13,50114.7421875,50205.0,45894.84765625,46737.48046875,46737.48046875,32166727776
+2021-12-14,46709.82421875,48431.3984375,46424.49609375,46612.6328125,46612.6328125,34638619079
+2021-12-15,48379.75390625,49473.95703125,46671.96484375,48896.72265625,48896.72265625,36541828520
+2021-12-16,48900.46484375,49425.57421875,47529.87890625,47665.42578125,47665.42578125,27268150947
+2021-12-17,47653.73046875,48004.89453125,45618.21484375,46202.14453125,46202.14453125,32902725329
+2021-12-18,46219.25390625,47313.828125,45598.44140625,46848.77734375,46848.77734375,26098292690
+2021-12-19,46853.8671875,48089.6640625,46502.953125,46707.015625,46707.015625,25154053861
+2021-12-20,46707.0625,47401.71875,45579.80859375,46880.27734375,46880.27734375,30961902129
+2021-12-21,46886.078125,49300.91796875,46698.7734375,48936.61328125,48936.61328125,27055803928
+2021-12-22,48937.09765625,49544.796875,48450.94140625,48628.51171875,48628.51171875,24447979559
+2021-12-23,48626.34375,51332.33984375,48065.8359375,50784.5390625,50784.5390625,28223878108
+2021-12-24,50806.05078125,51814.02734375,50514.49609375,50822.1953125,50822.1953125,24367912228
+2021-12-25,50854.91796875,51176.59765625,50236.70703125,50429.859375,50429.859375,19030650914
+2021-12-26,50428.69140625,51196.37890625,49623.10546875,50809.515625,50809.515625,20964372926
+2021-12-27,50802.609375,51956.328125,50499.46875,50640.41796875,50640.41796875,24324345758
+2021-12-28,50679.859375,50679.859375,47414.2109375,47588.85546875,47588.85546875,33430376883
+2021-12-29,47623.87109375,48119.7421875,46201.49609375,46444.7109375,46444.7109375,30049226299
+2021-12-30,46490.60546875,47879.96484375,46060.3125,47178.125,47178.125,26686491018
+2021-12-31,47169.37109375,48472.52734375,45819.953125,46306.4453125,46306.4453125,36974172400
+2022-01-01,46311.74609375,47827.3125,46288.484375,47686.8125,47686.8125,24582667004
+2022-01-02,47680.92578125,47881.40625,46856.9375,47345.21875,47345.21875,27951569547
+2022-01-03,47343.54296875,47510.7265625,45835.96484375,46458.1171875,46458.1171875,33071628362
+2022-01-04,46458.8515625,47406.546875,45752.46484375,45897.57421875,45897.57421875,42494677905
+2022-01-05,45899.359375,46929.046875,42798.22265625,43569.00390625,43569.00390625,36851084859
+2022-01-06,43565.51171875,43748.71875,42645.5390625,43160.9296875,43160.9296875,30208048289
+2022-01-07,43153.5703125,43153.5703125,41077.4453125,41557.90234375,41557.90234375,84196607520
+2022-01-08,41561.46484375,42228.94140625,40672.27734375,41733.94140625,41733.94140625,28066355845
+2022-01-09,41734.7265625,42663.94921875,41338.16015625,41911.6015625,41911.6015625,21294384372
+2022-01-10,41910.23046875,42199.484375,39796.5703125,41821.26171875,41821.26171875,32104232331
+2022-01-11,41819.5078125,43001.15625,41407.75390625,42735.85546875,42735.85546875,26327648900
+2022-01-12,42742.1796875,44135.3671875,42528.98828125,43949.1015625,43949.1015625,33499938689
+2022-01-13,43946.7421875,44278.421875,42447.04296875,42591.5703125,42591.5703125,47691135082
+2022-01-14,42598.87109375,43346.6875,41982.6171875,43099.69921875,43099.69921875,23577403399
+2022-01-15,43101.8984375,43724.671875,42669.03515625,43177.3984375,43177.3984375,18371348298
+2022-01-16,43172.0390625,43436.80859375,42691.0234375,43113.87890625,43113.87890625,17902097845
+2022-01-17,43118.12109375,43179.390625,41680.3203125,42250.55078125,42250.55078125,21690904261
+2022-01-18,42250.07421875,42534.40234375,41392.21484375,42375.6328125,42375.6328125,22417209227
+2022-01-19,42374.0390625,42478.3046875,41242.9140625,41744.328125,41744.328125,23091543258
+2022-01-20,41744.02734375,43413.0234375,40672.82421875,40680.41796875,40680.41796875,20382033940
+2022-01-21,40699.60546875,41060.52734375,35791.42578125,36457.31640625,36457.31640625,43011992031
+2022-01-22,36471.58984375,36688.8125,34349.25,35030.25,35030.25,39714385405
+2022-01-23,35047.359375,36433.3125,34784.96875,36276.8046875,36276.8046875,26017975951
+2022-01-24,36275.734375,37247.51953125,33184.05859375,36654.328125,36654.328125,41856658597
+2022-01-25,36654.8046875,37444.5703125,35779.4296875,36954.00390625,36954.00390625,26428189594
+2022-01-26,36950.515625,38825.41015625,36374.90625,36852.12109375,36852.12109375,31324598034
+2022-01-27,36841.87890625,37148.32421875,35629.28125,37138.234375,37138.234375,25041426629
+2022-01-28,37128.4453125,37952.87890625,36211.109375,37784.33203125,37784.33203125,22238830523
+2022-01-29,37780.71484375,38576.26171875,37406.47265625,38138.1796875,38138.1796875,17194183075
+2022-01-30,38151.91796875,38266.33984375,37437.7109375,37917.6015625,37917.6015625,14643548444
+2022-01-31,37920.28125,38647.26171875,36733.57421875,38483.125,38483.125,20734730465
+2022-02-01,38481.765625,39115.1328125,38113.6640625,38743.2734375,38743.2734375,20288500328
+2022-02-02,38743.71484375,38834.6171875,36832.73046875,36952.984375,36952.984375,19155189416
+2022-02-03,36944.8046875,37154.6015625,36375.5390625,37154.6015625,37154.6015625,18591534769
+2022-02-04,37149.265625,41527.78515625,37093.62890625,41500.875,41500.875,29412210792
+2022-02-05,41501.48046875,41847.1640625,41038.09765625,41441.1640625,41441.1640625,19652846215
+2022-02-06,41441.12109375,42500.78515625,41244.90625,42412.43359375,42412.43359375,16142097334
+2022-02-07,42406.78125,44401.86328125,41748.15625,43840.28515625,43840.28515625,28641855926
+2022-02-08,43854.65234375,45293.8671875,42807.8359375,44118.4453125,44118.4453125,33079398868
+2022-02-09,44096.703125,44727.80078125,43232.96875,44338.796875,44338.796875,23245887300
+2022-02-10,44347.80078125,45661.171875,43402.80859375,43565.11328125,43565.11328125,32142048537
+2022-02-11,43571.12890625,43810.83203125,42114.5390625,42407.9375,42407.9375,26954925781
+2022-02-12,42412.30078125,42992.55078125,41852.57421875,42244.46875,42244.46875,18152390304
+2022-02-13,42236.56640625,42693.0546875,41950.94140625,42197.515625,42197.515625,14741589015
+2022-02-14,42157.3984375,42775.77734375,41681.95703125,42586.91796875,42586.91796875,20827783012
+2022-02-15,42586.46484375,44667.21875,42491.03515625,44575.203125,44575.203125,22721659051
+2022-02-16,44578.27734375,44578.27734375,43456.69140625,43961.859375,43961.859375,19792547657
+2022-02-17,43937.0703125,44132.97265625,40249.37109375,40538.01171875,40538.01171875,26246662813
+2022-02-18,40552.1328125,40929.15234375,39637.6171875,40030.9765625,40030.9765625,23310007704
+2022-02-19,40026.0234375,40418.87890625,39713.05859375,40122.15625,40122.15625,13736557863
+2022-02-20,40118.1015625,40119.890625,38112.8125,38431.37890625,38431.37890625,18340576452
+2022-02-21,38423.2109375,39394.4375,36950.4765625,37075.28125,37075.28125,29280402798
+2022-02-22,37068.76953125,38359.85546875,36488.93359375,38286.02734375,38286.02734375,25493150450
+2022-02-23,38285.28125,39122.39453125,37201.81640625,37296.5703125,37296.5703125,21849073843
+2022-02-24,37278.56640625,38968.83984375,34459.21875,38332.609375,38332.609375,46383802093
+2022-02-25,38333.74609375,39630.32421875,38111.34375,39214.21875,39214.21875,26545599159
+2022-02-26,39213.08203125,40005.34765625,38702.53515625,39105.1484375,39105.1484375,17467554129
+2022-02-27,39098.69921875,39778.94140625,37268.9765625,37709.78515625,37709.78515625,23450127612
+2022-02-28,37706.0,43760.45703125,37518.21484375,43193.234375,43193.234375,35690014104
+2022-03-01,43194.50390625,44793.6015625,42952.5859375,44354.63671875,44354.63671875,32479047645
+2022-03-02,44357.6171875,45077.578125,43432.8515625,43924.1171875,43924.1171875,29183112630
+2022-03-03,43925.1953125,44021.578125,41914.75,42451.7890625,42451.7890625,24967782593
+2022-03-04,42458.140625,42479.61328125,38805.84765625,39137.60546875,39137.60546875,28516271427
+2022-03-05,39148.44921875,39566.3359375,38777.03515625,39400.5859375,39400.5859375,16975917450
+2022-03-06,39404.19921875,39640.17578125,38211.6484375,38419.984375,38419.984375,19745229902
+2022-03-07,38429.3046875,39430.2265625,37260.203125,38062.0390625,38062.0390625,28546143503
+2022-03-08,38059.90234375,39304.44140625,37957.38671875,38737.26953125,38737.26953125,25776583476
+2022-03-09,38742.81640625,42465.671875,38706.09375,41982.92578125,41982.92578125,32284121034
+2022-03-10,41974.0703125,42004.7265625,38832.94140625,39437.4609375,39437.4609375,31078064711
+2022-03-11,39439.96875,40081.6796875,38347.43359375,38794.97265625,38794.97265625,26364890465
+2022-03-12,38794.46484375,39308.59765625,38772.53515625,38904.01171875,38904.01171875,14616450657
+2022-03-13,38884.7265625,39209.3515625,37728.14453125,37849.6640625,37849.6640625,17300745310
+2022-03-14,37846.31640625,39742.5,37680.734375,39666.75390625,39666.75390625,24322159070
+2022-03-15,39664.25,39794.62890625,38310.2109375,39338.78515625,39338.78515625,23934000868
+2022-03-16,39335.5703125,41465.453125,39022.34765625,41143.9296875,41143.9296875,39616916192
+2022-03-17,41140.84375,41287.53515625,40662.87109375,40951.37890625,40951.37890625,22009601093
+2022-03-18,40944.83984375,42195.74609375,40302.3984375,41801.15625,41801.15625,34421564942
+2022-03-19,41794.6484375,42316.5546875,41602.66796875,42190.65234375,42190.65234375,19664853187
+2022-03-20,42191.40625,42241.1640625,41004.7578125,41247.82421875,41247.82421875,20127946682
+2022-03-21,41246.1328125,41454.41015625,40668.04296875,41077.99609375,41077.99609375,24615543271
+2022-03-22,41074.10546875,43124.70703125,40948.28125,42358.80859375,42358.80859375,32004652376
+2022-03-23,42364.37890625,42893.5078125,41877.5078125,42892.95703125,42892.95703125,25242943069
+2022-03-24,42886.65234375,44131.85546875,42726.1640625,43960.93359375,43960.93359375,31042992291
+2022-03-25,43964.546875,44999.4921875,43706.28515625,44348.73046875,44348.73046875,30574413034
+2022-03-26,44349.859375,44735.99609375,44166.2734375,44500.828125,44500.828125,16950455995
+2022-03-27,44505.35546875,46827.546875,44437.29296875,46820.4921875,46820.4921875,28160889722
+2022-03-28,46821.8515625,48086.8359375,46690.203125,47128.00390625,47128.00390625,36362175703
+2022-03-29,47100.4375,48022.2890625,47100.4375,47465.73046875,47465.73046875,31397059069
+2022-03-30,47456.8984375,47655.1484375,46746.2109375,47062.6640625,47062.6640625,29333883962
+2022-03-31,47062.1484375,47512.02734375,45390.5390625,45538.67578125,45538.67578125,33327427106
+2022-04-01,45554.1640625,46616.2421875,44403.140625,46281.64453125,46281.64453125,38162644287
+2022-04-02,46285.5,47028.28125,45782.51171875,45868.94921875,45868.94921875,29336594194
+2022-04-03,45859.12890625,47313.4765625,45634.10546875,46453.56640625,46453.56640625,25414397610
+2022-04-04,46445.2734375,46791.08984375,45235.81640625,46622.67578125,46622.67578125,32499785455
+2022-04-05,46624.5078125,47106.140625,45544.80859375,45555.9921875,45555.9921875,29640604055
+2022-04-06,45544.35546875,45544.35546875,43193.953125,43206.73828125,43206.73828125,39393395788
+2022-04-07,43207.5,43860.69921875,42899.90625,43503.84765625,43503.84765625,26101973106
+2022-04-08,43505.13671875,43903.01953125,42183.2890625,42287.6640625,42287.6640625,27215995394
+2022-04-09,42282.078125,42786.81640625,42183.25390625,42782.13671875,42782.13671875,16050772496
+2022-04-10,42781.08984375,43376.37890625,42021.20703125,42207.671875,42207.671875,17654475582
+2022-04-11,42201.0390625,42424.58984375,39373.05859375,39521.90234375,39521.90234375,33949912166
+2022-04-12,39533.71484375,40617.5859375,39388.328125,40127.18359375,40127.18359375,30991500854
+2022-04-13,40123.5703125,41430.0546875,39712.74609375,41166.73046875,41166.73046875,27691105228
+2022-04-14,41160.21875,41451.48046875,39695.74609375,39935.515625,39935.515625,24342001973
+2022-04-15,39939.40234375,40617.72265625,39866.83203125,40553.46484375,40553.46484375,21756855753
+2022-04-16,40552.31640625,40633.6796875,40078.42578125,40424.484375,40424.484375,16833150693
+2022-04-17,40417.77734375,40570.7265625,39620.89453125,39716.953125,39716.953125,19087633042
+2022-04-18,39721.203125,40986.3203125,38696.19140625,40826.21484375,40826.21484375,33705182072
+2022-04-19,40828.17578125,41672.9609375,40618.6328125,41502.75,41502.75,25303206547
+2022-04-20,41501.74609375,42126.30078125,40961.09765625,41374.37890625,41374.37890625,27819532341
+2022-04-21,41371.515625,42893.58203125,40063.828125,40527.36328125,40527.36328125,35372786395
+2022-04-22,40525.86328125,40777.7578125,39315.41796875,39740.3203125,39740.3203125,28011716745
+2022-04-23,39738.72265625,39935.859375,39352.203125,39486.73046875,39486.73046875,16138021249
+2022-04-24,39478.375,39845.92578125,39233.5390625,39469.29296875,39469.29296875,17964398167
+2022-04-25,39472.60546875,40491.75390625,38338.37890625,40458.30859375,40458.30859375,35445730570
+2022-04-26,40448.421875,40713.890625,37884.984375,38117.4609375,38117.4609375,34569088416
+2022-04-27,38120.30078125,39397.91796875,37997.3125,39241.12109375,39241.12109375,30981015184
+2022-04-28,39241.4296875,40269.46484375,38941.421875,39773.828125,39773.828125,33903704907
+2022-04-29,39768.6171875,39887.26953125,38235.53515625,38609.82421875,38609.82421875,30882994649
+2022-04-30,38605.859375,38771.2109375,37697.94140625,37714.875,37714.875,23895713731
+2022-05-01,37713.265625,38627.859375,37585.7890625,38469.09375,38469.09375,27002760110
+2022-05-02,38472.1875,39074.97265625,38156.5625,38529.328125,38529.328125,32922642426
+2022-05-03,38528.109375,38629.99609375,37585.62109375,37750.453125,37750.453125,27326943244
+2022-05-04,37748.01171875,39902.94921875,37732.05859375,39698.37109375,39698.37109375,36754404490
+2022-05-05,39695.74609375,39789.28125,35856.515625,36575.140625,36575.140625,43106256317
+2022-05-06,36573.18359375,36624.359375,35482.1328125,36040.921875,36040.921875,37795577489
+2022-05-07,36042.50390625,36129.92578125,34940.82421875,35501.953125,35501.953125,24375896406
+2022-05-08,35502.94140625,35502.94140625,33878.96484375,34059.265625,34059.265625,36763041910
+2022-05-09,34060.015625,34222.07421875,30296.953125,30296.953125,30296.953125,63355494961
+2022-05-10,30273.654296875,32596.30859375,29944.802734375,31022.90625,31022.90625,59811038817
+2022-05-11,31016.18359375,32013.40234375,28170.4140625,28936.35546875,28936.35546875,70388855818
+2022-05-12,28936.734375,30032.439453125,26350.490234375,29047.751953125,29047.751953125,66989173272
+2022-05-13,29030.91015625,30924.802734375,28782.330078125,29283.103515625,29283.103515625,42841124537
+2022-05-14,29285.642578125,30192.802734375,28702.91015625,30101.265625,30101.265625,28579868620
+2022-05-15,30098.5859375,31308.19140625,29527.740234375,31305.11328125,31305.11328125,25835372065
+2022-05-16,31304.375,31305.341796875,29251.884765625,29862.91796875,29862.91796875,32613897286
+2022-05-17,29862.408203125,30694.490234375,29570.302734375,30425.857421875,30425.857421875,29101473475
+2022-05-18,30424.478515625,30618.716796875,28720.271484375,28720.271484375,28720.271484375,31285268319
+2022-05-19,28720.359375,30430.751953125,28708.955078125,30314.333984375,30314.333984375,33773447707
+2022-05-20,30311.119140625,30664.9765625,28793.60546875,29200.740234375,29200.740234375,30749382605
+2022-05-21,29199.859375,29588.869140625,29027.39453125,29432.2265625,29432.2265625,17274840442
+2022-05-22,29432.47265625,30425.861328125,29275.18359375,30323.72265625,30323.72265625,21631532270
+2022-05-23,30309.396484375,30590.5859375,28975.560546875,29098.91015625,29098.91015625,31483454557
+2022-05-24,29101.125,29774.35546875,28786.58984375,29655.5859375,29655.5859375,26616506245
+2022-05-25,29653.134765625,30157.78515625,29384.94921875,29562.361328125,29562.361328125,27525063551
+2022-05-26,29564.77734375,29834.16015625,28261.90625,29267.224609375,29267.224609375,36774325352
+2022-05-27,29251.140625,29346.943359375,28326.61328125,28627.57421875,28627.57421875,36582005748
+2022-05-28,28622.625,28814.900390625,28554.56640625,28814.900390625,28814.900390625,35519577634
+2022-05-29,29019.8671875,29498.009765625,28841.107421875,29445.95703125,29445.95703125,18093886409
+2022-05-30,29443.365234375,31949.630859375,29303.572265625,31726.390625,31726.390625,39277993274
+2022-05-31,31723.865234375,32249.86328125,31286.154296875,31792.310546875,31792.310546875,33538210634
+2022-06-01,31792.5546875,31957.28515625,29501.587890625,29799.080078125,29799.080078125,41135817341
+2022-06-02,29794.890625,30604.734375,29652.705078125,30467.48828125,30467.48828125,29083562061
+2022-06-03,30467.806640625,30633.03515625,29375.689453125,29704.390625,29704.390625,26175547452
+2022-06-04,29706.138671875,29930.564453125,29500.005859375,29832.9140625,29832.9140625,16588370958
+2022-06-05,29835.1171875,30117.744140625,29574.44921875,29906.662109375,29906.662109375,17264085441
+2022-06-06,29910.283203125,31693.291015625,29894.1875,31370.671875,31370.671875,31947336829
+2022-06-07,31371.7421875,31489.68359375,29311.68359375,31155.478515625,31155.478515625,40770974039
+2022-06-08,31151.48046875,31253.69140625,29944.404296875,30214.35546875,30214.35546875,30242059107
+2022-06-09,30215.279296875,30609.310546875,30020.265625,30111.998046875,30111.998046875,21692004719
+2022-06-10,30110.330078125,30245.80859375,28978.146484375,29083.8046875,29083.8046875,29867476527
+2022-06-11,29084.666015625,29401.916015625,28236.212890625,28360.810546875,28360.810546875,27246574439
+2022-06-12,28373.513671875,28502.685546875,26762.6484375,26762.6484375,26762.6484375,34163220274
+2022-06-13,26737.578125,26795.58984375,22141.2578125,22487.388671875,22487.388671875,68204556440
+2022-06-14,22487.986328125,23018.951171875,20950.818359375,22206.79296875,22206.79296875,50913575242
+2022-06-15,22196.73046875,22642.671875,20178.376953125,22572.83984375,22572.83984375,54912007015
+2022-06-16,22576.3046875,22868.921875,20265.2265625,20381.650390625,20381.650390625,31183975654
+2022-06-17,20385.71875,21243.3125,20326.51953125,20471.482421875,20471.482421875,27132421514
+2022-06-18,20473.42578125,20736.041015625,17708.623046875,19017.642578125,19017.642578125,42009436760
+2022-06-19,19010.90234375,20683.822265625,18067.15234375,20553.271484375,20553.271484375,35329942625
+2022-06-20,20553.37109375,20913.322265625,19689.169921875,20599.537109375,20599.537109375,30818458597
+2022-06-21,20594.294921875,21620.62890625,20415.0625,20710.59765625,20710.59765625,28970212744
+2022-06-22,20719.4140625,20835.75,19848.078125,19987.029296875,19987.029296875,28574793478
+2022-06-23,19986.607421875,21135.76171875,19950.1171875,21085.876953125,21085.876953125,26188097173
+2022-06-24,21084.6484375,21472.91796875,20777.51171875,21231.65625,21231.65625,24957784918
+2022-06-25,21233.609375,21520.9140625,20964.5859375,21502.337890625,21502.337890625,18372538715
+2022-06-26,21496.494140625,21783.724609375,21016.26953125,21027.294921875,21027.294921875,18027170497
+2022-06-27,21028.23828125,21478.08984375,20620.19921875,20735.478515625,20735.478515625,20965695707
+2022-06-28,20731.544921875,21164.423828125,20228.8125,20280.634765625,20280.634765625,21381535161
+2022-06-29,20281.169921875,20364.15625,19937.791015625,20104.0234375,20104.0234375,23552740328
+2022-06-30,20108.3125,20141.16015625,18729.65625,19784.7265625,19784.7265625,26267239923
+2022-07-01,19820.470703125,20632.671875,19073.708984375,19269.3671875,19269.3671875,30767551159
+2022-07-02,19274.8359375,19371.748046875,19027.08203125,19242.255859375,19242.255859375,18100418740
+2022-07-03,19242.095703125,19558.26953125,18966.951171875,19297.076171875,19297.076171875,16390821947
+2022-07-04,19297.314453125,20258.748046875,19063.06640625,20231.26171875,20231.26171875,21594638208
+2022-07-05,20225.353515625,20635.466796875,19341.232421875,20190.115234375,20190.115234375,26715546990
+2022-07-06,20194.619140625,20595.529296875,19823.51171875,20548.24609375,20548.24609375,24598943708
+2022-07-07,20547.814453125,21771.81640625,20296.103515625,21637.587890625,21637.587890625,25814972520
+2022-07-08,21637.154296875,22314.94140625,21257.453125,21731.1171875,21731.1171875,49899834488
+2022-07-09,21716.828125,21877.138671875,21445.95703125,21592.20703125,21592.20703125,29641127858
+2022-07-10,21591.080078125,21591.080078125,20727.123046875,20860.44921875,20860.44921875,28688807249
+2022-07-11,20856.353515625,20856.353515625,19924.5390625,19970.556640625,19970.556640625,24150249025
+2022-07-12,19970.474609375,20043.4453125,19308.53125,19323.9140625,19323.9140625,25810220018
+2022-07-13,19325.97265625,20223.052734375,18999.953125,20212.07421875,20212.07421875,33042430345
+2022-07-14,20211.466796875,20789.89453125,19689.2578125,20569.919921875,20569.919921875,31158743333
+2022-07-15,20573.15625,21138.244140625,20397.0,20836.328125,20836.328125,25905575359
+2022-07-16,20834.103515625,21514.404296875,20518.8984375,21190.31640625,21190.31640625,24302954056
+2022-07-17,21195.041015625,21600.640625,20778.1796875,20779.34375,20779.34375,22927802083
+2022-07-18,20781.912109375,22633.033203125,20781.912109375,22485.689453125,22485.689453125,39974475562
+2022-07-19,22467.849609375,23666.962890625,21683.40625,23389.43359375,23389.43359375,48765202697
+2022-07-20,23393.19140625,24196.818359375,23009.94921875,23231.732421875,23231.732421875,42932549127
+2022-07-21,23233.201171875,23388.322265625,22431.1484375,23164.62890625,23164.62890625,33631012204
+2022-07-22,23163.751953125,23671.927734375,22603.416015625,22714.978515625,22714.978515625,31421555646
+2022-07-23,22706.984375,22977.2109375,22002.91015625,22465.478515625,22465.478515625,24021799169
+2022-07-24,22465.509765625,22974.001953125,22306.83984375,22609.1640625,22609.1640625,23565495303
+2022-07-25,22607.15625,22649.12109375,21361.642578125,21361.701171875,21361.701171875,35574561406
+2022-07-26,21361.12109375,21361.12109375,20776.81640625,21239.75390625,21239.75390625,28624673855
+2022-07-27,21244.169921875,22986.529296875,21070.806640625,22930.548828125,22930.548828125,31758955233
+2022-07-28,22933.640625,24110.470703125,22722.265625,23843.88671875,23843.88671875,40212386158
+2022-07-29,23845.212890625,24294.787109375,23481.173828125,23804.6328125,23804.6328125,35887249746
+2022-07-30,23796.818359375,24572.580078125,23580.5078125,23656.20703125,23656.20703125,28148218301
+2022-07-31,23652.0703125,24121.642578125,23275.703125,23336.896484375,23336.896484375,23553591896
+2022-08-01,23336.71875,23464.787109375,22890.796875,23314.19921875,23314.19921875,25849159141
+2022-08-02,23308.43359375,23415.041015625,22710.083984375,22978.1171875,22978.1171875,28389250717
+2022-08-03,22981.302734375,23578.650390625,22747.8359375,22846.5078125,22846.5078125,26288169966
+2022-08-04,22848.21484375,23198.009765625,22485.701171875,22630.95703125,22630.95703125,25120229769
+2022-08-05,22626.833984375,23422.828125,22612.177734375,23289.314453125,23289.314453125,28881249043
+2022-08-06,23291.423828125,23326.5625,22961.279296875,22961.279296875,22961.279296875,15978259885
+2022-08-07,22963.505859375,23359.009765625,22894.556640625,23175.890625,23175.890625,15886817043
+2022-08-08,23179.52734375,24203.689453125,23176.546875,23809.486328125,23809.486328125,28575544847
+2022-08-09,23811.484375,23898.615234375,22982.0,23164.318359375,23164.318359375,23555719219
+2022-08-10,23162.8984375,24127.4140625,22771.51953125,23947.642578125,23947.642578125,32837431722
+2022-08-11,23948.345703125,24822.62890625,23900.99609375,23957.529296875,23957.529296875,37127036580
+2022-08-12,23957.203125,24412.56640625,23657.265625,24402.818359375,24402.818359375,27265804688
+2022-08-13,24402.1875,24860.05078125,24346.115234375,24424.068359375,24424.068359375,22987346289
+2022-08-14,24429.056640625,24974.9140625,24206.259765625,24319.333984375,24319.333984375,22994133555
+2022-08-15,24318.31640625,25135.58984375,23839.775390625,24136.97265625,24136.97265625,35123501685
+2022-08-16,24126.13671875,24228.416015625,23733.5,23883.291015625,23883.291015625,27753685646
+2022-08-17,23881.31640625,24407.05859375,23243.353515625,23335.998046875,23335.998046875,30931623076
+2022-08-18,23341.0390625,23563.83203125,23177.6015625,23212.73828125,23212.73828125,23747613147
+2022-08-19,23213.3125,23213.3125,20868.84765625,20877.552734375,20877.552734375,40509610260
+2022-08-20,20872.841796875,21350.806640625,20856.73046875,21166.060546875,21166.060546875,27595671000
+2022-08-21,21160.392578125,21668.845703125,21103.197265625,21534.12109375,21534.12109375,23102307723
+2022-08-22,21531.462890625,21531.462890625,20939.18359375,21398.908203125,21398.908203125,31666498758
+2022-08-23,21401.044921875,21646.203125,20955.138671875,21528.087890625,21528.087890625,31878280659
+2022-08-24,21526.455078125,21783.076171875,21195.005859375,21395.01953125,21395.01953125,31962253368
+2022-08-25,21395.458984375,21789.63671875,21362.44140625,21600.904296875,21600.904296875,31028679593
+2022-08-26,21596.0859375,21804.908203125,20199.482421875,20260.01953125,20260.01953125,42326789564
+2022-08-27,20262.48046875,20340.775390625,19890.5234375,20041.73828125,20041.73828125,30116729776
+2022-08-28,20041.03515625,20139.0546875,19616.814453125,19616.814453125,19616.814453125,24366810591
+2022-08-29,19615.154296875,20357.462890625,19600.78515625,20297.994140625,20297.994140625,32637854078
+2022-08-30,20298.611328125,20542.64453125,19617.640625,19796.80859375,19796.80859375,34483360283
+2022-08-31,19799.58203125,20420.990234375,19799.58203125,20049.763671875,20049.763671875,33225232872
+2022-09-01,20050.498046875,20198.390625,19653.96875,20127.140625,20127.140625,30182031010
+2022-09-02,20126.072265625,20401.568359375,19814.765625,19969.771484375,19969.771484375,29123998928
+2022-09-03,19969.71875,20037.009765625,19698.35546875,19832.087890625,19832.087890625,23613051457
+2022-09-04,19832.470703125,19999.689453125,19636.81640625,19986.712890625,19986.712890625,25245861652
+2022-09-05,19988.7890625,20031.16015625,19673.046875,19812.37109375,19812.37109375,28813460025
+2022-09-06,19817.724609375,20155.26953125,18800.171875,18837.66796875,18837.66796875,43403978910
+2022-09-07,18837.68359375,19427.171875,18644.466796875,19290.32421875,19290.32421875,35239757134
+2022-09-08,19289.94140625,19417.3515625,19076.71484375,19329.833984375,19329.833984375,32194477850
+2022-09-09,19328.140625,21439.41015625,19310.962890625,21381.15234375,21381.15234375,48469528171
+2022-09-10,21376.912109375,21760.275390625,21168.72265625,21680.5390625,21680.5390625,36913738894
+2022-09-11,21678.54296875,21770.552734375,21406.9453125,21769.255859375,21769.255859375,34493951963
+2022-09-12,21770.1484375,22439.181640625,21603.896484375,22370.44921875,22370.44921875,50212088965
+2022-09-13,22371.48046875,22673.8203125,20062.669921875,20296.70703125,20296.70703125,51091116622
+2022-09-14,20184.5546875,20467.201171875,19793.396484375,20241.08984375,20241.08984375,37872380889
+2022-09-15,20242.2890625,20318.166015625,19636.734375,19701.2109375,19701.2109375,36389011503
+2022-09-16,19704.005859375,19870.62890625,19400.076171875,19772.583984375,19772.583984375,30123362273
+2022-09-17,19777.033203125,20162.53125,19777.033203125,20127.576171875,20127.576171875,24957448100
+2022-09-18,20127.234375,20127.234375,19387.4921875,19419.505859375,19419.505859375,31254779144
+2022-09-19,19418.572265625,19639.48046875,18390.318359375,19544.12890625,19544.12890625,40177002624
+2022-09-20,19545.591796875,19602.45703125,18813.455078125,18890.7890625,18890.7890625,36791346508
+2022-09-21,18891.283203125,19674.630859375,18290.314453125,18547.400390625,18547.400390625,46363793975
+2022-09-22,18534.650390625,19456.91015625,18415.591796875,19413.55078125,19413.55078125,41135767926
+2022-09-23,19412.400390625,19464.671875,18617.552734375,19297.638671875,19297.638671875,38896078052
+2022-09-24,19296.990234375,19310.197265625,18861.974609375,18937.01171875,18937.01171875,26149643168
+2022-09-25,18936.310546875,19134.732421875,18696.46875,18802.09765625,18802.09765625,23359966112
+2022-09-26,18803.900390625,19274.873046875,18721.28515625,19222.671875,19222.671875,44148798321
+2022-09-27,19221.83984375,20338.455078125,18915.66796875,19110.546875,19110.546875,58571439619
+2022-09-28,19104.62109375,19688.34375,18553.296875,19426.720703125,19426.720703125,53071298734
+2022-09-29,19427.779296875,19589.265625,18924.353515625,19573.05078125,19573.05078125,41037843771
+2022-09-30,19573.431640625,20109.849609375,19265.662109375,19431.7890625,19431.7890625,43975248085
+2022-10-01,19431.10546875,19471.154296875,19231.08203125,19312.095703125,19312.095703125,18719537670
+2022-10-02,19311.849609375,19370.30859375,18970.62109375,19044.107421875,19044.107421875,20765955327
+2022-10-03,19044.068359375,19653.54296875,19025.2265625,19623.580078125,19623.580078125,30484729489
+2022-10-04,19623.583984375,20380.34375,19523.83984375,20336.84375,20336.84375,35887278685
+2022-10-05,20335.900390625,20343.748046875,19801.80078125,20160.716796875,20160.716796875,33223790572
+2022-10-06,20161.0390625,20408.392578125,19900.087890625,19955.443359375,19955.443359375,34711412966
+2022-10-07,19957.55859375,20041.0859375,19395.79296875,19546.849609375,19546.849609375,29227315390
+2022-10-08,19546.328125,19601.6953125,19299.4140625,19416.568359375,19416.568359375,16437423167
+2022-10-09,19417.478515625,19542.5390625,19349.259765625,19446.42578125,19446.42578125,16837262532
+2022-10-10,19446.416015625,19515.466796875,19102.978515625,19141.484375,19141.484375,27425022774
+2022-10-11,19139.0,19241.9609375,18925.603515625,19051.41796875,19051.41796875,28711532910
+2022-10-12,19052.646484375,19203.19921875,19029.7578125,19157.4453125,19157.4453125,24950173846
+2022-10-13,19156.966796875,19453.328125,18319.822265625,19382.904296875,19382.904296875,44219840004
+2022-10-14,19382.533203125,19889.146484375,19115.408203125,19185.65625,19185.65625,38452356727
+2022-10-15,19185.4375,19212.541015625,19019.25,19067.634765625,19067.634765625,16192235532
+2022-10-16,19068.9140625,19389.603515625,19068.9140625,19268.09375,19268.09375,17988916650
+2022-10-17,19268.5625,19635.802734375,19173.333984375,19550.7578125,19550.7578125,27472552998
+2022-10-18,19550.466796875,19666.994140625,19144.76953125,19334.416015625,19334.416015625,30580012344
+2022-10-19,19335.02734375,19348.416015625,19127.6875,19139.53515625,19139.53515625,22425387184
+2022-10-20,19138.0859375,19315.19921875,18971.458984375,19053.740234375,19053.740234375,24493974420
+2022-10-21,19053.203125,19237.384765625,18770.970703125,19172.46875,19172.46875,32459287866
+2022-10-22,19172.380859375,19248.068359375,19132.244140625,19208.189453125,19208.189453125,16104440957
+2022-10-23,19207.734375,19646.65234375,19124.197265625,19567.0078125,19567.0078125,22128794335
+2022-10-24,19567.76953125,19589.125,19206.32421875,19345.572265625,19345.572265625,30202235805
+2022-10-25,19344.96484375,20348.412109375,19261.447265625,20095.857421875,20095.857421875,47761524910
+2022-10-26,20092.236328125,20938.134765625,20076.1171875,20770.44140625,20770.44140625,58895950537
+2022-10-27,20772.802734375,20854.044921875,20255.373046875,20285.8359375,20285.8359375,49625110402
+2022-10-28,20287.95703125,20724.98046875,20086.068359375,20595.3515625,20595.3515625,43994715910
+2022-10-29,20595.103515625,20988.39453125,20566.484375,20818.4765625,20818.4765625,40369840645
+2022-10-30,20817.982421875,20917.005859375,20547.462890625,20635.603515625,20635.603515625,31486345556
+2022-10-31,20633.6953125,20795.3203125,20287.458984375,20495.7734375,20495.7734375,45668466815
+2022-11-01,20494.8984375,20647.2890625,20359.845703125,20485.2734375,20485.2734375,39819303159
+2022-11-02,20482.958984375,20742.810546875,20087.134765625,20159.50390625,20159.50390625,55552169483
+2022-11-03,20162.689453125,20382.095703125,20086.240234375,20209.98828125,20209.98828125,43228750179
+2022-11-04,20208.76953125,21209.560546875,20188.01953125,21147.23046875,21147.23046875,64072727950
+2022-11-05,21144.83203125,21446.88671875,21097.634765625,21282.69140625,21282.69140625,37846047609
+2022-11-06,21285.056640625,21345.376953125,20920.19140625,20926.486328125,20926.486328125,35082693210
+2022-11-07,20924.62109375,21053.24609375,20489.97265625,20602.81640625,20602.81640625,53510852236
+2022-11-08,20600.671875,20664.607421875,17603.544921875,18541.271484375,18541.271484375,118992465607
+2022-11-09,18543.76171875,18590.458984375,15682.6923828125,15880.7802734375,15880.7802734375,102905151606
+2022-11-10,15883.158203125,18054.3125,15834.0185546875,17586.771484375,17586.771484375,83202283721
+2022-11-11,17583.251953125,17650.943359375,16543.482421875,17034.29296875,17034.29296875,55871616488
+2022-11-12,17036.875,17066.67578125,16651.775390625,16799.185546875,16799.185546875,29717699419
+2022-11-13,16799.72265625,16920.765625,16320.634765625,16353.365234375,16353.365234375,27209183682
+2022-11-14,16352.0283203125,17109.32421875,15872.94140625,16618.19921875,16618.19921875,49630243054
+2022-11-15,16617.484375,17051.962890625,16542.55078125,16884.61328125,16884.61328125,36599436183
+2022-11-16,16884.341796875,16960.294921875,16430.111328125,16669.439453125,16669.439453125,33925512989
+2022-11-17,16670.42578125,16726.439453125,16460.68359375,16687.517578125,16687.517578125,27868914022
+2022-11-18,16687.912109375,16947.05859375,16564.611328125,16697.77734375,16697.77734375,26862218609
+2022-11-19,16696.220703125,16797.876953125,16570.41015625,16711.546875,16711.546875,16106223492
+2022-11-20,16712.919921875,16746.779296875,16248.6923828125,16291.83203125,16291.83203125,21313378652
+2022-11-21,16291.2236328125,16291.2236328125,15599.046875,15787.2841796875,15787.2841796875,37429485518
+2022-11-22,15782.30078125,16253.0478515625,15656.6064453125,16189.76953125,16189.76953125,30726828760
+2022-11-23,16195.5888671875,16638.193359375,16170.5029296875,16610.70703125,16610.70703125,32958875628
+2022-11-24,16611.63671875,16771.474609375,16501.767578125,16604.46484375,16604.46484375,26129037414
+2022-11-25,16602.26953125,16603.31640625,16388.404296875,16521.841796875,16521.841796875,18678255976
+2022-11-26,16521.576171875,16666.86328125,16416.228515625,16464.28125,16464.28125,18000008764
+2022-11-27,16463.8828125,16594.40625,16437.025390625,16444.626953125,16444.626953125,20443898509
+2022-11-28,16440.22265625,16482.93359375,16054.5302734375,16217.322265625,16217.322265625,27743025156
+2022-11-29,16217.6396484375,16522.2578125,16139.396484375,16444.982421875,16444.982421875,23581685468
+2022-11-30,16445.4765625,17190.9375,16445.4765625,17168.56640625,17168.56640625,29523576583
+2022-12-01,17168.001953125,17197.498046875,16888.388671875,16967.1328125,16967.1328125,22895392882
+2022-12-02,16968.68359375,17088.66015625,16877.880859375,17088.66015625,17088.66015625,19539705127
+2022-12-03,17090.09765625,17116.041015625,16888.140625,16908.236328125,16908.236328125,16217776704
+2022-12-04,16908.169921875,17157.767578125,16903.439453125,17130.486328125,17130.486328125,16824520830
+2022-12-05,17128.89453125,17378.15234375,16922.431640625,16974.826171875,16974.826171875,22209086834
+2022-12-06,16975.23828125,17091.86328125,16939.921875,17089.50390625,17089.50390625,19889922369
+2022-12-07,17089.505859375,17109.376953125,16750.55859375,16848.126953125,16848.126953125,19675404389
+2022-12-08,16847.349609375,17267.916015625,16788.783203125,17233.474609375,17233.474609375,20496603770
+2022-12-09,17232.1484375,17280.546875,17100.8359375,17133.15234375,17133.15234375,20328426366
+2022-12-10,17134.220703125,17216.826171875,17120.68359375,17128.724609375,17128.724609375,12706781969
+2022-12-11,17129.7109375,17245.634765625,17091.8203125,17104.193359375,17104.193359375,14122486832
+2022-12-12,17102.5,17212.564453125,16899.39453125,17206.4375,17206.4375,19617581341
+2022-12-13,17206.44140625,17930.0859375,17111.763671875,17781.318359375,17781.318359375,26634741631
+2022-12-14,17782.06640625,18318.53125,17739.513671875,17815.650390625,17815.650390625,25534481470
+2022-12-15,17813.64453125,17846.744140625,17322.58984375,17364.865234375,17364.865234375,20964448341
+2022-12-16,17364.546875,17505.525390625,16584.701171875,16647.484375,16647.484375,24031608960
+2022-12-17,16646.982421875,16800.58984375,16614.029296875,16795.091796875,16795.091796875,14463581825
+2022-12-18,16795.609375,16815.38671875,16697.8203125,16757.9765625,16757.9765625,10924354698
+2022-12-19,16759.041015625,16807.52734375,16398.13671875,16439.6796875,16439.6796875,17221074814
+2022-12-20,16441.787109375,17012.984375,16427.8671875,16906.3046875,16906.3046875,22722096615
+2022-12-21,16904.52734375,16916.80078125,16755.912109375,16817.53515625,16817.53515625,14882945045
+2022-12-22,16818.380859375,16866.673828125,16592.408203125,16830.341796875,16830.341796875,16441573050
+2022-12-23,16829.64453125,16905.21875,16794.458984375,16796.953125,16796.953125,15329265213
+2022-12-24,16796.9765625,16864.703125,16793.52734375,16847.755859375,16847.755859375,9744636213
+2022-12-25,16847.505859375,16860.5546875,16755.25390625,16841.986328125,16841.986328125,11656379938
+2022-12-26,16842.25,16920.123046875,16812.369140625,16919.8046875,16919.8046875,11886957804
+2022-12-27,16919.291015625,16959.845703125,16642.072265625,16717.173828125,16717.173828125,15748580239
+2022-12-28,16716.400390625,16768.169921875,16497.556640625,16552.572265625,16552.572265625,17005713920
+2022-12-29,16552.322265625,16651.755859375,16508.68359375,16642.341796875,16642.341796875,14472237479
+2022-12-30,16641.330078125,16643.427734375,16408.474609375,16602.5859375,16602.5859375,15929162910
+2022-12-31,16603.673828125,16628.986328125,16517.51953125,16547.49609375,16547.49609375,11239186456
+2023-01-01,16547.9140625,16630.439453125,16521.234375,16625.080078125,16625.080078125,9244361700
+2023-01-02,16625.509765625,16759.34375,16572.228515625,16688.470703125,16688.470703125,12097775227
+2023-01-03,16688.84765625,16760.447265625,16622.37109375,16679.857421875,16679.857421875,13903079207
+2023-01-04,16680.205078125,16964.5859375,16667.763671875,16863.23828125,16863.23828125,18421743322
+2023-01-05,16863.47265625,16884.021484375,16790.283203125,16836.736328125,16836.736328125,13692758566
+2023-01-06,16836.47265625,16991.994140625,16716.421875,16951.96875,16951.96875,14413662913
+2023-01-07,16952.1171875,16975.017578125,16914.19140625,16955.078125,16955.078125,7714767174
+2023-01-08,16954.146484375,17091.14453125,16924.05078125,17091.14453125,17091.14453125,9768827914
+2023-01-09,17093.9921875,17389.95703125,17093.9921875,17196.5546875,17196.5546875,18624736866
+2023-01-10,17192.94921875,17484.720703125,17162.990234375,17446.29296875,17446.29296875,15808338949
+2023-01-11,17446.359375,17934.896484375,17337.994140625,17934.896484375,17934.896484375,18372283782
+2023-01-12,18117.59375,19030.087890625,17995.203125,18869.587890625,18869.587890625,34971338710
+2023-01-13,18868.90625,19964.322265625,18753.1640625,19909.57421875,19909.57421875,29225029694
+2023-01-14,19910.537109375,21075.142578125,19907.828125,20976.298828125,20976.298828125,38967784639
+2023-01-15,20977.484375,20993.748046875,20606.986328125,20880.798828125,20880.798828125,19298407543
+2023-01-16,20882.224609375,21360.875,20715.74609375,21169.6328125,21169.6328125,26792494050
+2023-01-17,21175.833984375,21438.66015625,20978.533203125,21161.51953125,21161.51953125,24999983362
+2023-01-18,21161.05078125,21564.501953125,20541.544921875,20688.78125,20688.78125,30005625418
+2023-01-19,20686.74609375,21163.01171875,20685.380859375,21086.79296875,21086.79296875,21152848261
+2023-01-20,21085.373046875,22692.357421875,20919.126953125,22676.552734375,22676.552734375,28799154319
+2023-01-21,22677.427734375,23282.34765625,22511.833984375,22777.625,22777.625,32442278429
+2023-01-22,22777.986328125,23056.73046875,22387.900390625,22720.416015625,22720.416015625,24746386230
+2023-01-23,22721.087890625,23126.486328125,22654.3046875,22934.431640625,22934.431640625,26518700512
+2023-01-24,22929.626953125,23134.01171875,22549.744140625,22636.46875,22636.46875,26405069715
+2023-01-25,22639.267578125,23722.099609375,22406.076171875,23117.859375,23117.859375,30685366709
+2023-01-26,23108.955078125,23237.078125,22911.373046875,23032.77734375,23032.77734375,26357839322
+2023-01-27,23030.716796875,23417.720703125,22654.59375,23078.728515625,23078.728515625,25383335641
+2023-01-28,23079.96484375,23165.896484375,22908.845703125,23031.08984375,23031.08984375,14712928379
+2023-01-29,23031.44921875,23919.890625,22985.0703125,23774.56640625,23774.56640625,27423687259
+2023-01-30,23774.6484375,23789.34765625,22657.58203125,22840.138671875,22840.138671875,27205595568
+2023-01-31,22840.796875,23225.021484375,22765.568359375,23139.283203125,23139.283203125,22837828665
+2023-02-01,23137.8359375,23764.5390625,22877.75,23723.76953125,23723.76953125,26683255504
+2023-02-02,23720.82421875,24167.2109375,23468.595703125,23471.87109375,23471.87109375,32066936882
+2023-02-03,23469.412109375,23678.103515625,23279.955078125,23449.322265625,23449.322265625,27083066007
+2023-02-04,23446.3203125,23556.94921875,23291.794921875,23331.84765625,23331.84765625,15639298538
+2023-02-05,23332.248046875,23423.435546875,22841.759765625,22955.666015625,22955.666015625,19564262605
+2023-02-06,22954.021484375,23119.279296875,22692.025390625,22760.109375,22760.109375,23825006542
+2023-02-07,22757.267578125,23310.974609375,22756.2578125,23264.291015625,23264.291015625,27187964471
+2023-02-08,23263.416015625,23367.958984375,22731.09765625,22939.3984375,22939.3984375,25371367758
+2023-02-09,22946.56640625,22996.4375,21773.974609375,21819.0390625,21819.0390625,32572572185
+2023-02-10,21819.005859375,21941.185546875,21539.392578125,21651.18359375,21651.18359375,27078406594
+2023-02-11,21651.841796875,21891.41015625,21618.44921875,21870.875,21870.875,16356226232
+2023-02-12,21870.90234375,22060.994140625,21682.828125,21788.203125,21788.203125,17821046406
+2023-02-13,21787.0,21898.4140625,21460.087890625,21808.1015625,21808.1015625,23918742607
+2023-02-14,21801.822265625,22293.140625,21632.39453125,22220.8046875,22220.8046875,26792596581
+2023-02-15,22220.5859375,24307.841796875,22082.76953125,24307.841796875,24307.841796875,32483312909
+2023-02-16,24307.349609375,25134.1171875,23602.5234375,23623.474609375,23623.474609375,39316664596
+2023-02-17,23621.283203125,24924.041015625,23460.755859375,24565.6015625,24565.6015625,41358451255
+2023-02-18,24565.296875,24798.8359375,24468.373046875,24641.27734375,24641.27734375,19625427158
+2023-02-19,24640.02734375,25093.0546875,24327.642578125,24327.642578125,24327.642578125,25555105670
+2023-02-20,24336.623046875,25020.458984375,23927.91015625,24829.1484375,24829.1484375,28987376573
+2023-02-21,24833.048828125,25126.8515625,24200.36328125,24436.353515625,24436.353515625,31252098714
+2023-02-22,24437.41796875,24472.33984375,23644.318359375,24188.84375,24188.84375,30199996781
+2023-02-23,24190.71875,24572.08984375,23693.919921875,23947.4921875,23947.4921875,30476264066
+2023-02-24,23946.0078125,24103.705078125,23007.072265625,23198.126953125,23198.126953125,26811744928
+2023-02-25,23200.125,23210.2109375,22861.55859375,23175.375,23175.375,16100721565
+2023-02-26,23174.150390625,23654.3671875,23084.220703125,23561.212890625,23561.212890625,16644534842
+2023-02-27,23561.451171875,23857.890625,23205.87890625,23522.87109375,23522.87109375,22660763494
+2023-02-28,23521.837890625,23585.384765625,23077.650390625,23147.353515625,23147.353515625,20535363434
+2023-03-01,23150.9296875,23880.6328125,23088.626953125,23646.55078125,23646.55078125,24662841200
+2023-03-02,23647.01953125,23739.138671875,23245.021484375,23475.466796875,23475.466796875,20386398516
+2023-03-03,23476.6328125,23479.34765625,22213.23828125,22362.6796875,22362.6796875,26062404610
+2023-03-04,22362.923828125,22405.177734375,22198.98046875,22353.349609375,22353.349609375,11166012913
+2023-03-05,22354.14453125,22613.685546875,22307.142578125,22435.513671875,22435.513671875,13317001733
+2023-03-06,22436.81640625,22584.29296875,22331.314453125,22429.7578125,22429.7578125,17353192895
+2023-03-07,22428.322265625,22527.41796875,22011.26171875,22219.76953125,22219.76953125,22765452204
+2023-03-08,22216.44140625,22268.896484375,21708.05078125,21718.080078125,21718.080078125,22536575684
+2023-03-09,21720.080078125,21802.716796875,20210.306640625,20363.021484375,20363.021484375,30364664171
+2023-03-10,20367.001953125,20370.595703125,19628.25390625,20187.244140625,20187.244140625,39578257695
+2023-03-11,20187.876953125,20792.525390625,20068.66015625,20632.41015625,20632.41015625,30180288176
+2023-03-12,20628.029296875,22185.03125,20448.806640625,22163.94921875,22163.94921875,29279035521
+2023-03-13,22156.40625,24550.837890625,21918.19921875,24197.533203125,24197.533203125,49466362688
+2023-03-14,24201.765625,26514.716796875,24081.18359375,24746.07421875,24746.07421875,54622230164
+2023-03-15,24770.92578125,25240.615234375,23964.91015625,24375.9609375,24375.9609375,43655701450
+2023-03-16,24373.45703125,25190.326171875,24225.111328125,25052.7890625,25052.7890625,33866061747
+2023-03-17,25055.123046875,27787.8125,24955.169921875,27423.9296875,27423.9296875,50730261335
+2023-03-18,27448.1171875,27725.953125,26636.26171875,26965.87890625,26965.87890625,35723036817
+2023-03-19,26969.50390625,28440.560546875,26907.716796875,28038.67578125,28038.67578125,37769448859
+2023-03-20,28041.6015625,28527.724609375,27242.880859375,27767.236328125,27767.236328125,44774027664
+2023-03-21,27768.392578125,28439.5625,27439.646484375,28175.81640625,28175.81640625,36102192830
+2023-03-22,28158.720703125,28803.3359375,26759.99609375,27307.4375,27307.4375,33382021890
+2023-03-23,27301.95703125,28729.84375,27183.36328125,28333.97265625,28333.97265625,24220433689
+2023-03-24,28324.111328125,28388.4375,27039.265625,27493.28515625,27493.28515625,25980310960
+2023-03-25,27487.337890625,27791.826171875,27196.234375,27494.70703125,27494.70703125,13383005987
+2023-03-26,27495.5234375,28178.14453125,27445.046875,27994.330078125,27994.330078125,13878363192
+2023-03-27,27994.068359375,28037.92578125,26606.689453125,27139.888671875,27139.888671875,18188895178
+2023-03-28,27132.888671875,27460.71875,26677.818359375,27268.130859375,27268.130859375,17783600385
+2023-03-29,27267.03125,28619.54296875,27259.662109375,28348.44140625,28348.44140625,20684945906
+2023-03-30,28350.140625,29159.90234375,27720.16015625,28033.5625,28033.5625,22435349951
+2023-03-31,28032.26171875,28639.896484375,27583.71484375,28478.484375,28478.484375,19001327598
+2023-04-01,28473.33203125,28802.45703125,28297.171875,28411.03515625,28411.03515625,10876469901
+2023-04-02,28462.845703125,28518.958984375,27884.087890625,28199.30859375,28199.30859375,12284641999
+2023-04-03,28183.080078125,28475.623046875,27276.720703125,27790.220703125,27790.220703125,19556501327
+2023-04-04,27795.2734375,28433.7421875,27681.3046875,28168.08984375,28168.08984375,15284538859
+2023-04-05,28169.7265625,28739.23828125,27843.763671875,28177.984375,28177.984375,17052315986
+2023-04-06,28175.2265625,28178.384765625,27738.759765625,28044.140625,28044.140625,13837809380
+2023-04-07,28038.966796875,28111.59375,27794.03125,27925.859375,27925.859375,10861680497
+2023-04-08,27920.513671875,28159.86328125,27883.38671875,27947.794921875,27947.794921875,9373255556
+2023-04-09,27952.3671875,28532.830078125,27828.48046875,28333.05078125,28333.05078125,12175322951
+2023-04-10,28336.02734375,29771.46484375,28189.271484375,29652.98046875,29652.98046875,19282400094
+2023-04-11,29653.6796875,30509.083984375,29609.30078125,30235.05859375,30235.05859375,20121259843
+2023-04-12,30231.58203125,30462.48046875,29725.57421875,30139.052734375,30139.052734375,18651929926
+2023-04-13,29892.740234375,30539.845703125,29878.623046875,30399.06640625,30399.06640625,17487721001
+2023-04-14,30409.5625,31005.607421875,30044.498046875,30485.69921875,30485.69921875,22659995079
+2023-04-15,30490.75,30601.740234375,30245.8828125,30318.49609375,30318.49609375,11940685378
+2023-04-16,30315.9765625,30555.537109375,30157.83203125,30315.35546875,30315.35546875,12854816417
+2023-04-17,30317.146484375,30319.197265625,29275.37109375,29445.044921875,29445.044921875,17872186762
+2023-04-18,29449.091796875,30470.302734375,29154.849609375,30397.552734375,30397.552734375,19480529496
+2023-04-19,30394.1875,30411.0546875,28669.8984375,28822.6796875,28822.6796875,24571565421
+2023-04-20,28823.68359375,29076.400390625,28037.2578125,28245.98828125,28245.98828125,21340360360
+2023-04-21,28249.23046875,28349.96875,27177.365234375,27276.91015625,27276.91015625,20759504330
+2023-04-22,27265.89453125,27872.142578125,27169.5703125,27817.5,27817.5,13125734602
+2023-04-23,27816.14453125,27820.244140625,27400.314453125,27591.384765625,27591.384765625,12785446832
+2023-04-24,27591.73046875,27979.982421875,27070.849609375,27525.33984375,27525.33984375,17703288330
+2023-04-25,27514.873046875,28371.078125,27207.931640625,28307.59765625,28307.59765625,17733373139
+2023-04-26,28300.05859375,29995.837890625,27324.548828125,28422.701171875,28422.701171875,31854242019
+2023-04-27,28428.46484375,29871.546875,28402.88671875,29473.787109375,29473.787109375,27153445027
+2023-04-28,29481.013671875,29572.791015625,28929.609375,29340.26171875,29340.26171875,17544464887
+2023-04-29,29336.56640625,29452.455078125,29088.04296875,29248.48828125,29248.48828125,10662634333
+2023-04-30,29245.515625,29952.029296875,29114.021484375,29268.806640625,29268.806640625,14652199272
+2023-05-01,29227.103515625,29329.935546875,27680.79296875,28091.568359375,28091.568359375,18655599976
+2023-05-02,28087.17578125,28881.298828125,27924.123046875,28680.537109375,28680.537109375,16432924527
+2023-05-03,28680.494140625,29259.533203125,28178.388671875,29006.30859375,29006.30859375,19122972518
+2023-05-04,29031.3046875,29353.185546875,28694.0390625,28847.7109375,28847.7109375,15548678514
+2023-05-05,28851.48046875,29668.908203125,28845.509765625,29534.384765625,29534.384765625,17936566518
+2023-05-06,29538.859375,29820.126953125,28468.966796875,28904.623046875,28904.623046875,15913866714
+2023-05-07,28901.623046875,29157.517578125,28441.3671875,28454.978515625,28454.978515625,11301355486
+2023-05-08,28450.45703125,28663.271484375,27310.134765625,27694.2734375,27694.2734375,19122903752
+2023-05-09,27695.068359375,27821.400390625,27375.6015625,27658.775390625,27658.775390625,14128593256
+2023-05-10,27654.63671875,28322.6875,26883.669921875,27621.755859375,27621.755859375,20656025026
+2023-05-11,27621.0859375,27621.94140625,26781.826171875,27000.7890625,27000.7890625,16724343943
+2023-05-12,26987.662109375,27055.646484375,25878.4296875,26804.990234375,26804.990234375,19313599897
+2023-05-13,26807.76953125,27030.482421875,26710.873046875,26784.078125,26784.078125,9999171605
+2023-05-14,26788.974609375,27150.9765625,26661.35546875,26930.638671875,26930.638671875,10014858959
+2023-05-15,26931.384765625,27646.34765625,26766.09765625,27192.693359375,27192.693359375,14413231792
+2023-05-16,27171.513671875,27299.3046875,26878.947265625,27036.650390625,27036.650390625,12732238816
+2023-05-17,27035.470703125,27465.927734375,26600.14453125,27398.802734375,27398.802734375,15140006925
+2023-05-18,27401.650390625,27466.52734375,26415.1015625,26832.208984375,26832.208984375,15222938600
+2023-05-19,26826.75390625,27128.619140625,26700.2109375,26890.12890625,26890.12890625,11258983301
+2023-05-20,26888.841796875,27155.158203125,26843.27734375,27129.5859375,27129.5859375,7044911360
+2023-05-21,27118.423828125,27265.91796875,26706.921875,26753.826171875,26753.826171875,8647416921
+2023-05-22,26749.892578125,27045.734375,26549.734375,26851.27734375,26851.27734375,11056770492
+2023-05-23,26855.9609375,27434.68359375,26816.1796875,27225.7265625,27225.7265625,13697203143
+2023-05-24,27224.603515625,27224.603515625,26106.576171875,26334.818359375,26334.818359375,16299104428
+2023-05-25,26329.4609375,26591.51953125,25890.59375,26476.20703125,26476.20703125,13851122697
+2023-05-26,26474.181640625,26916.669921875,26343.94921875,26719.291015625,26719.291015625,12711619225
+2023-05-27,26720.181640625,26888.8828125,26621.140625,26868.353515625,26868.353515625,7892015141
+2023-05-28,26871.158203125,28193.44921875,26802.751953125,28085.646484375,28085.646484375,14545229578
+2023-05-29,28075.591796875,28432.0390625,27563.876953125,27745.884765625,27745.884765625,15181308984
+2023-05-30,27745.123046875,28044.759765625,27588.501953125,27702.349609375,27702.349609375,13251081851
+2023-05-31,27700.529296875,27831.677734375,26866.453125,27219.658203125,27219.658203125,15656371534
+2023-06-01,27218.412109375,27346.10546875,26671.720703125,26819.97265625,26819.97265625,14678970415
+2023-06-02,26824.556640625,27303.861328125,26574.64453125,27249.58984375,27249.58984375,14837415000
+2023-06-03,27252.32421875,27317.052734375,26958.00390625,27075.12890625,27075.12890625,8385597470
+2023-06-04,27075.123046875,27407.01953125,26968.224609375,27119.06640625,27119.06640625,9360912318
+2023-06-05,27123.109375,27129.982421875,25445.16796875,25760.09765625,25760.09765625,21513292646
+2023-06-06,25732.109375,27313.8203125,25434.8671875,27238.783203125,27238.783203125,21929670693
+2023-06-07,27235.650390625,27332.181640625,26146.98828125,26345.998046875,26345.998046875,19530045082
+2023-06-08,26347.654296875,26797.513671875,26246.6640625,26508.216796875,26508.216796875,11904824295
+2023-06-09,26505.923828125,26770.2890625,26339.314453125,26480.375,26480.375,11015551640
+2023-06-10,26481.76171875,26531.044921875,25501.8359375,25851.240234375,25851.240234375,19872933189
+2023-06-11,25854.03125,26203.439453125,25668.986328125,25940.16796875,25940.16796875,10732609603
+2023-06-12,25934.28515625,26087.919921875,25675.197265625,25902.5,25902.5,11677889997
+2023-06-13,25902.94140625,26376.3515625,25728.365234375,25918.728515625,25918.728515625,14143474486
+2023-06-14,25920.2578125,26041.80078125,24902.15234375,25124.67578125,25124.67578125,14265717766
+2023-06-15,25121.673828125,25735.30859375,24797.16796875,25576.39453125,25576.39453125,15837384409
+2023-06-16,25575.283203125,26463.173828125,25245.357421875,26327.462890625,26327.462890625,16324646965
+2023-06-17,26328.6796875,26769.39453125,26174.4921875,26510.67578125,26510.67578125,11090276850
+2023-06-18,26510.45703125,26675.92578125,26325.890625,26336.212890625,26336.212890625,9565695129
+2023-06-19,26335.44140625,26984.611328125,26312.83203125,26851.029296875,26851.029296875,12826986222
+2023-06-20,26841.6640625,28388.96875,26668.791015625,28327.48828125,28327.48828125,22211859147
+2023-06-21,28311.310546875,30737.330078125,28283.41015625,30027.296875,30027.296875,33346760979
+2023-06-22,29995.935546875,30495.998046875,29679.158203125,29912.28125,29912.28125,20653160491
+2023-06-23,29896.3828125,31389.5390625,29845.21484375,30695.46875,30695.46875,24115570085
+2023-06-24,30708.73828125,30804.1484375,30290.146484375,30548.6953125,30548.6953125,12147822496
+2023-06-25,30545.150390625,31041.271484375,30327.943359375,30480.26171875,30480.26171875,12703464114
+2023-06-26,30480.5234375,30636.029296875,29955.744140625,30271.130859375,30271.130859375,16493186997
+2023-06-27,30274.3203125,31006.787109375,30236.650390625,30688.1640625,30688.1640625,16428827944
+2023-06-28,30696.560546875,30703.279296875,29921.822265625,30086.24609375,30086.24609375,14571500779
+2023-06-29,30086.1875,30796.25,30057.203125,30445.3515625,30445.3515625,13180860821
+2023-06-30,30441.353515625,31256.86328125,29600.275390625,30477.251953125,30477.251953125,26387306197
+2023-07-01,30471.84765625,30641.2890625,30328.865234375,30590.078125,30590.078125,9086606733
+2023-07-02,30587.26953125,30766.140625,30264.01953125,30620.76953125,30620.76953125,10533418042
+2023-07-03,30624.515625,31375.61328125,30586.513671875,31156.439453125,31156.439453125,15271884873
+2023-07-04,31156.865234375,31325.197265625,30659.35546875,30777.58203125,30777.58203125,12810828427
+2023-07-05,30778.724609375,30877.330078125,30225.61328125,30514.166015625,30514.166015625,12481622280
+2023-07-06,30507.150390625,31460.052734375,29892.2265625,29909.337890625,29909.337890625,21129219509
+2023-07-07,29907.998046875,30434.64453125,29777.28515625,30342.265625,30342.265625,13384770155
+2023-07-08,30346.921875,30374.4375,30080.16015625,30292.541015625,30292.541015625,7509378699
+2023-07-09,30291.611328125,30427.58984375,30085.591796875,30171.234375,30171.234375,7903327692
+2023-07-10,30172.423828125,31026.083984375,29985.39453125,30414.470703125,30414.470703125,14828209155
+2023-07-11,30417.6328125,30788.314453125,30358.09765625,30620.951171875,30620.951171875,12151839152
+2023-07-12,30622.24609375,30959.96484375,30228.8359375,30391.646484375,30391.646484375,14805659717
+2023-07-13,30387.48828125,31814.515625,30268.3515625,31476.048828125,31476.048828125,23686079548
+2023-07-14,31474.720703125,31582.25390625,29966.38671875,30334.068359375,30334.068359375,20917902660
+2023-07-15,30331.783203125,30407.78125,30263.462890625,30295.806640625,30295.806640625,8011667756
+2023-07-16,30297.47265625,30437.560546875,30089.669921875,30249.1328125,30249.1328125,8516564470
+2023-07-17,30249.626953125,30336.400390625,29685.783203125,30145.888671875,30145.888671875,13240156074
+2023-07-18,30147.0703125,30233.65625,29556.427734375,29856.5625,29856.5625,13138897269
+2023-07-19,29862.046875,30184.181640625,29794.26953125,29913.923828125,29913.923828125,12128602812
+2023-07-20,29915.25,30195.53125,29638.095703125,29792.015625,29792.015625,14655207121
+2023-07-21,29805.111328125,30045.998046875,29733.8515625,29908.744140625,29908.744140625,10972789818
+2023-07-22,29908.697265625,29991.615234375,29664.12109375,29771.802734375,29771.802734375,7873300598
+2023-07-23,29790.111328125,30330.640625,29741.52734375,30084.5390625,30084.5390625,9220145050
+2023-07-24,30081.662109375,30093.39453125,28934.294921875,29176.916015625,29176.916015625,15395817395
+2023-07-25,29178.970703125,29353.16015625,29062.43359375,29227.390625,29227.390625,10266772793
+2023-07-26,29225.759765625,29675.552734375,29113.912109375,29354.97265625,29354.97265625,13497554655
+2023-07-27,29353.798828125,29560.966796875,29099.3515625,29210.689453125,29210.689453125,10770779217
+2023-07-28,29212.1640625,29521.513671875,29125.845703125,29319.24609375,29319.24609375,11218474952
+2023-07-29,29319.4453125,29396.84375,29264.166015625,29356.91796875,29356.91796875,6481775959
+2023-07-30,29357.09375,29443.169921875,29059.501953125,29275.30859375,29275.30859375,8678454527
+2023-07-31,29278.314453125,29489.873046875,29131.578125,29230.111328125,29230.111328125,11656781982
+2023-08-01,29230.873046875,29675.732421875,28657.0234375,29675.732421875,29675.732421875,18272392391
+2023-08-02,29704.146484375,29987.998046875,28946.509765625,29151.958984375,29151.958984375,19212655598
+2023-08-03,29161.8125,29375.70703125,28959.48828125,29178.6796875,29178.6796875,12780357746
+2023-08-04,29174.3828125,29302.078125,28885.3359375,29074.091796875,29074.091796875,12036639988
+2023-08-05,29075.388671875,29102.46484375,28957.796875,29042.126953125,29042.126953125,6598366353
+2023-08-06,29043.701171875,29160.822265625,28963.833984375,29041.85546875,29041.85546875,7269806994
+2023-08-07,29038.513671875,29244.28125,28724.140625,29180.578125,29180.578125,13618163710
+2023-08-08,29180.01953125,30176.796875,29113.814453125,29765.4921875,29765.4921875,17570561357
+2023-08-09,29766.6953125,30093.435546875,29376.80078125,29561.494140625,29561.494140625,18379521213
+2023-08-10,29563.97265625,29688.564453125,29354.447265625,29429.591796875,29429.591796875,11865344789
+2023-08-11,29424.90234375,29517.7734375,29253.517578125,29397.71484375,29397.71484375,10195168197
+2023-08-12,29399.787109375,29465.11328125,29357.587890625,29415.96484375,29415.96484375,6194358008
+2023-08-13,29416.59375,29441.43359375,29265.806640625,29282.9140625,29282.9140625,7329897180
+2023-08-14,29283.263671875,29660.25390625,29124.10546875,29408.443359375,29408.443359375,14013695304
+2023-08-15,29408.048828125,29439.12109375,29088.853515625,29170.34765625,29170.34765625,12640195779
+2023-08-16,29169.07421875,29221.9765625,28701.779296875,28701.779296875,28701.779296875,14949271904
+2023-08-17,28699.802734375,28745.947265625,25409.111328125,26664.55078125,26664.55078125,31120851211
+2023-08-18,26636.078125,26808.1953125,25668.921875,26049.556640625,26049.556640625,24026236529
+2023-08-19,26047.83203125,26249.44921875,25802.408203125,26096.205078125,26096.205078125,10631443812
+2023-08-20,26096.861328125,26260.681640625,26004.314453125,26189.583984375,26189.583984375,9036580420
+2023-08-21,26188.69140625,26220.201171875,25846.087890625,26124.140625,26124.140625,13371557893
+2023-08-22,26130.748046875,26135.5078125,25520.728515625,26031.65625,26031.65625,14503820706
+2023-08-23,26040.474609375,26786.8984375,25804.998046875,26431.640625,26431.640625,16985265785
+2023-08-24,26431.51953125,26554.91015625,25914.92578125,26162.373046875,26162.373046875,12871532023
+2023-08-25,26163.6796875,26248.103515625,25786.8125,26047.66796875,26047.66796875,12406045118
+2023-08-26,26047.234375,26107.384765625,25983.87890625,26008.462890625,26008.462890625,6034817316
+2023-08-27,26008.2421875,26165.373046875,25965.09765625,26089.693359375,26089.693359375,6913768611
+2023-08-28,26089.615234375,26198.578125,25880.599609375,26106.150390625,26106.150390625,11002805166
+2023-08-29,26102.486328125,28089.337890625,25912.62890625,27727.392578125,27727.392578125,29368391712
+2023-08-30,27726.083984375,27760.16015625,27069.20703125,27297.265625,27297.265625,16343655235
+2023-08-31,27301.9296875,27456.078125,25752.9296875,25931.47265625,25931.47265625,20181001451
+2023-09-01,25934.021484375,26125.869140625,25362.609375,25800.724609375,25800.724609375,17202862221
+2023-09-02,25800.91015625,25970.28515625,25753.09375,25868.798828125,25868.798828125,10100387473
+2023-09-03,25869.47265625,26087.1484375,25817.03125,25969.56640625,25969.56640625,8962524523
+2023-09-04,25968.169921875,26081.525390625,25657.025390625,25812.416015625,25812.416015625,10680635106
+2023-09-05,25814.95703125,25858.375,25589.98828125,25779.982421875,25779.982421875,11094740040
+2023-09-06,25783.931640625,25953.015625,25404.359375,25753.236328125,25753.236328125,12752705327
+2023-09-07,25748.3125,26409.302734375,25608.201171875,26240.1953125,26240.1953125,11088307100
+2023-09-08,26245.208984375,26414.005859375,25677.48046875,25905.654296875,25905.654296875,10817356400
+2023-09-09,25905.42578125,25921.9765625,25810.494140625,25895.677734375,25895.677734375,5481314132
+2023-09-10,25895.2109375,25978.130859375,25640.26171875,25832.2265625,25832.2265625,7899553047
+2023-09-11,25831.71484375,25883.947265625,24930.296875,25162.654296875,25162.654296875,14600006467
+2023-09-12,25160.658203125,26451.939453125,25133.078125,25833.34375,25833.34375,18657279324
+2023-09-13,25837.5546875,26376.11328125,25781.123046875,26228.32421875,26228.32421875,13072077070
+2023-09-14,26228.27734375,26774.623046875,26171.451171875,26539.673828125,26539.673828125,13811359124
+2023-09-15,26533.818359375,26840.498046875,26240.701171875,26608.693359375,26608.693359375,11479735788
+2023-09-16,26606.19921875,26754.76953125,26473.890625,26568.28125,26568.28125,7402031417
+2023-09-17,26567.927734375,26617.998046875,26445.07421875,26534.1875,26534.1875,6774210670
+2023-09-18,26532.994140625,27414.734375,26415.515625,26754.28125,26754.28125,15615339655
+2023-09-19,26760.8515625,27488.763671875,26681.60546875,27211.1171875,27211.1171875,13807690550
+2023-09-20,27210.228515625,27379.505859375,26864.08203125,27132.0078125,27132.0078125,13281116604
+2023-09-21,27129.83984375,27152.939453125,26389.30078125,26567.6328125,26567.6328125,13371443708
+2023-09-22,26564.056640625,26726.078125,26495.533203125,26579.568359375,26579.568359375,10578746709
+2023-09-23,26578.556640625,26634.185546875,26520.51953125,26579.390625,26579.390625,7404700301
+2023-09-24,26579.373046875,26716.05859375,26221.05078125,26256.826171875,26256.826171875,8192867686
+2023-09-25,26253.775390625,26421.5078125,26011.46875,26298.48046875,26298.48046875,11997833257
+2023-09-26,26294.7578125,26389.884765625,26090.712890625,26217.25,26217.25,9985498161
+2023-09-27,26209.498046875,26817.841796875,26111.46484375,26352.716796875,26352.716796875,11718380997
+2023-09-28,26355.8125,27259.5,26327.322265625,27021.546875,27021.546875,14079002707
+2023-09-29,27024.841796875,27225.9375,26721.763671875,26911.720703125,26911.720703125,10396435377
+2023-09-30,26911.689453125,27091.794921875,26888.96875,26967.916015625,26967.916015625,5331172801
+2023-10-01,26967.396484375,28047.23828125,26965.09375,27983.75,27983.75,9503917434
+2023-10-02,27976.798828125,28494.458984375,27347.787109375,27530.78515625,27530.78515625,19793041322
+2023-10-03,27508.251953125,27667.19140625,27216.001953125,27429.978515625,27429.978515625,11407814187
+2023-10-04,27429.07421875,27826.658203125,27248.10546875,27799.39453125,27799.39453125,11143355314
+2023-10-05,27798.646484375,28091.861328125,27375.6015625,27415.912109375,27415.912109375,11877253670
+2023-10-06,27412.123046875,28252.537109375,27215.552734375,27946.59765625,27946.59765625,13492391599
+2023-10-07,27946.78125,28028.091796875,27870.423828125,27968.83984375,27968.83984375,6553044316
+2023-10-08,27971.677734375,28102.169921875,27740.662109375,27935.08984375,27935.08984375,7916875290
+2023-10-09,27934.47265625,27989.470703125,27302.5625,27583.677734375,27583.677734375,12007668568
+2023-10-10,27589.201171875,27715.84765625,27301.654296875,27391.01953125,27391.01953125,9973350678
+2023-10-11,27392.076171875,27474.115234375,26561.099609375,26873.3203125,26873.3203125,13648094333
+2023-10-12,26873.29296875,26921.439453125,26558.3203125,26756.798828125,26756.798828125,9392909295
+2023-10-13,26752.87890625,27092.697265625,26686.322265625,26862.375,26862.375,15165312851
+2023-10-14,26866.203125,26969.0,26814.5859375,26861.70703125,26861.70703125,5388116782
+2023-10-15,26858.01171875,27289.169921875,26817.89453125,27159.65234375,27159.65234375,7098201980
+2023-10-16,27162.62890625,29448.138671875,27130.47265625,28519.466796875,28519.466796875,27833876539
+2023-10-17,28522.09765625,28618.751953125,28110.185546875,28415.748046875,28415.748046875,14872527508
+2023-10-18,28413.53125,28889.009765625,28174.251953125,28328.341796875,28328.341796875,12724128586
+2023-10-19,28332.416015625,28892.474609375,28177.98828125,28719.806640625,28719.806640625,14448058195
+2023-10-20,28732.8125,30104.0859375,28601.669921875,29682.94921875,29682.94921875,21536125230
+2023-10-21,29683.380859375,30287.482421875,29481.751953125,29918.412109375,29918.412109375,11541146996
+2023-10-22,29918.654296875,30199.43359375,29720.3125,29993.896484375,29993.896484375,10446520040
+2023-10-23,30140.685546875,34370.4375,30097.828125,33086.234375,33086.234375,38363572311
+2023-10-24,33077.3046875,35150.43359375,32880.76171875,33901.52734375,33901.52734375,44934999645
+2023-10-25,33916.04296875,35133.7578125,33709.109375,34502.8203125,34502.8203125,25254318008
+2023-10-26,34504.2890625,34832.91015625,33762.32421875,34156.6484375,34156.6484375,19427195376
+2023-10-27,34156.5,34238.2109375,33416.88671875,33909.80078125,33909.80078125,16418032871
+2023-10-28,33907.72265625,34399.390625,33874.8046875,34089.57421875,34089.57421875,10160330825
+2023-10-29,34089.37109375,34743.26171875,33947.56640625,34538.48046875,34538.48046875,11160323986
+2023-10-30,34531.7421875,34843.93359375,34110.97265625,34502.36328125,34502.36328125,17184860315
+2023-10-31,34500.078125,34719.25390625,34083.30859375,34667.78125,34667.78125,15758270810
+2023-11-01,34657.2734375,35527.9296875,34170.69140625,35437.25390625,35437.25390625,22446272005
+2023-11-02,35441.578125,35919.84375,34401.57421875,34938.2421875,34938.2421875,20998158544
+2023-11-03,34942.47265625,34942.47265625,34133.44140625,34732.32421875,34732.32421875,17158456701
+2023-11-04,34736.32421875,35256.03125,34616.69140625,35082.1953125,35082.1953125,9561294264
+2023-11-05,35090.01171875,35340.33984375,34594.2421875,35049.35546875,35049.35546875,12412743996
+2023-11-06,35044.7890625,35286.02734375,34765.36328125,35037.37109375,35037.37109375,12693436420
+2023-11-07,35047.79296875,35892.41796875,34545.81640625,35443.5625,35443.5625,18834737789
+2023-11-08,35419.4765625,35994.41796875,35147.80078125,35655.27734375,35655.27734375,17295394918
+2023-11-09,35633.6328125,37926.2578125,35592.1015625,36693.125,36693.125,37762672382
+2023-11-10,36702.25,37493.80078125,36362.75390625,37313.96875,37313.96875,22711265155
+2023-11-11,37310.0703125,37407.09375,36773.66796875,37138.05078125,37138.05078125,13924272142
+2023-11-12,37133.9921875,37227.69140625,36779.1171875,37054.51953125,37054.51953125,11545715999
+2023-11-13,37070.3046875,37405.1171875,36399.60546875,36502.35546875,36502.35546875,19057712790
+2023-11-14,36491.7890625,36753.3515625,34948.5,35537.640625,35537.640625,23857403554
+2023-11-15,35548.11328125,37964.89453125,35383.78125,37880.58203125,37880.58203125,27365821679
+2023-11-16,37879.98046875,37934.625,35545.47265625,36154.76953125,36154.76953125,26007385366
+2023-11-17,36164.82421875,36704.484375,35901.234375,36596.68359375,36596.68359375,22445028430
+2023-11-18,36625.37109375,36839.28125,36233.3125,36585.703125,36585.703125,11886022717
+2023-11-19,36585.765625,37509.35546875,36414.59765625,37386.546875,37386.546875,12915986553
+2023-11-20,37374.07421875,37756.8203125,36882.53125,37476.95703125,37476.95703125,20888209068
+2023-11-21,37469.16015625,37631.140625,35813.8125,35813.8125,35813.8125,25172163756
+2023-11-22,35756.5546875,37856.98046875,35670.97265625,37432.33984375,37432.33984375,24397247860
+2023-11-23,37420.43359375,37643.91796875,36923.86328125,37289.62109375,37289.62109375,14214948217
+2023-11-24,37296.31640625,38415.33984375,37261.60546875,37720.28125,37720.28125,22922957823
+2023-11-25,37721.4140625,37892.4296875,37617.41796875,37796.79296875,37796.79296875,9099571165
+2023-11-26,37796.828125,37820.30078125,37162.75,37479.12109375,37479.12109375,13744796068
+2023-11-27,37454.19140625,37559.35546875,36750.12890625,37254.16796875,37254.16796875,19002925720
+2023-11-28,37247.9921875,38368.48046875,36891.08984375,37831.0859375,37831.0859375,21696137014
+2023-11-29,37826.10546875,38366.11328125,37612.6328125,37858.4921875,37858.4921875,20728546658
+2023-11-30,37861.1171875,38141.75390625,37531.140625,37712.74609375,37712.74609375,18115982627
+2023-12-01,37718.0078125,38954.109375,37629.359375,38688.75,38688.75,23512784002
+2023-12-02,38689.27734375,39678.9375,38652.59375,39476.33203125,39476.33203125,15534035612
+2023-12-03,39472.20703125,40135.60546875,39298.1640625,39978.390625,39978.390625,15769696322
+2023-12-04,39978.62890625,42371.75,39978.62890625,41980.09765625,41980.09765625,39856129827
+2023-12-05,41986.265625,44408.6640625,41421.1484375,44080.6484375,44080.6484375,36312154535
+2023-12-06,44080.0234375,44265.76953125,43478.08203125,43746.4453125,43746.4453125,29909761586
+2023-12-07,43769.1328125,44042.58984375,42880.6484375,43292.6640625,43292.6640625,27635760671
+2023-12-08,43293.13671875,44705.515625,43125.296875,44166.6015625,44166.6015625,24421116687
+2023-12-09,44180.01953125,44361.2578125,43627.59765625,43725.984375,43725.984375,17368210171
+2023-12-10,43728.3828125,44034.625,43593.28515625,43779.69921875,43779.69921875,13000481418
+2023-12-11,43792.01953125,43808.375,40234.578125,41243.83203125,41243.83203125,40632672038
+2023-12-12,41238.734375,42048.3046875,40667.5625,41450.22265625,41450.22265625,24779520132
+2023-12-13,41468.46484375,43429.78125,40676.8671875,42890.7421875,42890.7421875,26797884674
+2023-12-14,42884.26171875,43390.859375,41767.08984375,43023.97265625,43023.97265625,25578530178
+2023-12-15,43028.25,43087.82421875,41692.96875,41929.7578125,41929.7578125,19639442462
+2023-12-16,41937.7421875,42664.9453125,41723.11328125,42240.1171875,42240.1171875,14386729590
+2023-12-17,42236.109375,42359.49609375,41274.54296875,41364.6640625,41364.6640625,16678702876
+2023-12-18,41348.203125,42720.296875,40530.2578125,42623.5390625,42623.5390625,25224642008
+2023-12-19,42641.51171875,43354.296875,41826.3359375,42270.52734375,42270.52734375,23171001281
+2023-12-20,42261.30078125,44275.5859375,42223.81640625,43652.25,43652.25,27868908174
+2023-12-21,43648.125,44240.66796875,43330.05078125,43869.15234375,43869.15234375,22452766169
+2023-12-22,43868.98828125,44367.95703125,43441.96875,43997.90234375,43997.90234375,21028503216
+2023-12-23,44012.19921875,44015.69921875,43351.35546875,43739.54296875,43739.54296875,13507796558
+2023-12-24,43728.3671875,43945.5234375,42786.91796875,43016.1171875,43016.1171875,18830554085
+2023-12-25,43010.57421875,43765.09375,42765.76953125,43613.140625,43613.140625,21115795370
+2023-12-26,43599.84765625,43603.17578125,41676.48828125,42520.40234375,42520.40234375,30026850982
+2023-12-27,42518.46875,43683.16015625,42167.58203125,43442.85546875,43442.85546875,25260941032
+2023-12-28,43468.19921875,43804.78125,42318.55078125,42627.85546875,42627.85546875,22992093014
+2023-12-29,42614.64453125,43124.32421875,41424.0625,42099.40234375,42099.40234375,26000021055
+2023-12-30,42091.75390625,42584.125,41556.2265625,42156.90234375,42156.90234375,16013925945
+2023-12-31,42152.09765625,42860.9375,41998.25390625,42265.1875,42265.1875,16397498810
+2024-01-01,42280.234375,44175.4375,42214.9765625,44167.33203125,44167.33203125,18426978443
+2024-01-02,44187.140625,45899.70703125,44176.94921875,44957.96875,44957.96875,39335274536
+2024-01-03,44961.6015625,45503.2421875,40813.53515625,42848.17578125,42848.17578125,46342323118
+2024-01-04,42855.81640625,44770.0234375,42675.17578125,44179.921875,44179.921875,30448091210
+2024-01-05,44192.98046875,44353.28515625,42784.71875,44162.69140625,44162.69140625,32336029347
+2024-01-06,44178.953125,44227.6328125,43475.15625,43989.1953125,43989.1953125,16092503468
+2024-01-07,43998.46484375,44495.5703125,43662.23046875,43943.09765625,43943.09765625,19330573863
+2024-01-08,43948.70703125,47218.0,43244.08203125,46970.50390625,46970.50390625,42746192015
+2024-01-09,46987.640625,47893.69921875,45244.71484375,46139.73046875,46139.73046875,39821290992
+2024-01-10,46121.5390625,47647.22265625,44483.15234375,46627.77734375,46627.77734375,50114613298
+2024-01-11,46656.07421875,48969.37109375,45678.64453125,46368.5859375,46368.5859375,45833734549
+2024-01-12,46354.79296875,46498.13671875,41903.76953125,42853.16796875,42853.16796875,43332698900
+2024-01-13,42799.4453125,43234.66015625,42464.14453125,42842.3828125,42842.3828125,20601860469
+2024-01-14,42842.26171875,43065.59765625,41724.61328125,41796.26953125,41796.26953125,17521429522
+2024-01-15,41715.06640625,43319.72265625,41705.41796875,42511.96875,42511.96875,22320220558
+2024-01-16,42499.3359375,43566.2734375,42085.99609375,43154.9453125,43154.9453125,24062872740
+2024-01-17,43132.1015625,43189.890625,42189.30859375,42742.65234375,42742.65234375,20851232595
+2024-01-18,42742.3125,42876.34765625,40631.171875,41262.05859375,41262.05859375,25218357242
+2024-01-19,41278.4609375,41484.7578125,40756.76953125,41269.88671875,41269.88671875,26650658816
diff --git a/model/lstm_model.py b/model/lstm_model.py
new file mode 100644
index 0000000000000000000000000000000000000000..ad8154d22fc5a54fee621ed949830ed75f8861d7
--- /dev/null
+++ b/model/lstm_model.py
@@ -0,0 +1,19 @@
+import torch.nn as nn
+import torch
+
+class BiLSTM(nn.Module):
+ def __init__(self, input_size, hidden_size, num_layers, output_size):
+ super(BiLSTM, self).__init__()
+ self.hidden_size = hidden_size
+ self.num_layers = num_layers
+ self.lstm = nn.LSTM(input_size, hidden_size, num_layers, batch_first=True, bidirectional=True)
+ self.fc = nn.Linear(hidden_size*2, output_size) # Умножаем на 2 из-за двунаправленности
+
+ def forward(self, x):
+ h0 = torch.zeros(self.num_layers*2, x.size(0), self.hidden_size).to(x.device) # 2 для bidirectional
+ c0 = torch.zeros(self.num_layers*2, x.size(0), self.hidden_size).to(x.device)
+
+ out, _ = self.lstm(x, (h0, c0))
+ out = self.fc(out[:, -1, :])
+ return out
+
diff --git a/model/model_weights3.pth b/model/model_weights3.pth
new file mode 100644
index 0000000000000000000000000000000000000000..98a0e8d4d70aad5a65500c93ea6979db3f4375bd
--- /dev/null
+++ b/model/model_weights3.pth
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e8c52848e24ea2eb6939c13fcd44370e66d222870ca5f3a2497de710f00e824d
+size 3707994
diff --git a/pages/.DS_Store b/pages/.DS_Store
new file mode 100644
index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6
Binary files /dev/null and b/pages/.DS_Store differ
diff --git "a/pages/1_\360\237\223\210_\320\237\321\200\320\276\320\263\320\275\320\276\320\267_\320\270\320\275\320\264\320\265\320\272\321\201\320\260. Prophet.py" "b/pages/1_\360\237\223\210_\320\237\321\200\320\276\320\263\320\275\320\276\320\267_\320\270\320\275\320\264\320\265\320\272\321\201\320\260. Prophet.py"
new file mode 100644
index 0000000000000000000000000000000000000000..51f511811034bdcba753e6ea049836ddcff48c28
--- /dev/null
+++ "b/pages/1_\360\237\223\210_\320\237\321\200\320\276\320\263\320\275\320\276\320\267_\320\270\320\275\320\264\320\265\320\272\321\201\320\260. Prophet.py"
@@ -0,0 +1,263 @@
+import streamlit as st
+import yfinance as yf
+import pandas as pd
+import numpy as np
+import matplotlib.pyplot as plt
+from datetime import date
+from prophet import Prophet
+from prophet.plot import plot_plotly
+from plotly import graph_objs as go
+from prophet.make_holidays import make_holidays_df
+from sklearn.metrics import mean_absolute_error, mean_squared_error
+
+st.set_page_config(layout='wide', initial_sidebar_state='expanded')
+st.set_option('deprecation.showPyplotGlobalUse', False)
+st.title('ML Wall Street')
+st.image('images/img.png')
+
+START = "2021-01-01"
+TODAY = date.today().strftime("%Y-%m-%d")
+
+period = st.slider('Количество дней прогноза:', 1, 14, 14)
+
+# @st.cache_data
+def load_data():
+ dji = yf.download('^DJI', START, TODAY)
+ dji.reset_index(inplace=True)
+ data_500 = yf.download('^GSPC', START, TODAY)
+ data_500.reset_index(inplace=True)
+ sse = yf.download('000001.SS', START, TODAY)
+ sse.reset_index(inplace=True)
+ imoex = yf.download('IMOEX.ME', START, TODAY)
+ imoex.reset_index(inplace=True)
+ return dji, data_500, sse, imoex
+
+dji, data_500, sse, imoex = load_data()
+latest_date = dji['Date'].iloc[-1].strftime('%Y-%m-%d')
+st.markdown(f"Цены актуальны на последнюю дату закрытия торгов {latest_date}
", unsafe_allow_html=True)
+# # Добавляем кнопку обновления данных
+# if st.button("Обновить данные", type="primary"):
+# dji = yf.download('^DJI', START, TODAY)
+# dji.reset_index(inplace=True)
+# data_500 = yf.download('^GSPC', START, TODAY)
+# data_500.reset_index(inplace=True)
+# sse = yf.download('000001.SS', START, TODAY)
+# sse.reset_index(inplace=True)
+# imoex = yf.download('IMOEX.ME', START, TODAY)
+# imoex.reset_index(inplace=True)
+# st.success("Данные успешно обновлены!")
+
+# if st.button("или Обновить данные", type="primary"):
+# dji, data_500, sse, imoex = load_data()
+
+def evaluate_trend_first_day(predicted_value, actual_value):
+ # Разница между первым днем прогноза и последним днем тестовых данных
+ forecast_diff_first_last = predicted_value - actual_value
+
+ # Оценка тренда на первый день: рост, падение, стабильность
+ if forecast_diff_first_last > 0:
+ return "Тенденция на первый день: Рост"
+ elif forecast_diff_first_last < 0:
+ return "Тенденция на первый день: Падение"
+ else:
+ return "Тенденция на первый день: Стабильность"
+
+def evaluate_trend_period(forecast_14_days):
+ # Разница между первым и последним значением прогноза
+ forecast_diff = forecast_14_days['yhat'].iloc[-1] - forecast_14_days['yhat'].iloc[0]
+
+ # Оценка тренда на весь период прогноза: рост, падение, стабильность
+ print("Разница между первым и последним значением прогноза:", forecast_diff)
+
+ if forecast_diff > 0:
+ return "Тенденция на период прогноза: Рост"
+ elif forecast_diff < 0:
+ return "Тенденция на период прогноза: Падение"
+ else:
+ return "Тенденция на период прогноза: Стабильность"
+
+
+# Формирование календаря для США
+year_2023 = 2023
+# Создаем DataFrame с встроенными праздниками для 2023
+holidays_df_2023 = make_holidays_df(year_list=[year_2023], country='US')
+# Преобразуем входные строки в datetime
+holidays_df_2023['ds'] = pd.to_datetime(holidays_df_2023['ds'])
+# Создаем DataFrame с кастомными праздниками для 2024 года
+custom_holidays_2024 = pd.DataFrame({
+ 'holiday': 'custom',
+ 'ds': pd.to_datetime([
+ '2024-01-01', # Новый год
+ '2024-01-15', # День Мартина Лютера Кинга младшего
+ '2024-02-19', # День рождения Дж. Вашингтона (Washington’s Birthday)
+ '2024-03-29', # Страстная пятница (Good Friday)
+ '2024-05-27', # День Памяти (Memorial Day)
+ '2024-06-19', # День национальной независимости | Juneteenth
+ '2024-07-04', # День независимости
+ '2024-09-02', # День труда
+ '2024-11-28', # День Благодарения
+ '2024-12-24', # Рождество
+ ]),
+ 'lower_window': 0,
+ 'upper_window': 1,
+})
+# Объединяем все DataFrame с праздниками
+all_holidays_US = pd.concat([holidays_df_2023, custom_holidays_2024]).drop_duplicates(subset=['ds']).sort_values(by=['ds'])
+# Создаем DataFrame с датами праздников
+holidays_df_US = pd.DataFrame({
+ 'ds': all_holidays_US['ds'],
+ 'holiday': 'holiday',
+})
+
+# Формирование календаря для Китая
+year_2023 = 2023
+holidays_ch_2023 = make_holidays_df(year_list=[year_2023], country='China')
+# Преобразуем входные строки в datetime
+holidays_ch_2023['ds'] = pd.to_datetime(holidays_ch_2023['ds'])
+# Создаем DataFrame с кастомными праздниками для 2024 года
+custom_holidays_2024_ch = pd.DataFrame({
+ 'holiday': 'custom',
+ 'ds': pd.to_datetime([
+ '2024-01-01', # Новый год
+ '2024-02-12', # Китайский Новый Год
+ '2024-02-13', # Китайский Новый Год
+ '2024-03-29', # Страстная пятница (Good Friday)
+ '2024-04-01', # Пасхальный понедельник
+ '2024-04-04', # День ухода за могилами
+ '2024-05-01', # Праздник Труда
+ '2024-05-15', # День рождения Будды
+ '2024-06-10', # Фестиваль Туен Нг
+ '2024-07-01' # Праздник Специального Административного района
+ ]),
+ 'lower_window': 0,
+ 'upper_window': 1,
+})
+# Объединяем все DataFrame с праздниками
+all_holidays_China = pd.concat([holidays_ch_2023, custom_holidays_2024_ch]).drop_duplicates(subset=['ds']).sort_values(by=['ds'])
+# Создаем DataFrame с датами праздников
+holidays_df_China = pd.DataFrame({
+ 'ds': all_holidays_China['ds'],
+ 'holiday': 'holiday',
+})
+
+# Формирование календаря для России
+year_2023 = 2023
+holidays_r_2023 = make_holidays_df(year_list=[year_2023], country='Russia')
+# Преобразуем входные строки в datetime
+holidays_r_2023['ds'] = pd.to_datetime(holidays_r_2023['ds'])
+# Создаем DataFrame с кастомными праздниками для 2024 года
+custom_holidays_2024_r = pd.DataFrame({
+ 'holiday': 'custom',
+ 'ds': pd.to_datetime([
+ '2024-01-01',
+ '2024-01-02',
+ '2024-02-23',
+ '2024-03-8',
+ '2024-05-01',
+ '2024-05-09',
+ '2024-06-12',
+ '2024-11-04'
+ ]),
+ 'lower_window': 0,
+ 'upper_window': 1,
+})
+# Объединяем все DataFrame с праздниками
+all_holidays_r = pd.concat([holidays_r_2023, custom_holidays_2024_r]).drop_duplicates(subset=['ds']).sort_values(by=['ds'])
+# Создаем DataFrame с датами праздников
+all_holidays_r = pd.DataFrame({
+ 'ds': all_holidays_China['ds'],
+ 'holiday': 'holiday',
+})
+
+def index(ind, holidays_df, text1, text2, k=0):
+ data = ind
+ data = data.rename(columns={'Date': 'ds', 'Adj Close': 'y'})
+ # Сортируем данные по дате
+ data = data.sort_values(by='ds')
+ # Определяем индекс для разделения
+ split_index = len(data) - period
+
+ # Разделяем данные на обучающую и тестовую выборки
+ full_train_data3 = data.iloc[:split_index].copy()
+ full_test_data3 = data.iloc[split_index:].copy()
+
+ # Удаляем временную зону из столбца ds
+ full_train_data3['ds'] = full_train_data3['ds'].dt.tz_localize(None)
+ full_test_data3['ds'] = full_test_data3['ds'].dt.tz_localize(None)
+
+ # Создаем модель Prophet
+ model = Prophet(interval_width=0.95)
+ model.fit(full_train_data3)
+ # Создаем фрейм для прогноза на тестовых данных, исключая даты праздников
+ last_date = full_test_data3['ds'].max()
+ future = model.make_future_dataframe(periods=full_test_data3.shape[0]+k, freq='B')
+ future = future[~future['ds'].isin(holidays_df['ds'])]
+ forecast_test = model.predict(future)
+ # latest_date2 = forecast_test['ds'].iloc[-1]
+ # st.write(latest_date2)
+ # Создаем фрейм для прогноза на +14 дней после последней даты
+ future_14_days = model.make_future_dataframe(periods=period, freq='B', include_history=False)
+ future_14_days['ds'] = pd.date_range(start=last_date + pd.DateOffset(1), periods=period, freq='B')
+ forecast_14_days = model.predict(future_14_days)
+
+ # Отрисовка графика
+ fig = go.Figure()
+ fig = plot_plotly(model, forecast_test)
+ # full_test_data3 = full_test_data3.loc[full_test_data3['ds'].isin(forecast_test['ds'])]
+ fig.add_trace(go.Scatter(x=full_test_data3['ds'],
+ y=full_test_data3['y'],
+ mode='markers',
+ marker=dict(color='orchid'),
+ name='Факт тест'))
+ fig.add_trace(go.Scatter(x=forecast_test['ds'].iloc[-period:],
+ y=forecast_test['yhat'].iloc[-period:],
+ mode='lines+markers',
+ marker=dict(color='blue'),
+ name='Прогноз тест'))
+ fig.add_trace(go.Scatter(x=forecast_14_days['ds'], y=forecast_14_days['yhat'], mode='lines+markers', name='Прогноз будущее'))
+ fig.update_layout(title_text=text1, xaxis_rangeslider_visible=True, xaxis_title='', yaxis_title='')
+ fig.update_traces(showlegend=True)
+ st.plotly_chart(fig, use_container_width=True, range_slider_visible=True)
+ # Расчет метрик на тестовой выборке
+ actual_values_test = full_test_data3['y'].values
+ predicted_values_test = forecast_test['yhat'].iloc[-period:].values
+ mape_test = np.mean(np.abs((actual_values_test - predicted_values_test) / actual_values_test)) * 100
+ rmse_test = np.sqrt(mean_squared_error(actual_values_test, predicted_values_test))
+ check = st.checkbox(text2)
+ if check:
+ col1, col2 = st.columns([1, 1])
+ with col1:
+ st.write("**Информация.** \
+ Прогноз составлен на тестовой выборке с возможностью выбора периода до 14 дней. \
+ Дополнительно приведен прогноз для будущего периода с указанием тенденции дельнейшего развития.")
+ st.markdown("**Метрики для тестовой выборки:**")
+ st.write(f"MAPE: {mape_test:.2f}%")
+ st.write(f"RMSE: {rmse_test:.2f}")
+ # Оценка тренда на первый день
+ trend_evaluation_first_day = evaluate_trend_first_day(forecast_14_days['yhat'].iloc[0], full_test_data3['y'].iloc[-1])
+ st.write(trend_evaluation_first_day)
+ # Оценка тренда на период прогноза
+ trend_evaluation_period = evaluate_trend_period(forecast_14_days[['ds', 'yhat']])
+ st.write(trend_evaluation_period)
+ with col2:
+ forecast_results = pd.DataFrame({
+ 'Дата': forecast_14_days['ds'].iloc[-period:].values,
+ 'Прогноз': forecast_14_days['yhat'].iloc[-period:].values.round(2)
+ })
+ st.dataframe(forecast_results.set_index('Дата'))
+
+text1_dji = f'График прогноза для {period} дней по индексу Dow Jones, USD 🇺🇸'
+text2_dji = f"Результаты прогноза по Dow Jones Industrial Average"
+index(dji, holidays_df_US, text1_dji, text2_dji, 2)
+
+text1_500 = f'График прогноза для {period} дней по индексу S&P 500, USD 🇺🇸'
+text2_500 = f"Результаты прогноза по S&P 500"
+index(data_500, holidays_df_US, text1_500, text2_500, 2)
+
+text1_sse = f'График прогноза для {period} дней по индексу SSE Composite, CNY 🇨🇳'
+text2_sse = f"Результаты прогноза по SSE Composite Index"
+index(sse, holidays_df_China, text1_sse, text2_sse)
+
+text1_imoex = f'График прогноза для {period} дней по индексу MOEX Russia, RUB 🇷🇺'
+text2_imoex = f"Результаты прогноза по MOEX Russia Index"
+index(imoex, all_holidays_r, text1_imoex, text2_imoex, 2)
diff --git "a/pages/2_\360\237\222\262 _\320\237\321\200\320\276\320\263\320\275\320\276\320\267_\320\260\320\272\321\206\320\270\320\271. Prophet.py" "b/pages/2_\360\237\222\262 _\320\237\321\200\320\276\320\263\320\275\320\276\320\267_\320\260\320\272\321\206\320\270\320\271. Prophet.py"
new file mode 100644
index 0000000000000000000000000000000000000000..c247d6af08d46ccc7939fba6235914e58b18ee69
--- /dev/null
+++ "b/pages/2_\360\237\222\262 _\320\237\321\200\320\276\320\263\320\275\320\276\320\267_\320\260\320\272\321\206\320\270\320\271. Prophet.py"
@@ -0,0 +1,181 @@
+import streamlit as st
+import yfinance as yf
+import pandas as pd
+import numpy as np
+import matplotlib.pyplot as plt
+from datetime import date
+from sklearn.model_selection import train_test_split
+from prophet import Prophet
+from prophet.plot import plot_plotly
+from plotly import graph_objs as go
+from prophet.make_holidays import make_holidays_df
+from sklearn.metrics import mean_absolute_error, mean_squared_error
+
+st.set_page_config(layout='wide', initial_sidebar_state='expanded')
+st.set_option('deprecation.showPyplotGlobalUse', False)
+st.title('ML Wall Street')
+st.image('images/img.png')
+
+START = "2020-01-01"
+TODAY = date.today().strftime("%Y-%m-%d")
+
+stocks = ('AAPL', 'UNH', 'MSFT', 'GS', 'HD', 'AMGN', 'MCD', 'CAT', 'CRM', 'V', 'BA', 'HON', 'TRV', 'AXP', 'JPM', 'IBM', 'JNJ', 'WMT', 'PG', 'CVX', 'MRK', 'MMM', 'NKE', 'DIS', 'KO', 'DOW', 'CSCO', 'INTC', 'VZ', 'WBA')
+selected_stock = st.selectbox('Выберите тикер из индекса Dow Jones', stocks)
+
+period = st.slider('Количество дней прогноза:', 1, 14, 14)
+
+# @st.cache_data
+def load_data(ticker):
+ data = yf.download(ticker, START, TODAY)
+ data.reset_index(inplace=True)
+ return data
+
+data = load_data(selected_stock)
+latest_date = data['Date'].iloc[-1].strftime('%Y-%m-%d')
+st.markdown(f"Цены актуальны на последнюю дату закрытия торгов {latest_date}
", unsafe_allow_html=True)
+
+def evaluate_trend_first_day(predicted_value, actual_value):
+ # Разница между первым днем прогноза и последним днем тестовых данных
+ forecast_diff_first_last = predicted_value - actual_value
+
+ # Оценка тренда на первый день: рост, падение, стабильность
+ if forecast_diff_first_last > 0:
+ return "Тенденция на первый день: Рост"
+ elif forecast_diff_first_last < 0:
+ return "Тенденция на первый день: Падение"
+ else:
+ return "Тенденция на первый день: Стабильность"
+
+def evaluate_trend_period(forecast_14_days):
+ # Разница между первым и последним значением прогноза
+ forecast_diff = forecast_14_days['yhat'].iloc[-1] - forecast_14_days['yhat'].iloc[0]
+
+ # Оценка тренда на весь период прогноза: рост, падение, стабильность
+ print("Разница между первым и последним значением прогноза:", forecast_diff)
+
+ if forecast_diff > 0:
+ return "Тенденция на период прогноза: Рост"
+ elif forecast_diff < 0:
+ return "Тенденция на период прогноза: Падение"
+ else:
+ return "Тенденция на период прогноза: Стабильность"
+
+# Формирование календаря для США
+year_2023 = 2023
+# Создаем DataFrame с встроенными праздниками для 2023
+holidays_df_2023 = make_holidays_df(year_list=[year_2023], country='US')
+# Преобразуем входные строки в datetime
+holidays_df_2023['ds'] = pd.to_datetime(holidays_df_2023['ds'])
+# Создаем DataFrame с кастомными праздниками для 2024 года
+custom_holidays_2024 = pd.DataFrame({
+ 'holiday': 'custom',
+ 'ds': pd.to_datetime([
+ '2024-01-01', # Новый год
+ '2024-01-15', # День Мартина Лютера Кинга младшего
+ '2024-02-19', # День рождения Дж. Вашингтона (Washington’s Birthday)
+ '2024-03-29', # Страстная пятница (Good Friday)
+ '2024-05-27', # День Памяти (Memorial Day)
+ '2024-06-19', # День национальной независимости | Juneteenth
+ '2024-07-04', # День независимости
+ '2024-09-02', # День труда
+ '2024-11-28', # День Благодарения
+ '2024-12-24', # Рождество
+ ]),
+ 'lower_window': 0,
+ 'upper_window': 1,
+})
+# Объединяем все DataFrame с праздниками
+all_holidays_US = pd.concat([holidays_df_2023, custom_holidays_2024]).drop_duplicates(subset=['ds']).sort_values(by=['ds'])
+# Создаем DataFrame с датами праздников
+holidays_df_US = pd.DataFrame({
+ 'ds': all_holidays_US['ds'],
+ 'holiday': 'holiday',
+})
+
+def ticker(data, holidays_df, text1, text2):
+ data = data
+ data = data.rename(columns={'Date': 'ds', 'Adj Close': 'y'})
+ # Сортируем данные по дате
+ data = data.sort_values(by='ds')
+ # Определяем индекс для разделения
+ split_index = len(data) - period
+
+ # Разделяем данные на обучающую и тестовую выборки
+ full_train_data3 = data.iloc[:split_index].copy()
+ full_test_data3 = data.iloc[split_index:].copy()
+
+ # Удаляем временную зону из столбца ds
+ full_train_data3['ds'] = full_train_data3['ds'].dt.tz_localize(None)
+ full_test_data3['ds'] = full_test_data3['ds'].dt.tz_localize(None)
+ # st.write(full_test_data3)
+
+ # Создаем модель Prophet
+ model = Prophet(interval_width=0.95)
+ model.fit(full_train_data3)
+ # Создаем фрейм для прогноза на тестовых данных, исключая даты праздников
+ last_date = full_test_data3['ds'].max()
+ future = model.make_future_dataframe(periods=full_test_data3.shape[0]+2, freq='B')
+ future = future[~future['ds'].isin(holidays_df['ds'])]
+ forecast_test = model.predict(future)
+ # Создаем фрейм для прогноза на +14 дней после последней даты
+ future_14_days = model.make_future_dataframe(periods=14, freq='B', include_history=False)
+ future_14_days['ds'] = pd.date_range(start=last_date + pd.DateOffset(1), periods=14, freq='B')
+ forecast_14_days = model.predict(future_14_days)
+
+ # Отрисовка графика
+ fig = go.Figure()
+ fig = plot_plotly(model, forecast_test)
+ fig.add_trace(go.Scatter(x=full_test_data3['ds'],
+ y=full_test_data3['y'],
+ mode='markers',
+ marker=dict(color='orchid'),
+ name='Факт тест'))
+ fig.add_trace(go.Scatter(x=forecast_test['ds'].iloc[-period:],
+ y=forecast_test['yhat'].iloc[-period:],
+ mode='lines+markers',
+ marker=dict(color='blue'),
+ name='Прогноз тест'))
+ fig.add_trace(go.Scatter(x=forecast_14_days['ds'], y=forecast_14_days['yhat'], mode='lines+markers', name='Прогноз будущее'))
+ fig.update_layout(title_text=text1, xaxis_rangeslider_visible=True, xaxis_title='', yaxis_title='')
+ fig.update_traces(showlegend=True)
+ st.plotly_chart(fig, use_container_width=True, range_slider_visible=True)
+ # Расчет метрик на тестовой выборке
+ actual_values_test = full_test_data3['y'].values
+ predicted_values_test = forecast_test['yhat'].iloc[-period:].values
+ mape_test = np.mean(np.abs((actual_values_test - predicted_values_test) / actual_values_test)) * 100
+ rmse_test = np.sqrt(mean_squared_error(actual_values_test, predicted_values_test))
+ # Рассчитываем кастомную метрику точности прогноза для 1 дня с учетом весов предыдущих 7 дней
+ forecast_values = forecast_test['yhat'].tail(period).values
+ predicted_value = forecast_values[0] # Выбираем первый предсказанный день из последних 14
+ actual_values = full_test_data3['y'].tail(7).values
+ weights = np.array([1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4])
+ custom_mape = np.dot(weights, np.abs((actual_values - predicted_value) / actual_values)) / np.sum(weights) * 100
+ check = st.checkbox(text2)
+ if check:
+ col1, col2 = st.columns([1, 1])
+ with col1:
+ st.write("**Информация.** \
+ Прогноз составлен на тестовой выборке с возможностью выбора периода до 14 дней. \
+ Дополнительно приведен прогноз для будущего периода с указанием тенденции дельнейшего развития.")
+ st.markdown("**Метрики для тестовой выборки:**")
+ st.write(f"RMSE: {rmse_test:.2f}")
+ st.write(f"MAPE: {mape_test:.2f}%")
+ st.write(f"Weighted MAPE: {custom_mape:.2f}%")
+ # Оценка тренда на первый день
+ trend_evaluation_first_day = evaluate_trend_first_day(forecast_14_days['yhat'].iloc[0], full_test_data3['y'].iloc[-1])
+ st.write(trend_evaluation_first_day)
+ # Оценка тренда на период прогноза
+ trend_evaluation_period = evaluate_trend_period(forecast_14_days[['ds', 'yhat']])
+ st.write(trend_evaluation_period)
+ with col2:
+ forecast_results = pd.DataFrame({
+ 'Дата': forecast_14_days['ds'].iloc[-period:].values,
+ 'Прогноз': forecast_14_days['yhat'].iloc[-period:].values.round(2)
+ })
+ st.dataframe(forecast_results.set_index('Дата'))
+ # fig2 = data.plot_components(future_14_days)
+ # st.write(fig2)
+
+text1 = f'График прогноза для {period} дней по акции {selected_stock}, USD 🇺🇸'
+text2 = f"Результаты прогноза {selected_stock}"
+ticker(data, holidays_df_US, text1, text2)
diff --git "a/pages/3_BiLTSM_\320\237\321\200\320\276\320\263\320\275\320\276\320\267 bitcoin.py" "b/pages/3_BiLTSM_\320\237\321\200\320\276\320\263\320\275\320\276\320\267 bitcoin.py"
new file mode 100644
index 0000000000000000000000000000000000000000..d3bf57b393d46c70af336eb67ae70eed0d2e95c5
--- /dev/null
+++ "b/pages/3_BiLTSM_\320\237\321\200\320\276\320\263\320\275\320\276\320\267 bitcoin.py"
@@ -0,0 +1,142 @@
+import streamlit as st
+import torch
+import torch.nn as nn
+import numpy as np
+import pandas as pd
+import matplotlib.pyplot as plt
+from sklearn.preprocessing import MinMaxScaler
+from datetime import timedelta
+import yfinance as yf
+from model.lstm_model import BiLSTM
+import torch.optim as optim
+
+
+# # Загрузка данных для BTC-USD
+# def load_data():
+# START = "2023-01-01" # Замените на нужную вам дату начала
+# TODAY = "2024-01-01" # Замените на текущую дату или нужную вам дату окончания
+# btc_usdt = yf.download('BTC-USD', START, TODAY)
+# btc_usdt.reset_index(inplace=True)
+# return btc_usdt
+
+# # Загрузка данных для BTC_USDT
+# btc_usdt = load_data()
+
+# Загрузка данных из файла CSV
+data_path = "model/BTC-USD_data.csv"
+btc_usdt = pd.read_csv(data_path)
+
+scaler = MinMaxScaler(feature_range=(0, 1))
+scaled_data = scaler.fit_transform(btc_usdt['Adj Close'].values.reshape(-1, 1))
+
+def rmse(predictions, targets):
+ return np.sqrt(((predictions - targets) ** 2).mean())
+
+def mape(predictions, targets):
+ return np.mean(np.abs((targets - predictions) / targets)) * 100
+
+def weighted_mape(predictions, targets, weights):
+ errors = np.abs(targets - predictions)
+ weighted_errors = errors * weights
+ weighted_mape = np.sum(weighted_errors) / np.sum(np.abs(targets) * weights) * 100
+ return weighted_mape
+
+def create_dataset(data, time_step=1):
+ X, Y = [], []
+ for i in range(len(data)-time_step-1):
+ a = data[i:(i+time_step), 0]
+ X.append(a)
+ Y.append(data[i + time_step, 0])
+ return np.array(X), np.array(Y)
+
+time_step = 14
+
+X, y = create_dataset(scaled_data, time_step)
+
+# Разделяем данные на обучающую и тестовую выборки
+test_size = 14 # 14 дней для теста
+train_size = len(X) - test_size
+X_train, X_test = X[:train_size], X[train_size:]
+y_train, y_test = y[:train_size], y[train_size:]
+
+X_train = torch.Tensor(X_train).unsqueeze(-1) # Добавляем размерность
+X_test = torch.Tensor(X_test).unsqueeze(-1) # Для совместимости с LSTM
+y_train = torch.Tensor(y_train)
+y_test = torch.Tensor(y_test)
+
+# Загрузка весов модели
+weights_path = "model/model_weights.pth"
+input_size = 1
+hidden_size = 128 # Используем тот же размер, что и при обучении
+num_layers = 3 # Используем тот же размер, что и при обучении
+output_size = 1
+
+# Создание BiLSTM модели
+model = BiLSTM(input_size, hidden_size, num_layers, output_size)
+criterion = nn.MSELoss()
+optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
+
+# Загрузка весов
+model.load_state_dict(torch.load(weights_path))
+model.eval()
+
+# Получение предсказаний с помощью загруженной модели
+with torch.no_grad():
+ test_predictions = model(X_test)
+ test_loss = criterion(test_predictions, y_test.view(-1, 1))
+
+ test_predictions = scaler.inverse_transform(test_predictions.numpy())
+ y_test = scaler.inverse_transform(y_test.numpy().reshape(-1, 1))
+ test_rmse = rmse(test_predictions, y_test)
+ test_mape = mape(test_predictions, y_test)
+ weights = np.array([1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4])
+ test_weighted_mape = weighted_mape(test_predictions, y_test, weights)
+
+# Вывод графика и метрик
+st.title("Bitcoin Price Prediction")
+st.write("### Predictions vs Actual (Last 14 Days)")
+
+# Генерация предсказаний для будущих дат
+with torch.no_grad():
+ future_predictions = model(X_test) # Предсказания для тестовой выборки
+ future_predictions = scaler.inverse_transform(future_predictions.numpy())
+
+# Генерация дат для будущих предсказаний
+future_dates = [btc_usdt['Date'].values[-1] + np.timedelta64(i + 1, 'D') for i in range(14)]
+
+# Преобразование предсказаний для будущих дат в формат DataFrame
+future_df = pd.DataFrame({
+ 'Date': future_dates,
+ 'Predicted_Price': future_predictions.flatten()
+})
+
+# Вывод графика предсказаний на будущие даты
+st.line_chart(future_df.set_index('Date')['Predicted_Price'], use_container_width=True)
+st.title("Future Bitcoin Price Predictions")
+
+# Вывод метрик по кнопке
+if st.button("Show Metrics"):
+ st.write("### Test Metrics")
+ st.write(f"**Test Loss:** {test_loss.item():.4f}")
+ st.write(f"**Test RMSE:** {test_rmse:.4f}")
+ st.write(f"**Test MAPE:** {test_mape:.4f}%")
+ st.write(f"**Test Weighted MAPE:** {test_weighted_mape:.4f}%")
+# Вывод графика предсказаний на будущие даты
+st.line_chart(future_df.set_index('Date')['Predicted_Price'], use_container_width=True)
+st.title("Future Bitcoin Price Predictions")
+
+# Вывод метрик
+st.write("### Future Predictions (Next 14 Days)")
+st.write(f"**Average Predicted Price:** {future_df['Predicted_Price'].mean():.2f}")
+st.write(f"**Maximum Predicted Price:** {future_df['Predicted_Price'].max():.2f}")
+st.write(f"**Minimum Predicted Price:** {future_df['Predicted_Price'].min():.2f}")
+
+# Вывод тренда на первый и последний день
+trend_first_day = future_df['Predicted_Price'].iloc[0] - btc_usdt['Adj Close'].iloc[-1]
+trend_last_day = future_df['Predicted_Price'].iloc[-1] - future_df['Predicted_Price'].iloc[0]
+
+trend_first_day_text = "Growth" if trend_first_day > 0 else "Decline" if trend_first_day < 0 else "No trend"
+trend_last_day_text = "Growth" if trend_last_day > 0 else "Decline" if trend_last_day < 0 else "No trend"
+
+st.write(f"**Trend on the First Day:** {trend_first_day_text}")
+st.write(f"**Trend on the Last Day:** {trend_last_day_text}")
\ No newline at end of file
diff --git a/pages/__init__.py b/pages/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6e15142c6d62fcaf829029c4ed68ba54c15d53e1
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,15 @@
+streamlit==1.28.1
+pandas==2.1.2
+yfinance==0.2.35
+plotly==5.18.0
+plotly-express==0.4.1
+numpy==1.26.1
+matplotlib==3.8.1
+matplotlib-inline==0.1.6
+prophet==1.1.5
+scikit-learn==1.3.2
+torch==2.1.1
+torchmetrics==1.2.1
+torchutils==0.0.4
+torchview==0.2.6
+torchvision==0.16.1
\ No newline at end of file