itsJB's picture
Upload 2 files
0132af7 verified
import os
import warnings
from crewai import Agent, Task, Crew
from crewai_tools import ScrapeWebsiteTool, SerperDevTool
from crewai import Crew, Process
from langchain_openai import ChatOpenAI
from dotenv import load_dotenv
load_dotenv()
warnings.filterwarnings('ignore')
SERPER_API_KEY = os.getenv('SERPER_API_KEY')
SAMBAVERSE_API_KEY = os.getenv('SAMBANOVA_API_KEY')
SAMBANOVA_API_URL = "https://api.sambanova.ai/v1"
search_tool = SerperDevTool()
scrape_tool = ScrapeWebsiteTool()
llm = ChatOpenAI(
model="Meta-Llama-3.1-8B-Instruct-8k",
temperature=0.5,
max_retries=2,
base_url=SAMBANOVA_API_URL,
api_key=SAMBAVERSE_API_KEY,
)
def crew_creator(stock_selection):
# data_analyst_agent = Agent(
# role="Data Analyst",
# goal="Monitor and analyze market data in real-time "
# "to identify trends and predict market movements.",
# backstory="Specializing in financial markets, this agent "
# "uses statistical modeling and machine learning "
# "to provide crucial insights. With a knack for data, "
# "the Data Analyst Agent is the cornerstone for "
# "informing trading decisions.",
# verbose=True,
# allow_delegation=True,
# tools = [scrape_tool, search_tool],
# llm=llm,
# )
trading_strategy_agent = Agent(
role="Trading Strategy Developer",
goal="Develop and test various trading strategies based "
"on insights from the Data Analyst Agent.",
backstory="Equipped with a deep understanding of financial "
"markets and quantitative analysis, this agent "
"devises and refines trading strategies. It evaluates "
"the performance of different approaches to determine "
"the most profitable and risk-averse options.",
verbose=True,
allow_delegation=True,
tools = [scrape_tool, search_tool],
llm=llm,
)
# execution_agent = Agent(
# role="Trade Advisor",
# goal="Suggest optimal trade execution strategies "
# "based on approved trading strategies.",
# backstory="This agent specializes in analyzing the timing, price, "
# "and logistical details of potential trades. By evaluating "
# "these factors, it provides well-founded suggestions for "
# "when and how trades should be executed to maximize "
# "efficiency and adherence to strategy.",
# verbose=True,
# allow_delegation=True,
# tools = [scrape_tool, search_tool],
# llm=llm,
# )
# risk_management_agent = Agent(
# role="Risk Advisor",
# goal="Evaluate and provide insights on the risks "
# "associated with potential trading activities.",
# backstory="Armed with a deep understanding of risk assessment models "
# "and market dynamics, this agent scrutinizes the potential "
# "risks of proposed trades. It offers a detailed analysis of "
# "risk exposure and suggests safeguards to ensure that "
# "trading activities align with the firm’s risk tolerance.",
# verbose=True,
# allow_delegation=True,
# tools = [scrape_tool, search_tool],
# llm=llm,
# )
# Task for Data Analyst Agent: Analyze Market Data
# data_analysis_task = Task(
# description=(
# "Continuously monitor and analyze market data for "
# "the selected stock ({stock_selection}). "
# "Use statistical modeling and machine learning to "
# "identify trends and predict market movements."
# ),
# expected_output=(
# "Insights and alerts about significant market "
# "opportunities or threats for {stock_selection}."
# ),
# agent=data_analyst_agent,
# )
# Task for Trading Strategy Agent: Develop Trading Strategies
strategy_development_task = Task(
description=(
"Develop and refine trading strategies based on "
"the insights from the Data Analyst and "
# "user-defined risk tolerance ({risk_tolerance}). "
# "Consider trading preferences ({trading_strategy_preference})."
),
expected_output=(
"A set of potential trading strategies for {stock_selection} "
"that align with the user's risk tolerance."
),
agent=trading_strategy_agent,
)
# Task for Trade Advisor Agent: Plan Trade Execution
# execution_planning_task = Task(
# description=(
# "Analyze approved trading strategies to determine the "
# "best execution methods for {stock_selection}, "
# "considering current market conditions and optimal pricing."
# ),
# expected_output=(
# "Detailed execution plans suggesting how and when to "
# "execute trades for {stock_selection}."
# ),
# agent=execution_agent,
# )
# Task for Risk Advisor Agent: Assess Trading Risks
# risk_assessment_task = Task(
# description=(
# "Evaluate the risks associated with the proposed trading "
# "strategies and execution plans for {stock_selection}. "
# "Provide a detailed analysis of potential risks "
# "and suggest mitigation strategies."
# ),
# expected_output=(
# "A comprehensive risk analysis report detailing potential "
# "risks and mitigation recommendations for {stock_selection}."
# ),
# agent=risk_management_agent,
# )
# Define the crew with agents and tasks
financial_trading_crew = Crew(
agents=[
# data_analyst_agent,
trading_strategy_agent,
# execution_agent,
# risk_management_agent
],
tasks=[
# data_analysis_task,
strategy_development_task,
# execution_planning_task,
# risk_assessment_task
],
manager_llm = llm,
process=Process.sequential,
verbose=True,
)
result = financial_trading_crew.kickoff(inputs={
'stock_selection': stock_selection,
# 'initial_capital': initial_capital,
# 'risk_tolerance': risk_tolerance,
# 'trading_strategy_preference': trading_strategy_preference,
# 'news_impact_consideration': news_impact_consideration
})
return str(result)
# print(result)