itsJB's picture
Upload 3 files
897b38c verified
raw
history blame
7.35 kB
import os
import warnings
from crewai import Agent, Task, Crew
from crewai_tools import ScrapeWebsiteTool, SerperDevTool
from crewai import Crew, Process
from langchain_groq import ChatGroq
from dotenv import load_dotenv
load_dotenv()
warnings.filterwarnings('ignore')
SERPER_API_KEY = os.getenv('SERPER_API_KEY')
# Model Selection
# def initialize_llm(model_option, groq_api_key):
# if model_option == 'Llama 3 8B':
# return ChatGroq(groq_api_key=groq_api_key, model='llama3-8b-8192', temperature=0.1)
# elif model_option == 'Llama 3.1 70B':
# return ChatGroq(groq_api_key=groq_api_key, model='llama-3.1-70b-versatile', temperature=0.1)
# elif model_option == 'Llama 3.1 8B':
# return ChatGroq(groq_api_key=groq_api_key, model='llama-3.1-8b-instant', temperature=0.1)
# else:
# raise ValueError("Invalid model option selected")
llm = ChatGroq(groq_api_key=os.getenv('GROQ_API_KEY'), model='llama-3.1-70b-versatile', temperature=0.1)
search_tool = SerperDevTool()
scrape_tool = ScrapeWebsiteTool()
def crew_creator(stock_selection,
# model_option, groq_api_key
):
# llm = initialize_llm(model_option, groq_api_key)
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)