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)