Як AI-агент змінює фінансовий аналіз?
Ми розробляємо AI-агентів, які автоматизують фінансовий аналіз: від збору даних до формування звітів з рекомендаціями. Наш досвід — понад 10 проєктів у фінансовому секторі. Комбінація Text-to-SQL для роботи з даними, Code Interpreter для розрахунків і LLM для інтерпретації робить агента здатним відповідати на складні аналітичні питання без участі фінансиста. Звернувшись до нас, ви отримаєте готове рішення, інтегроване з вашою ERP. Гарантуємо точність розрахунків за узгодженими метриками.
Які проблеми вирішує фінансовий AI-агент?
Фінансові аналітики витрачають до 40% часу на ручний збір даних і перевірку формул. Помилки в розрахунках EBITDA або ROE можуть коштувати мільйони. Наш агент використовує Text-to-SQL для прямого доступу до БД та Code Interpreter для точних обчислень — виключаючи людський фактор. Крім того, агент автоматично виявляє аномалії за допомогою статистичних методів (z-score), що дозволяє виявляти проблеми до того, як вони вплинуть на звітність.
Чому AI-агент точніший за ручний аналіз?
У ручному аналізі помилки розрахунків залежать від кваліфікації співробітника. AI-агент використовує визначені формули та верифікує кожен крок через інструменти. Наприклад, при план-факт аналізі агент виконує SQL-запити, обчислює метрики за строгими формулами та декомпозує відхилення на цінові та об'ємні ефекти. Результат: похибка розрахунків прагне до нуля, а час підготовки скорочується в 4–8 разів.
Як ми проектуємо та реалізуємо агента
Використовуємо GPT-4o з функціями tool use, Hugging Face для ембеддінгів, pgvector для семантичного пошуку по фінансовій документації. Для розгортання — vLLM або SageMaker. Кожен агент проходить верифікацію розрахунків з фінансовим відділом. В основі лежить системний промпт з методиками факторного аналізу (price/volume effect) та confidence intervals.
Що входить у розробку AI-агента під ключ?
- Інтеграція з джерелами даних (PostgreSQL, 1С, ERP)
- Набір кастомних інструментів (SQL-функції, розрахунок метрик)
- Системний промпт та налаштування few-shot прикладів
- Інтерфейс для взаємодії (веб-чат або API)
- Документація та навчання фінансової команди
- Гарантія на точність розрахунків за узгодженими метриками
Етапи розробки
| Етап | Що робимо | Результат |
|---|---|---|
| Аналітика | Вивчаємо поточні процеси, джерела даних, вимоги до звітності | Технічне завдання |
| Проектування | Проектуємо архітектуру: інструменти, промпти, інтеграції | Архітектурна документація |
| Розробка | Реалізуємо SQL-шар, інструменти розрахунку, системний промпт | Робочий прототип |
| Тестування | Верифікуємо на історичних даних, коригуємо промпти | Звіт про точність |
| Деплой та навчання | Розгортаємо в середовищі замовника, навчаємо користувачів | Доступ до агента, інструкція |
Практичний кейс: план-факт аналіз виробничої компанії (наш досвід)
Задача: щомісячний план-факт аналіз P&L з розбивкою по продуктових лінійках та регіонах. Раніше займав 2 дні у фінансового аналітика.
Рішення: наш агент з інструментами запитів до PostgreSQL, розрахунку метрик та побудови моделей.
Приклад взаємодії:
Запит: "Проаналізуй виконання бюджету по виручці за березень. Вияви причини відхилень."
Агент виконав послідовність викликів: SQL-запит, розрахунок метрик, декомпозиція відхилень, генерація waterfall. Результат: "Загальне відхилення -8.3M грн (-4.2%). Основні фактори: зниження обсягу продажів продукту А (-5.1M, об'ємний ефект), частково компенсовано зростанням цін на продукт Б (+2.1M, ціновий ефект). Регіон ЦФО — єдиний з перевиконанням (+1.8M), Урал — найбільше відставання (-6.2M)..."
Результати впровадження:
- Час підготовки звіту скоротився з 2 днів до 3.5 годин
- Покриття показників ідентичне ручному аналізу
- Якість інтерпретацій (оцінка CFO) — 4.1/5.0
- Економія на оплаті понаднормових аналітиків — до 2.5M грн на рік
Порівняння: ручний аналіз проти AI-агента
| Параметр | Ручний аналіз | AI-агент |
|---|---|---|
| Час на звіт | 2 дні | 3.5 години |
| Точність розрахунків | Залежить від кваліфікації | Визначені формули |
| Виявлення аномалій | Ускладнене | Автоматичне (Z-score) |
| Масштабованість | Низька | Висока |
Технічна деталізація інструментів
Інструменти фінансового агента
from openai import OpenAI
from pydantic import BaseModel
from typing import Literal, Optional
import pandas as pd
import json
client = OpenAI()
financial_tools = [
{
"type": "function",
"function": {
"name": "query_financial_database",
"description": "Запрос к финансовой базе данных (выручка, расходы, бюджет, факт)",
"parameters": {
"type": "object",
"properties": {
"sql_query": {"type": "string"},
"description": {"type": "string"},
},
"required": ["sql_query"]
}
}
},
{
"type": "function",
"function": {
"name": "calculate_financial_metrics",
"description": "Рассчитать финансовые показатели",
"parameters": {
"type": "object",
"properties": {
"metric": {
"type": "string",
"enum": ["EBITDA", "ROE", "ROA", "ROIC", "NPV", "IRR", "payback_period",
"gross_margin", "operating_margin", "net_margin", "current_ratio",
"debt_to_equity", "working_capital"]
},
"input_data": {"type": "object"},
},
"required": ["metric", "input_data"]
}
}
},
{
"type": "function",
"function": {
"name": "build_financial_model",
"description": "Построить финансовую модель (DCF, бюджет, P&L прогноз)",
"parameters": {
"type": "object",
"properties": {
"model_type": {"type": "string", "enum": ["dcf", "budget_variance", "pnl_forecast"]},
"parameters": {"type": "object"},
},
"required": ["model_type", "parameters"]
}
}
},
{
"type": "function",
"function": {
"name": "generate_financial_report",
"description": "Сформировать финансовый отчёт",
"parameters": {
"type": "object",
"properties": {
"report_type": {"type": "string"},
"period": {"type": "string"},
"data": {"type": "object"},
},
"required": ["report_type", "period"]
}
}
},
]
def calculate_financial_metrics(metric: str, input_data: dict) -> str:
"""Точный расчёт финансовых метрик"""
calculators = {
"EBITDA": lambda d: d["revenue"] - d["cogs"] - d["opex"] + d.get("da", 0),
"gross_margin": lambda d: (d["revenue"] - d["cogs"]) / d["revenue"] * 100,
"operating_margin": lambda d: d["ebit"] / d["revenue"] * 100,
"ROE": lambda d: d["net_income"] / d["equity"] * 100,
"ROA": lambda d: d["net_income"] / d["total_assets"] * 100,
"current_ratio": lambda d: d["current_assets"] / d["current_liabilities"],
"debt_to_equity": lambda d: d["total_debt"] / d["equity"],
}
calculator = calculators.get(metric)
if not calculator:
return f"Metric {metric} not implemented"
try:
result = calculator(input_data)
return json.dumps({
"metric": metric,
"result": round(result, 4),
"unit": "%" if metric in ["gross_margin", "operating_margin", "ROE", "ROA"] else "x",
})
except KeyError as e:
return f"Missing required field: {e}"
except ZeroDivisionError:
return "Division by zero: check denominator values"
Агент план-факт аналізу
FINANCIAL_ANALYST_PROMPT = """Ты — финансовый аналитик CFO-уровня.
Твои задачи:
1. Анализировать финансовые данные точно и методологически корректно
2. Использовать инструменты для расчётов — никогда не считай в уме
3. При отклонениях план/факт — выявлять причины (price effect, volume effect, mix)
4. Давать конкретные рекомендации, а не абстрактные наблюдения
5. Указывать на аномалии и потенциальные риски
Методология:
- При анализе P&L разбивай отклонения на ценовые и объёмные
- При оценке эффективности используй сравнение со стандартными отраслевыми бенчмарками
- При прогнозах — указывай confidence interval и ключевые допущения"""
def financial_analysis_agent(question: str, context_data: dict = None) -> str:
messages = [
{"role": "system", "content": FINANCIAL_ANALYST_PROMPT},
{"role": "user", "content": question},
]
if context_data:
messages.insert(1, {
"role": "system",
"content": f"Контекст данных:\n{json.dumps(context_data, ensure_ascii=False, indent=2)}"
})
# Агентный цикл
for _ in range(8):
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
tools=financial_tools,
)
msg = response.choices[0].message
messages.append(msg)
if not msg.tool_calls:
return msg.content
for tool_call in msg.tool_calls:
tool_name = tool_call.function.name
tool_args = json.loads(tool_call.function.arguments)
result = execute_financial_tool(tool_name, tool_args)
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": result,
})
Автоматичне виявлення аномалій
def detect_anomalies_in_data(financial_data: pd.DataFrame) -> list[dict]:
"""Статистическое выявление аномалий перед передачей в LLM"""
anomalies = []
for column in financial_data.select_dtypes(include="number").columns:
mean = financial_data[column].mean()
std = financial_data[column].std()
z_scores = (financial_data[column] - mean) / std
outliers = financial_data[abs(z_scores) > 2.5]
if not outliers.empty:
for idx, row in outliers.iterrows():
anomalies.append({
"column": column,
"value": row[column],
"z_score": round(z_scores[idx], 2),
"period": str(idx),
})
return anomalies
Терміни та вартість
- Проектування: 1 тиждень
- Розробка: 2–3 тижні
- Інтеграція та тестування: 2–3 тижні
- Верифікація з фінансистами: 2 тижні
- Разом: 7–10 тижнів. Вартість розраховується індивідуально в залежності від обсягу даних та складності інтеграції. Зв'яжіться з нами для оцінки вашого проєкту.
Замовте розробку AI-агента під ваші завдання. Отримайте консультацію — оцінимо ваш проєкт і запропонуємо оптимальне рішення.







