Прогнозирование будущего с помощью исторических данных и передовых API-интерфейсов

Принятие обоснованных решений на современном быстро меняющемся финансовом рынке, основанном на данных, требует доступа к точной и актуальной информации. Прогнозирование временных рядов, которое включает оценку будущих значений на основе тенденций исторических данных, является важным элементом финансового анализа. API разработчика для подготовки к финансовому моделированию предоставляет мощный набор инструментов для получения финансовых данных и выполнения прогнозирования временных рядов, которые помогут в этом начинании. FMP предоставляет богатую коллекцию инструментов для доступа и использования финансовых данных для ряда вариантов использования, включая API и наборы данных.

FinancialModelingPrep — это платформа, предоставляющая инвесторам, аналитикам и разработчикам полную коллекцию финансовых данных и инструментов. Основная цель платформы — демократизировать доступ к финансовым данным, которые ранее были доступны исключительно крупным инвесторам. FMP достигает этого с помощью удобных API и наборов данных, позволяя отдельным лицам и организациям любого размера принимать обоснованные финансовые решения.

Получение ключа API FMP

Чтобы использовать подготовку к финансовому моделированию, вам необходимо создать учетную запись и сгенерировать API. FMP предоставляет бесплатный API, который вы можете использовать для его тестирования, и он может получать данные только из США. В то время как премиум-версии API имеют больше возможностей и доступны по минимальной цене. Ознакомиться с возможностями можно здесь.

Лично я предлагаю выбрать корпоративную версию, потому что ее можно использовать в коммерческих целях и конечную точку премиум-класса с историческими данными за 30 лет, но вы можете выбрать версию, которая соответствует вашим требованиям. Вы можете использовать ссылку, приведенную ниже, чтобы создать свою учетную запись и получить ключ API.



Понимание API разработчика для подготовки к финансовому моделированию

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

Простота API — одно из его наиболее заметных преимуществ. Разработчики могут выполнять простые HTTP-запросы для доступа к финансовым данным в различных форматах, таких как JSON или CSV. Эти данные впоследствии могут быть использованы для различных целей: от создания интерактивных финансовых панелей до проведения углубленных количественных исследований.

Доступ и загрузка данных

Чтобы использовать API разработчика FinancialModelingPrep, необходимо сначала создать учетную запись и получить ключ API. Этот ключ используется для проверки ваших запросов и подтверждения того, что вы имеете право на доступ к данным. Вы можете начать отправлять запросы к различным конечным точкам, как только у вас будет ключ API.

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

import requests
from urllib.request import urlopen
import certifi
import json
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# Define the base URL and API key
base_url = 'https://financialmodelingprep.com/api/v3'
api_key = '<Use Your API Key>'

symbol = 'MSFT'

stock_data = f'{base_url}/historical-chart/1day/{symbol}?apikey={api_key}'

response = urlopen(stock_data, cafile=certifi.where())
data = response.read().decode("utf-8")
json.loads(data)

Прогнозирование временных рядов с помощью данных API

Теперь, когда мы получили данные из FMP API, мы можем работать над созданием модели прогнозирования временных рядов. Мы создадим модель LSTM, которая будет прогнозировать будущие цены на акции.

Начнем с форматирования данных.

Форматирование данных

msft_data = json.loads(data)
date = [entry['date'].split()[0] for entry in msft_data][::-1]
open_prices = [entry['open'] for entry in msft_data][::-1]
low_prices = [entry['low'] for entry in msft_data][::-1]
high_prices = [entry['high'] for entry in msft_data][::-1]
close_prices = [entry['close'] for entry in msft_data][::-1]

# Creating Dataframe
dict1 = {'Date': date,
         'Open': open_prices,
         'High': high_prices,
         'Low': low_prices,
         'Close': close_prices}
df = pd.DataFrame(dict1)
df.head()

from sklearn.preprocessing import MinMaxScaler

# Create a scaler object
scaler = MinMaxScaler()

# Fit the scaler to the data and transform the data
data = scaler.fit_transform(df['Close'].values.reshape(-1, 1))


def create_sequences(data, lookback=60):
    X, y = [], []
    for i in range(len(data)-lookback-1):
        X.append(data[i:(i+lookback), 0])
        y.append(data[i+lookback, 0])
    return np.array(X), np.array(y)

Теперь, когда мы отформатировали данные, мы определим нашу модель и начнем ее обучение.

train_size = int(len(data) * 0.8)
test_size = len(data) - train_size
train_data, test_data = data[0:train_size,:], data[train_size:len(data),:]

from keras.models import Sequential
from keras.layers import Dense, LSTM
lookback=60

# Define the LSTM model
model = Sequential()
model.add(LSTM(50, input_shape=(lookback, 1)))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')


# Reshape the training data to the format expected by LSTM
X_train, y_train = create_sequences(train_data, lookback)
X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))

# Train the LSTM model
model.fit(X_train, y_train, epochs=10, batch_size=32)

Прогнозирование цен с использованием модели

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

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

# Create sequences of data from the testing set
X_test, y_test = create_sequences(test_data, lookback)
X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1))

#Make predictions on the testing set
y_pred = model.predict(X_test)

#Inverse transform the predicted and actual values
y_pred = scaler.inverse_transform(y_pred)
y_test = scaler.inverse_transform([y_test])

#Calculate the root mean squared error
rmse = np.sqrt(np.mean((y_pred - y_test)**2))


temp = 0
df['Pred'] = np.nan
for i in range(len(data)-len(y_pred.reshape(-1)), len(data)):
  df['Pred'].iloc[i]=y_pred.reshape(-1)[temp]
  temp += 1

import plotly.express as px

fig = px.line(df[3000:], x="Date", y=['Close', 'Pred'])
fig.show()

  1. Основной вывод, который мы сделали из этого, заключается в том, что с 2023 года мы наблюдаем тенденцию к росту.
  2. С 2020 года мы наблюдаем высокую волатильность, когда цена акций меняется вверх и вниз чаще, чем в период до 2020 года.
  3. Мы можем наблюдать отклонение +/- 1% от первоначальной цены, что не так уж и велико и может быть надежным.

Заключение

Включение прогнозирования временных рядов в финансовый анализ может дать полезную информацию для принятия стратегических решений. API разработчика FinancialModelingPrep предоставляет простой интерфейс для доступа к финансовым данным и реализации моделей прогнозирования. Аналитики и разработчики могут получить конкурентное преимущество в сложном финансовом секторе, используя возможности исторических данных и прогнозного моделирования. Однако крайне важно подчеркнуть, что финансовые рынки по своей сути непредсказуемы, и ко всем прогнозам следует относиться с осторожностью.

Подпишитесь на ДДИнтел Здесь.

DDIntel содержит наиболее примечательные фрагменты нашего основного сайта и нашей популярной публикации DDI Medium. Посетите нас, чтобы увидеть более содержательную работу нашего сообщества.

Зарегистрируйтесь на AItoolverse (альфа), чтобы получить 50 DDIN

Поддержите серию DDI AI Art: https://heartq.net/collections/ddi-ai-art-series

Присоединяйтесь к нашей сети здесь: https://datadriveninvestor.com/collaborate

Следуйте за нами в LinkedIn, Twitter, YouTube и Facebook.