# AI создает хедж-фонд для анализа акций на Python

Этот учебник демонстрирует, как вы можете [построить рабочий процесс AI-агента в Python, который симулирует финансовый хедж-фонд](https://youtu.be/JqTL5r68j28), используя LangChain и API Perplexity Sonar. Большинство агентных рабочих процессов AI полагаются на внешние вызовы инструментов для веб-браузинга, но модель Perplexity Sonar Reasoning включает доступ к интернету в реальном времени в своей улучшенной модели DeepSeek-R1. Код для построения AI

Мы создадим модульный AI конвейер, где специализированные AI агенты получают данные рынка в реальном времени, анализируют настроение, оценивают макроэкономические тенденции, разрабатывают торговую стратегию и оценивают риски.

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

**Полный код под видео**

{% embed url="https://youtu.be/JqTL5r68j28?si=wf5MMG9Y8JeYFYBK" %}

{% hint style="info" %}
**Важное замечание:** Это видео не является финансовой или инвестиционной консультацией. Это образовательное руководство о том, как автоматизировать сбор финансовых данных и использовать AI/LLM модели в Python. Также не следует слепо доверять результатам моделей LLM без критического мышления или экспертных знаний 🧠. LLM всё ещё являются экспериментальной технологией с высоким уровнем ошибок.
{% endhint %}

Среда

```python
# Пример создания окружения с помощью Conda

# Создать новое окружение Conda с Python 3.9
conda create --name ai_hedge_fund python=3.9 -y

# Активировать окружение
conda activate ai_hedge_fund

# Установить необходимые пакеты
pip install langchain==0.3.19 langchain-community==0.3.18 openai==1.65.2 ipykernel==6.29.5
```

**Full Code**

```python
# -------------------- Библиотеки и модули -------------
from langchain import PromptTemplate, LLMChain
from langchain_community.chat_models.perplexity import ChatPerplexity
from langchain.chains import SequentialChain

# -------------------- Инициализация --------------------
# Инициализация API ключа и модели
PPLX_API_KEY = "API KEY GOES HERE"
llm = ChatPerplexity(model="sonar-reasoning",
                     temperature=0.5,
                     pplx_api_key=PPLX_API_KEY)

# -------------------- Определение цепочек --------------------
# 1. Аналитик рыночных данных: Получение финансовых данных
market_data_chain = LLMChain(
    llm=llm,
    prompt=PromptTemplate(
        input_variables=["ticker"],
        template=(
            "📈 Для {ticker} предоставьте подробные и актуальные финансовые данные. Включите текущую цену акций, "
            "объем, ключевые финансовые коэффициенты (например, P/E, P/B, дивидендная доходность), недавние тренды цен и соответствующие рыночные индикаторы."
        )
    ),
    output_key="market_data"
)

# 2. Аналитик настроений: Анализ настроений в новостях и социальных сетях
sentiment_chain = LLMChain(
    llm=llm,
    prompt=PromptTemplate(
        input_variables=["ticker"],
        template=(
            "📰 Для {ticker} проанализируйте недавние новостные статьи, посты в социальных сетях и комментарии экспертов. "
            "Резюмируйте преобладающее настроение, выделите ключевые события и отметьте возникающие тренды, которые могут повлиять на акции."
        )
    ),
    output_key="sentiment_analysis"
)

# 3. Макроэкономический аналитик: Оценка макроэкономических условий
macro_analysis_chain = LLMChain(
    llm=llm,
    prompt=PromptTemplate(
        input_variables=["ticker"],
        template=(
            "🌐 Для {ticker} проанализируйте текущую макроэкономическую среду. "
            "Включите ключевые индикаторы, такие как рост ВВП, уровни инфляции, процентные ставки, тренды безработицы "
            "и политику центральных банков. Резюмируйте, как эти факторы могут повлиять на общий рынок и актив."
        )
    ),
    output_key="macro_analysis"
)

# 4. Квантовый стратег: Разработка торговой стратегии
strategy_chain = LLMChain(
    llm=llm,
    prompt=PromptTemplate(
        input_variables=["market_data", "sentiment_analysis", "macro_analysis"],
        template=(
            "📊 Используя подробные рыночные данные:\n{market_data}\n"
            "анализ настроений:\n{sentiment_analysis}\n"
            "и макроэкономический анализ:\n{macro_analysis}\n"
            "разработайте сложную торговую стратегию. Опишите четкое распределение активов, укажите точки входа и выхода, "
            "опишите меры управления рисками и предоставьте ожидаемые доходы. Если применимо, включите алгоритмические сигналы."
        )
    ),
    output_key="strategy"
)

# 5. Управляющий рисками: Оценка рисков стратегии
risk_chain = LLMChain(
    llm=llm,
    prompt=PromptTemplate(
        input_variables=["strategy"],
        template=(
            "⚠️ Оцените следующую торговую стратегию:\n{strategy}\n"
            "Выявите потенциальные риски, такие как волатильность рынка, проблемы с ликвидностью или неожиданные рыночные события. "
            "Резюмируйте свою оценку рисков в 4 кратких пунктах и укажите в последнем пункте, соответствует ли стратегия допустимому уровню риска."
        )
    ),
    output_key="risk_assessment"
)

# -------------------- Последовательная оркестровка --------------------
sequential_agent = SequentialChain(
    chains=[market_data_chain, sentiment_chain, macro_analysis_chain, strategy_chain, risk_chain],
    input_variables=["ticker"],
    output_variables=["market_data", "sentiment_analysis", "macro_analysis", "strategy", "risk_assessment"],
    verbose=True
)

# -------------------- Запуск анализа --------------------
def run_ai_hedge_fund(ticker: str) -> None:
    result = sequential_agent({"ticker": ticker})

    print("\n======== Результаты анализа AI Hedge Fund ========\n")

    print("📈 Полученные рыночные данные:")
    print("--------------------------------------------------")
    print(result["market_data"], "\n")

    print("📰 Анализ настроений на рынке:")
    print("--------------------------------------------------")
    print(result["sentiment_analysis"], "\n")

    print("🌐 Макроэкономический анализ:")
    print("--------------------------------------------------")
    print(result["macro_analysis"], "\n")

    print("📊 Разработанная торговая стратегия:")
    print("--------------------------------------------------")
    print(result["strategy"], "\n")

    print("⚠️ Оценка рисков:")
    print("--------------------------------------------------")
    print(result["risk_assessment"], "\n")

    print("==============================================\n")

# Запуск анализа для заданного тикера (например, "MSFT")
run_ai_hedge_fund("MSFT")
```

**Discussion about this post**
