Руководство по программированию для создания инструмента финансовой аналитики
Извлечение и анализ данных о фондовом рынке являются ключом к обоснованному принятию решений в финансовой сфере. Данный учебник предлагает подробное руководство по созданию интегрированного инструмента финансового анализа и отчетности на Python.
Основные этапы проекта
Мы изучим, как извлекать исторические рыночные данные с Yahoo Finance и вычислять важные технические индикаторы, такие как простые скользящие средние (SMA), полосы Боллинджера, MACD и RSI. В дальнейшем вы научитесь создавать наглядные визуализации и компилировать их в пользовательские многостраничные PDF отчеты.
Импорт необходимых библиотек
Мы используем следующие библиотеки Python для анализа и визуализации финансовых данных:
import yfinance as yf import pandas as pd import matplotlib.pyplot as plt import numpy as np from matplotlib.backends.backend_pdf import PdfPages
Вычисление технических индикаторов
Создаем функцию для вычисления ключевых технических индикаторов:
def compute_indicators(df): df['SMA20'] = df['Close'].rolling(window=20).mean() df['SMA50'] = df['Close'].rolling(window=50).mean() df['STD20'] = df['Close'].rolling(window=20).std() df['UpperBand'] = df['SMA20'] + 2 * df['STD20'] df['LowerBand'] = df['SMA20'] - 2 * df['STD20'] df['EMA12'] = df['Close'].ewm(span=12, adjust=False).mean() df['EMA26'] = df['Close'].ewm(span=26, adjust=False).mean() df['MACD'] = df['EMA12'] - df['EMA26'] df['Signal'] = df['MACD'].ewm(span=9, adjust=False).mean() delta = df['Close'].diff() gain = delta.where(delta > 0, 0) loss = -delta.where(delta < 0, 0) avg_gain = gain.rolling(window=14).mean() avg_loss = loss.rolling(window=14).mean() rs = avg_gain / avg_loss df['RSI'] = 100 - (100 / (1 + rs)) return df
Создание обложки PDF отчета
Функция для создания визуально привлекательной обложки:
def create_cover_page(pdf): fig = plt.figure(figsize=(11.69, 8.27)) plt.text(0.5, 0.7, "Финансовый аналитический отчет", fontsize=24, ha='center') plt.text(0.5, 0.62, "Анализ 5 акций с Yahoo Finance", fontsize=16, ha='center') plt.text(0.5, 0.5, "Включает технические индикаторы: SMA, Полосы Боллинджера, MACD, RSI", fontsize=12, ha='center') plt.text(0.5, 0.4, "Сгенерировано с помощью Python и matplotlib", fontsize=10, ha='center') plt.axis('off') pdf.savefig(fig) plt.close(fig)
Генерация графиков
Мы создадим функции для генерации графиков цен и индикаторов:
def plot_price_chart(ticker, df): fig, ax = plt.subplots(figsize=(14, 7)) plt.plot(df['Close'], label='Цена закрытия', linewidth=1.5) plt.plot(df['SMA20'], label='SMA (20)', linewidth=1.2) plt.plot(df['SMA50'], label='SMA (50)', linewidth=1.2) plt.plot(df['UpperBand'], label='Верхняя полоса Боллинджера', linestyle='--') plt.plot(df['LowerBand'], label='Нижняя полоса Боллинджера', linestyle='--') plt.fill_between(df.index, df['LowerBand'], df['UpperBand'], color='lightgray', alpha=0.3) plt.title(f'{ticker}: Цена и скользящие средние с полосами Боллинджера') plt.xlabel('Дата') plt.ylabel('Цена') plt.legend() return fig
Основная функция
Основная функция для выполнения всего процесса:
def main(): tickers = [] for i in range(5): ticker = input("Введите тикер: ").upper().strip() tickers.append(ticker) pdf_filename = "financial_report.pdf" with PdfPages(pdf_filename) as pdf: create_cover_page(pdf) for ticker in tickers: print(f"Загрузка данных для тикера {ticker} с Yahoo Finance...") df = yf.download(ticker, period='1y') if df.empty: print(f"Данные для тикера {ticker} не найдены. Пропускаем...") continue df = compute_indicators(df) fig_price = plot_price_chart(ticker, df) pdf.savefig(fig_price) plt.close(fig_price) # Здесь могут быть другие графики (MACD, RSI) print(f"PDF отчет создан и сохранен как '{pdf_filename}'.")
Заключение
Мы продемонстрировали метод автоматизации финансового анализа с использованием Python. Вы узнали, как извлекать данные, вычислять ключевые технические индикаторы и генерировать визуальные отчеты в формате PDF. Этот интегрированный подход упрощает процесс анализа и предоставляет мощные инструменты для визуализации рыночных трендов и мониторинга работы акций.
Автоматизация процессов
Изучите, какие процессы можно автоматизировать, и найдите моменты в взаимодействии с клиентами, где искусственный интеллект может добавить максимальную ценность. Определите важные KPI, чтобы убедиться, что ваши инвестиции в AI действительно положительно влияют на бизнес.
Контактная информация
Если вам нужна помощь в управлении AI в бизнесе, свяжитесь с нами по адресу hello@itinai.ru. Подпишитесь на наш Telegram, чтобы быть в курсе последних новостей AI.
Для примера AI-решения посмотрите на продажный бот, разработанный для автоматизации общения с клиентами.