С момента своего основания Джеффом Безосом Amazon стала крупнейшей компанией в области электронной коммерции, а с целым рядом компаний под ее эгидой стала гигантом в самых разных отраслях. Теперь проведем анализ акций на Amazon.

Первое, что мы должны сделать, это импортировать библиотеки, которые мы будем использовать. Во-первых, давайте начнем импортировать pandas, Yahoo Finance API, datetime и plotly для создания графиков. После того, как мы импортируем библиотеки, мы импортируем дату и временную дельту из библиотеки datetime и graph_objects и выражаем из библиотеки plotly.

import pandas as pd
import yfinance as yf
import datetime
from datetime import date, timedelta
import plotly.graph_objects as go
import plotly.express as px

Поскольку мы импортировали все необходимые библиотеки для нашего проекта, теперь мы будем собирать данные об акциях Amazon (AMZN) через yahoo Finance API и распечатывать заголовок данных.

today = date.today()

d1 = today.strftime("%Y-%m-%d")
end_date = d1
d2 = date.today() - timedelta(days=365)
d1 = d2.strftime("%Y-%m-%d")
start_date = d2

data = yf.download('AMZN',
                   start=start_date,
                   end=end_date,
                   progress=False)

data["Date"] = data.index
data = data[["Date", "Open", "High", "Low", "Close", "Adj Close", "Volume"]]
data.reset_index(drop=True, inplace=True)
print(data.head())

Поскольку мы распечатали все данные, нам нужно визуализировать их, чтобы мы могли понять, что данные нам говорят. Итак, неплохо начать визуализацию со свечного графика:

figure = go.Figure(data=[go.Candlestick(x=data["Date"],
                                        open=data["Open"], high=data["High"],
                                        low=data["Low"], close=data["Close"])])
figure.update_layout(title = "Amazon Stock Price Analysis",
                     xaxis_rangeslider_visible = False)
figure.show()

Гистограммы — это простые инструменты, понятные большинству людей. Теперь давайте создадим гистограмму:

figure = px.bar(data, x="Date", y="Close")
figure.show()

Гистограммы помогают нам понять поведение цены. Вы можете не только помочь нам понять поведение цен, но и упростить анализ с помощью линейных графиков:

figure = px.line(data, x='Date', y='Close',
                 title='Stock Market Analysis with Rangeslider')
figure.update_xaxes(rangeslider_visible=True)
figure.show()

В отличие от гистограммы, линейный график имеет ползунок внизу, чтобы помочь нам лучше понять определенный период. Эти слайды помогают нам понять общую картину поведения цены. Чтобы упростить анализ, давайте добавим различные кнопки для изучения нашего графика:

figure.update_xaxes(
    rangeselector=dict(
        buttons=list([
            dict(count=1, label="1m", step="month", stepmode="backward"),
            dict(count=6, label="6m", step="month", stepmode="backward"),
            dict(count=3, label="3m", step="month", stepmode="backward"),
            dict(count=1, label="1y", step="year", stepmode="backward"),
            dict(step="all")
        ])
    )
)
figure.show()

Линейные графики и свечи хороши для понимания поведения цены. Но недостатком является то, что он не делится на периоды, особенно когда не добавляются промежутки выходного дня. Хорошая новость заключается в том, что вы можете использовать диаграммы рассеяния и удалять пробелы в выходные дни, чтобы сосредоточиться на буднях.

figure = px.scatter(data, x='Date', y='Close', range_x=['2021-07-12', '2022-07-11'],
                    title="Stock Market Analysis by Hiding Weekend Gaps")
figure.update_xaxes(
    rangebreaks=[dict(bounds=["sat", "sun"])]
)

figure.show()