Spaces:
Runtime error
Runtime error
Commit
·
3b4e93b
1
Parent(s):
c055605
Upload 2 files
Browse files- stock_analysis_agents.py +66 -0
- stock_analysis_tasks.py +93 -0
stock_analysis_agents.py
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from crewai import Agent
|
| 2 |
+
|
| 3 |
+
from tools.browser_tools import BrowserTools
|
| 4 |
+
from tools.calculator_tools import CalculatorTools
|
| 5 |
+
from tools.search_tools import SearchTools
|
| 6 |
+
from tools.sec_tools import SECTools
|
| 7 |
+
|
| 8 |
+
from langchain.tools.yahoo_finance_news import YahooFinanceNewsTool
|
| 9 |
+
|
| 10 |
+
class StockAnalysisAgents():
|
| 11 |
+
def financial_analyst(self):
|
| 12 |
+
return Agent(
|
| 13 |
+
role='The Best Financial Analyst',
|
| 14 |
+
goal="""Impress all customers with your financial data
|
| 15 |
+
and market trends analysis""",
|
| 16 |
+
backstory="""The most seasoned financial analyst with
|
| 17 |
+
lots of expertise in stock market analysis and investment
|
| 18 |
+
strategies that is working for a super important customer.""",
|
| 19 |
+
verbose=True,
|
| 20 |
+
tools=[
|
| 21 |
+
BrowserTools.scrape_and_summarize_website,
|
| 22 |
+
SearchTools.search_internet,
|
| 23 |
+
CalculatorTools.calculate,
|
| 24 |
+
SECTools.search_10q,
|
| 25 |
+
SECTools.search_10k
|
| 26 |
+
]
|
| 27 |
+
)
|
| 28 |
+
|
| 29 |
+
def research_analyst(self):
|
| 30 |
+
return Agent(
|
| 31 |
+
role='Staff Research Analyst',
|
| 32 |
+
goal="""Being the best at gather, interpret data and amaze
|
| 33 |
+
your customer with it""",
|
| 34 |
+
backstory="""Known as the BEST research analyst, you're
|
| 35 |
+
skilled in sifting through news, company announcements,
|
| 36 |
+
and market sentiments. Now you're working on a super
|
| 37 |
+
important customer""",
|
| 38 |
+
verbose=True,
|
| 39 |
+
tools=[
|
| 40 |
+
BrowserTools.scrape_and_summarize_website,
|
| 41 |
+
SearchTools.search_internet,
|
| 42 |
+
SearchTools.search_news,
|
| 43 |
+
YahooFinanceNewsTool(),
|
| 44 |
+
SECTools.search_10q,
|
| 45 |
+
SECTools.search_10k
|
| 46 |
+
]
|
| 47 |
+
)
|
| 48 |
+
|
| 49 |
+
def investment_advisor(self):
|
| 50 |
+
return Agent(
|
| 51 |
+
role='Private Investment Advisor',
|
| 52 |
+
goal="""Impress your customers with full analyses over stocks
|
| 53 |
+
and completer investment recommendations""",
|
| 54 |
+
backstory="""You're the most experienced investment advisor
|
| 55 |
+
and you combine various analytical insights to formulate
|
| 56 |
+
strategic investment advice. You are now working for
|
| 57 |
+
a super important customer you need to impress.""",
|
| 58 |
+
verbose=True,
|
| 59 |
+
tools=[
|
| 60 |
+
BrowserTools.scrape_and_summarize_website,
|
| 61 |
+
SearchTools.search_internet,
|
| 62 |
+
SearchTools.search_news,
|
| 63 |
+
CalculatorTools.calculate,
|
| 64 |
+
YahooFinanceNewsTool()
|
| 65 |
+
]
|
| 66 |
+
)
|
stock_analysis_tasks.py
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from crewai import Task
|
| 2 |
+
from textwrap import dedent
|
| 3 |
+
|
| 4 |
+
class StockAnalysisTasks():
|
| 5 |
+
def research(self, agent, company):
|
| 6 |
+
return Task(description=dedent(f"""
|
| 7 |
+
Collect and summarize recent news articles, press
|
| 8 |
+
releases, and market analyses related to the stock and
|
| 9 |
+
its industry.
|
| 10 |
+
Pay special attention to any significant events, market
|
| 11 |
+
sentiments, and analysts' opinions. Also include upcoming
|
| 12 |
+
events like earnings and others.
|
| 13 |
+
|
| 14 |
+
Your final answer MUST be a report that includes a
|
| 15 |
+
comprehensive summary of the latest news, any notable
|
| 16 |
+
shifts in market sentiment, and potential impacts on
|
| 17 |
+
the stock.
|
| 18 |
+
Also make sure to return the stock ticker.
|
| 19 |
+
|
| 20 |
+
{self.__tip_section()}
|
| 21 |
+
|
| 22 |
+
Make sure to use the most recent data as possible.
|
| 23 |
+
|
| 24 |
+
Selected company by the customer: {company}
|
| 25 |
+
"""),
|
| 26 |
+
agent=agent
|
| 27 |
+
)
|
| 28 |
+
|
| 29 |
+
def financial_analysis(self, agent):
|
| 30 |
+
return Task(description=dedent(f"""
|
| 31 |
+
Conduct a thorough analysis of the stock's financial
|
| 32 |
+
health and market performance.
|
| 33 |
+
This includes examining key financial metrics such as
|
| 34 |
+
P/E ratio, EPS growth, revenue trends, and
|
| 35 |
+
debt-to-equity ratio.
|
| 36 |
+
Also, analyze the stock's performance in comparison
|
| 37 |
+
to its industry peers and overall market trends.
|
| 38 |
+
|
| 39 |
+
Your final report MUST expand on the summary provided
|
| 40 |
+
but now including a clear assessment of the stock's
|
| 41 |
+
financial standing, its strengths and weaknesses,
|
| 42 |
+
and how it fares against its competitors in the current
|
| 43 |
+
market scenario.{self.__tip_section()}
|
| 44 |
+
|
| 45 |
+
Make sure to use the most recent data possible.
|
| 46 |
+
"""),
|
| 47 |
+
agent=agent
|
| 48 |
+
)
|
| 49 |
+
|
| 50 |
+
def filings_analysis(self, agent):
|
| 51 |
+
return Task(description=dedent(f"""
|
| 52 |
+
Analyze the latest 10-Q and 10-K filings from EDGAR for
|
| 53 |
+
the stock in question.
|
| 54 |
+
Focus on key sections like Management's Discussion and
|
| 55 |
+
Analysis, financial statements, insider trading activity,
|
| 56 |
+
and any disclosed risks.
|
| 57 |
+
Extract relevant data and insights that could influence
|
| 58 |
+
the stock's future performance.
|
| 59 |
+
|
| 60 |
+
Your final answer must be an expanded report that now
|
| 61 |
+
also highlights significant findings from these filings,
|
| 62 |
+
including any red flags or positive indicators for
|
| 63 |
+
your customer.
|
| 64 |
+
{self.__tip_section()}
|
| 65 |
+
"""),
|
| 66 |
+
agent=agent
|
| 67 |
+
)
|
| 68 |
+
|
| 69 |
+
def recommend(self, agent):
|
| 70 |
+
return Task(description=dedent(f"""
|
| 71 |
+
Review and synthesize the analyses provided by the
|
| 72 |
+
Financial Analyst and the Research Analyst.
|
| 73 |
+
Combine these insights to form a comprehensive
|
| 74 |
+
investment recommendation.
|
| 75 |
+
|
| 76 |
+
You MUST Consider all aspects, including financial
|
| 77 |
+
health, market sentiment, and qualitative data from
|
| 78 |
+
EDGAR filings.
|
| 79 |
+
|
| 80 |
+
Make sure to include a section that shows insider
|
| 81 |
+
trading activity, and upcoming events like earnings.
|
| 82 |
+
|
| 83 |
+
Your final answer MUST be a recommendation for your
|
| 84 |
+
customer. It should be a full super detailed report, providing a
|
| 85 |
+
clear investment stance and strategy with supporting evidence.
|
| 86 |
+
Make it pretty and well formatted for your customer.
|
| 87 |
+
{self.__tip_section()}
|
| 88 |
+
"""),
|
| 89 |
+
agent=agent
|
| 90 |
+
)
|
| 91 |
+
|
| 92 |
+
def __tip_section(self):
|
| 93 |
+
return "If you do your BEST WORK, I'll give you a $10,000 commision!"
|