Этот учебник демонстрирует, как вы можете построить рабочий процесс AI-агента в Python, который симулирует финансовый хедж-фонд, используя LangChain и API Perplexity Sonar. Большинство агентных рабочих процессов AI полагаются на внешние вызовы инструментов для веб-браузинга, но модель Perplexity Sonar Reasoning включает доступ к интернету в реальном времени в своей улучшенной модели DeepSeek-R1. Код для построения AI
Мы создадим модульный AI конвейер, где специализированные AI агенты получают данные рынка в реальном времени, анализируют настроение, оценивают макроэкономические тенденции, разрабатывают торговую стратегию и оценивают риски.
Этот рабочий процесс — только начало. Вы можете расширить его, интегрировав альтернативные источники данных, уточнив инвестиционный тезис и добавив дополнительных AI-агентов, которые имитируют других типов финансовых аналитиков. Также можно автоматизировать этот код для быстрого составления инвестиционных стратегий для всего портфеля акций
Полный код под видео
Важное замечание: Это видео не является финансовой или инвестиционной консультацией. Это образовательное руководство о том, как автоматизировать сбор финансовых данных и использовать AI/LLM модели в Python. Также не следует слепо доверять результатам моделей LLM без критического мышления или экспертных знаний 🧠. LLM всё ещё являются экспериментальной технологией с высоким уровнем ошибок.
Среда
# Пример создания окружения с помощью 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
# -------------------- Библиотеки и модули -------------
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")