FinRobot:一个使用大型语言模型进行金融分析的开源AI代理平台

文章目录

  • 前言
  • 一、生态系统
    • 1. 金融AI代理(Financial AI Agents)
    • 2. 金融大型语言模型(Financial LLMs)
    • 3. LLMOps
    • 4. 数据操作(DataOps)
    • 5. 多源LLM基础模型(Multi-Source LLM Foundation Models)
    • 6. Agent工作流
      • 1. 感知模块(Perception)
      • 2.大脑模块(Brain)
      • 3.行动模块(Action)
  • 二、示例代码解释
    • 1. demo
    • 2. 小弟各司其职
  • 三. 测试
    • 1. Market Forecaster Agent (Predict Stock Movements Direction)
    • 2.Financial Analyst Agent for Report Writing (Equity Research Report)
    • 3. 补充10-K干嘛的
  • 四. 总结

前言

FinRobot 是一个超越 FinGPT 范围的人工智能代理平台,代表为金融应用精心设计的全面解决方案。它整合了多种人工智能技术,远远不止是简单的语言模型。这种宏大的愿景突出了平台的多功能性和适应性,能够满足金融行业的多样化需求。
AI 代理的概念:
AI 代理是一种智能实体,它以大型语言模型作为“大脑”,感知环境、做出决策并执行行动。与传统人工智能不同,AI 代理具备独立思考的能力,并能够利用工具逐步实现既定目标。
本文主要讲明白,这东西有啥用,怎么构成的以及怎么用。

一、生态系统

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
这张图展示了 FinRobot 生态系统,这是一个使用大型语言模型(LLMs)进行金融应用的开源AI代理平台。图中分为几个主要部分,每个部分都有特定的功能和作用。以下是对图中每个部分的详细分析:

1. 金融AI代理(Financial AI Agents)

这部分展示了FinRobot平台支持的不同类型的AI代理,这些代理用于执行特定的金融任务:
市场预测代理(Market Forecasting Agents):包括交易策略代理(Trading Strategist Agent)、多模态代理(Multimodal Agent)、全球股票市场代理(Global Stock Market Agent)。
文档分析与生成代理(Document Analysis & Generation Agents):包括收益报告分析代理(Earnings Report Analysis Agent)、财务报告生成代理(Financial Report Generation Agent)、风险评估代理(Risk Assessment)、报告分析代理(Report Analysis Agent)、股票研究报告生成代理(Equity Research Report Generation Agent)。

2. 金融大型语言模型(Financial LLMs)

这部分展示了支持FinRobot平台的不同类型的金融大型语言模型(LLMs):
金融多模态LLMs(Financial Multimodal LLMs)
金融强化学习(FinRL)
金融机器学习(FinML)
金融大型语言模型(FinGPT)

3. LLMOps

这部分展示了用于管理和优化大型语言模型的操作工具:
提示工程(Prompt Engineering)
持续集成/持续部署(CI/CD)
模型部署(Model Deployment)
模型评估(Model Evaluation)
指令调整(Instruction Tuning)
RLHF(Reinforcement Learning from Human Feedback)
智能调度器(Smart Scheduler)

4. 数据操作(DataOps)

这部分展示了用于处理和分析金融数据的工具和技术:
金融数据与金融自然语言处理(Financial Data & FinNLP)
市场新闻(Market News)
社交媒体(Social Media)
市场情绪(Market Sentiment)
金融比率(Financial Ratios)
FinRL-Meta
表格数据(Tabular Data)
Gym环境(Gym Env)
非结构化数据(Unstructured Data)
第三方API(Third Party API)
向量数据库(Vector Database)
RAG(Retrieval-Augmented Generation)
知识图谱(Knowledge Graph)

5. 多源LLM基础模型(Multi-Source LLM Foundation Models)

这部分展示了FinRobot平台支持的多种基础模型,这些模型提供了底层的语言处理能力:
Llama3
ChatGLM3
Qwen
Falcon
ChatGPT
Gemma
Baichuan
InternLM
Mistral

6. Agent工作流

在这里插入图片描述

1. 感知模块(Perception)

该模块通过复杂的手段捕捉并解释来自市场数据流、新闻和经济指标的多模态金融数据,将数据结构化以便进行深入分析。

2.大脑模块(Brain)

作为核心处理单元,该模块利用大型语言模型(LLMs)感知来自感知模块的数据,并通过金融思维链(Chain-of-Thought, CoT)流程生成结构化的指令。

3.行动模块(Action)

该模块执行来自大脑模块的指令,运用工具将分析洞察转化为可执行的结果。行动包括交易、调整投资组合、生成报告或发送警报,从而积极影响金融环境。

二、示例代码解释

1. demo

在这里插入图片描述
其中每一份报告都对应一个初级版本和一个高级版本,初级的主要是针对普通用户,也就是绝大部分散户。高级主要专家级别,主要服务对象是从事金融行业。
应用场景也可以根据需要在demo代码的基础上修改。
年度报告分析代理.ipynb
财务预测代理.ipynb
交易策略代理.ipynb
基于Matplotlib Finance的LLM代理.ipynb
基于简单移动平均交叉的LLM优化代理.ipynb

2. 小弟各司其职

每一个agent就代表一个打工者,每个具体的岗位就是name,system_message,就是该岗位需要负责哪些任务,也可以说是给agent的指令。description小弟的个人简介。model,根据需要可以设置不用大模型

agent_configs": [
        {
            "name": "financial_data_analyst",
            "model": "gpt-4",
            "system_message": "You are now in a group chat. As a financial_data_analyst, you are tasked with particular responsibilities that will need your analytical and Python programming skills. Be ready to:\n\n    1. Make use of Python to gather relevant data. This could be information on specific companies, such as the company profile, recent stock price fluctuations, market news, and financial basics. The Python code should be able to output this necessary information. For instance, it may need to browse or search the web, download/read a file or print the content of a webpage or a file.\n\n    2. Use the gathered data to provide a well-informed analysis of the company. This may involve understanding current positive developments and potential concerns. You may also need to make a rough prediction of the next week's stock price (e.g., up by 2-3%) and provide an elaborative summary of the reasons. This task may necessitate the use of both your data analysis skills and your language proficiency to effectively convey the outcomes of your analysis.\n\n    3. Ensure clarity when using Python to solve a task, specifically by explaining your plan beforehand. Indicate when you will use code and when you will use your language skills. For example, the code may be used to extract financial data so that you can utilize your language skills for the analysis part.\n\n    4. Eliminate the necessity for the user to make changes to your code. Make sure your Python code is complete and doesn't call for modifications by the user. Also, ensure the code can run independently and avoid including anything that could prompt the user to copy and paste the result.\n\n    5. Be diligent in checking the execution results returned by the user. If there is an error, fix it, and if the error can't be fixed or the task isn't solved, think of a different approach. You can then output the full corrected code once again. \n\n    6. At the end of your tasks, remember to verify your answers with evidence where possible. When you are confident that your work is complete and correct, reply with \"TERMINATE.\"\n\nRemember, when puzzled, it's ok to communicate the issue to your group chat manager who will help guide you through or assign someone else to tackle the task.",
            "description": "A financial data analyst is a specialized professional who collects, monitors, and creates reports from complex data sets to help a business in decision-making processes. This position should be filled by someone with strong analytical skills, a solid understanding of financial market trends, and proficiency in data analysis tools like Microsoft Excel or SQL. They should also have a keen attention to detail and the ability to communicate complicated data in understandable ways."
        },
        {
            "name": "market_news_researcher",
            "model": "gpt-4",
            "system_message": "You are now in a group chat. Your task is to complete a market research study with other participants. As a market_news_researcher, you are expected to have strong skills in Python programming, financial analysis, market research, and the ability to analyze and interpret complex data.\n\n    1. Information Collection: Use your programming skills to gather relevant data. This may involve accessing financial data and market news from online sources, reading and downloading files, or retrieving the latest stock prices. Ascertain that the output of the data you need (for instance, company profile, stock price fluctuations, and market news about the specified company) is printed on your Python console. All required data should be gathered before attempting to solve the task based on your insights.\n        \n    2. Task Execution: Use your programming skills to conduct necessary financial analyses, interpret complex financial data, and predict stock price movements. Make sure your Python code outputs the results of your analyses and provides a clear explanation of your findings. You should also specify your predictions for next week's stock price and provide a summary of the reasoning behind your predictions.\n        \n    3. Planning: Clearly outline your plan before starting to perform your task. Communicate how you intend to collect and analyze the collected data, how you will program your Python code to predict future prices, and how you plan to execute your task step by step.\n        \n    4. Error Handling: If you encounter an error when executing your Python code, rectify the error and provide the corrected Python code. Ensure that the modified Python code is complete and doesn't require the user to make adjustments. If the error persists, rethink your approach, gather additional data if necessary, and devise an alternative strategy.\n        \n    5. Verification: After obtaining results, carefully verify your findings. If possible, provide supporting evidence in your response.\n        \nThe conversation concludes when your research is successfully completed and the task has been fully accomplished. At this point, reply \"TERMINATE\". Before ending the conversation, you must ensure that the user is fully satisfied with your analysis and predictions. If you are unsure or confused, you are encouraged to ask the group chat manager for assistance and let them choose another participant.",
            "description": "A market news researcher is a professional who stays updated with all the latest developments and trends in the market. They should possess strong analytical and research skills, along with a good understanding of business and finance. They should also have excellent communication skills to convincingly explain and debate about their findings and analysis in a group chat."
        },
        {
            "name": "python_programmer",
            "model": "gpt-4",
            "system_message": "You are now in a group chat. You have been assigned a task along with other participants. As a Python programmer, your primary role is to program solutions for data collection, analysis, and estimation tasks related to a specified company's stock.\n\nWhen there is a need to gather information, such as a company's profile, stock price history, market news, and basic financials, utilize your coding skills to achieve this. Use python code to browse or search the web, download or read relevant files, or pull the desired data from financial websites. Instead of relying on others in the group to provide this information, your code should independently fetch it. Always use a single piece of robust, comprehensive code that the users can run without needing to modify anything.\n\nWith the collected data, analyze the current positive developments and potential concerns of the specified company. Use python programs to automate your data analysis where possible and compile your observations and inferences into a clear and concise summary.\n\nBased on the data and your analysis, develop a predictive model using Python to estimate the stock's price change for the next week. Explain your model's rationale and output a numerical estimate, e.g., \"up by 2-3%\". All code should be designed to execute as standalone programs and should avoid the use of charts or visualizations.\n\nOnce your code has achieved the task at hand, carefully verify its output against reliable sources. Include any evidence or references that support your findings.\n\nWhen encountering problems or uncertainties, engage with the group chat and ask for assistance from the group chat manager. Similarly, if a code execution returns errors or does not solve the task satisfactorily, diagnose the issue, correct your assumptions, gather additional necessary information and generate a new approach with python programs.\n\nUpon completion of your tasks, ensuring the satisfaction of user's needs and the correctness of your solutions, respond with \"TERMINATE\".",
            "description": "A Python programmer is a highly skilled individual with expertise in Python, who can write, test, debug and improve Python code. They possess the ability to detect critical programming and logic errors, thereby contributing effectively to group discussions by providing accurate answers or code corrections. They require strong problem-solving skills, a firm understanding of data structures, algorithms, and software development principles in the Python language."
        },
        {
            "name": "stock_price_estimator",
            "model": "gpt-4",
            "system_message": "You are a diligent member of a team focused on stock price estimation. Using your knowledge on data sourcing and analytical skills, you will aid in gathering essential company information through programming in Python. Conduct thorough research on specific company profiles (e.g., AAPL), monitoring recent stock price fluctuations, keeping up-to-date with market news, and understanding financial fundamentals. \n\nBased on your analysis, you will aim to predict the next week's stock price with a rough estimate (e.g., up 2-3%). Notably, your role involves creating and executing standalone python programs, generating summary explanations of stock trend reasons without resorting to graphical chart representations.\n\nCarefully, step-by-step:\n\n1. Employ your Python coding skills to gather necessary information. You can accomplish this by scripting to search the web, download/read and print the content of files, pages, current time/date, and check the operating system specifics. Execute your scripts and share the output.\n\n2. Utilize your analytical language skills to prepare comprehensive reports detailing positive developments and potential concerns based on the data available.\n\n3. Use your attention to detail to meticulously check the execution results given by other team members. If there is an error, identify and correct it, then output the comprehensive and correct Python program. In case the analysis is not complete or an error is unfixable with the current data or approach, notify the team, gather additional information as needed, and propose a different method.\n\n4. After successfully analysing and estimating a stock\u2019s price movement, ensure to verify your estimations carefully. If possible, include convincing evidence in your report.\n\n5. Instigate the termination of a task phase once you're confident the task is complete, knowing that the final decision rests with the group chat manager. \n\n6. If stumped or uncertain, refrain from hesitation. Seek guidance from the group chat manager who will direct another participant to aid you.\n\nBear in mind; coding skills are limited to Python. You are encouraged to doubt previous messages or codes in the group chat and provide corrected code if there is no output after execution. Engage in healthy team communication, negotiate doubts and difficulties, and seek assistance when needed.",
            "description": "A stock price estimator is a financial expert who specializes in financial modeling, data analysis and has a profound understanding of financial markets. The incumbent should have strong skills in Python for analyzing data and building prediction models, with the ability to scrutinize previous messages or code in a group chat and provide revisions if uncertainties appear. Familiarity with statistical modeling tools and concepts, such as regression, time-series analysis, as well as machine learning techniques, are substantial for this role."
        },
        {
            "name": "financial_report_writer",
            "model": "gpt-4",
            "system_message": "You are now in a group chat. Your role is to complete a task with other participants. As a financial report writer specialized in analyzing company stock performances, you will use your Python programming skills to collect, analyze, and summarize relevant data pertaining to a specified company's market position and stock price trends. \n\nYou are expected to perform the following functions:\n\n    1. Gather necessary information such as a company's profile, recent stock price fluctuations, market news, and financial basics about the company. You will leverage your Python programming skills to develop codes that download, read, and print the desired content from the web.\n\n    2. After collecting the relevant information, use your financial analytical skills to evaluate the company's current positive developments and potential concerns. Your evaluation should be based on the data you have gathered.\n\n    3. When your analysis is complete, give a rough estimate (e.g., up by 2-3%) for the next week's stock price. You should also provide a summary of the reasons for your prediction.\n\n    4. Make sure every Python program you create will execute on its own. Avoid designing programs that require the user to modify your code. Each Python program you suggest should not involve chart plotting.\n\n    5. If an error occurs while running the code, you should correct the error and output the corrected code again. If the error can't be fixed or if the task isn't solved even after the code runs successfully, use your analytical skills to identify the problem and come up with an alternative approach.\n\n    6. Verify your answer carefully before presenting it. Include evidence to validate your findings, where possible.\n\n    7. If you face any confusion during the task, seek assistance from the group chat manager. If you think your task is complete and satisfactory, please reply \"TERMINATE\".",
            "description": "A financial report writer is a professional with strong analytical skills, expertise in financial data analysis and capable of creating concise, accurate reports. This position requires proficiency in financial software, a keen understanding of financial concepts and excellent writing skills to effectively compile and present financial data. They should also possess effective communication skills and the ability to question and clarify any doubtful financial data or information shared in the group chat."
        }

三. 测试

地址:
https://github.com/AI4Finance-Foundation/FinRobot
环境配置,更多介绍可以git上查看,运行代码前需要有三个key去配置,一个openai,2个和财经相关。
add your own finnhub-api “YOUR_FINNHUB_API_KEY”
add your own financialmodelingprep and sec-api keys “YOUR_FMP_API_KEY” and “YOUR_SEC_API_KEY” (for financial report generation)
这个都是私有,需要自己申请。

1. Market Forecaster Agent (Predict Stock Movements Direction)

市场预测代理(Market Forecaster Agent)是FinRobot平台中的一个功能,它能够分析公司的股票代码、最新财务数据和市场新闻,预测其股票走势。这一功能对于投资者和分析师来说非常有价值,因为它提供了对公司股票未来表现的洞察。

import autogen
from finrobot.utils import get_current_date, register_keys_from_json
from finrobot.agents.workflow import SingleAssistant
 
 # Read OpenAI API keys from a JSON file
llm_config = {
    "config_list": autogen.config_list_from_json(
        "../OAI_CONFIG_LIST",
        filter_dict={"model": ["gpt-4-0125-preview"]},
    ),
    "timeout": 120,
    "temperature": 0,
}

# Register FINNHUB API keys
register_keys_from_json("../config_api_keys")

company = "NVDA"

assitant = SingleAssistant(
    "Market_Analyst",
    llm_config,
    # set to "ALWAYS" if you want to chat instead of simply receiving the prediciton
    human_input_mode="NEVER",
)
assitant.chat(
    f"Use all the tools provided to retrieve information available for {company} upon {get_current_date()}. Analyze the positive developments and potential concerns of {company} "
    "with 2-4 most important factors respectively and keep them concise. Most factors should be inferred from company related news. "
    f"Then make a rough prediction (e.g. up/down by 2-3%) of the {company} stock price movement for next week. Provide a summary analysis to support your prediction."
)

运行代码以后,会先自动去下载一个NLTK 的 punkt 数据包(用于分词),然后它会自动解压,解压后的目录包含预训练的分词模型和相关元数据。

(autogen_env) root@autodl-container-f111409ec6-08df088d:~/autodl-tmp/FinRobot/test# python test1.py
[nltk_data] Downloading package punkt to /root/nltk_data...
[nltk_data]   Unzipping tokenizers/punkt.zip.
[nltk_data] Downloading package averaged_perceptron_tagger to
[nltk_data]     /root/nltk_data...

在这里插入图片描述
如果配置文件里没有api-key,打印出提示信息。

(autogen_env) root@autodl-container-f111409ec6-08df088d:~/autodl-tmp/FinRobot/test# python test1.py
[nltk_data] Downloading package punkt to /root/nltk_data...
[nltk_data]   Unzipping tokenizers/punkt.zip.
[nltk_data] Downloading package averaged_perceptron_tagger to
[nltk_data]     /root/nltk_data...
[nltk_data]   Unzipping taggers/averaged_perceptron_tagger.zip.
[autogen.oai.client: 03-01 02:40:35] {307} WARNING - The API key specified is not a valid OpenAI format; it won't work with the OpenAI-hosted model.
[autogen.oai.client: 03-01 02:40:35] {307} WARNING - The API key specified is not a valid OpenAI format; it won't work with the OpenAI-hosted model.
User_Proxy (to Market_Analyst):
Use all the tools provided to retrieve information available for NVDA upon 2025-03-01. Analyze the positive developments and potential concerns of NVDA with 2-4 most important factors respectively and keep them concise. Most factors should be inferred from company related news. Then make a rough prediction (e.g. up/down by 2-3%) of the NVDA stock price movement for next week. Provide a summary analysis to support your prediction.
utogen_env/lib/python3.10/site-packages/openai/_base_client.py", line 1033, in _request
    return self._retry_request(
  File "/root/miniconda3/envs/autogen_env/lib/python3.10/site-packages/openai/_base_client.py", line 1111, in _retry_request
    return self._request(
  File "/root/miniconda3/envs/autogen_env/lib/python3.10/site-packages/openai/_base_client.py", line 1043, in _request
    raise APIConnectionError(request=request) from err
openai.APIConnectionError: Connection error.

分别在config_list和api_key里加入相应的值。
在这里插入图片描述
在这里插入图片描述
再次运行,可以看到已经出现Market_Analyst给出的信息,后面又给了一个错误信息,Error: FinnhubAPIException(status_code: 401): Invalid API key。官方介绍的文档里,提到3个key必须填,看来还漏了一个key,对于这份代码,Finnhub也是必须的。

(autogen_env) root@autodl-container-f111409ec6-08df088d:~/autodl-tmp/FinRobot/test# python test1.py

User_Proxy (to Market_Analyst):

Use all the tools provided to retrieve information available for NVDA upon 2025-03-01. Analyze the positive developments and potential concerns of NVDA with 2-4 most important factors respectively and keep them concise. Most factors should be inferred from company related news. Then make a rough prediction (e.g. up/down by 2-3%) of the NVDA stock price movement for next week. Provide a summary analysis to support your prediction.

--------------------------------------------------------------------------------
Market_Analyst (to User_Proxy):

***** Suggested tool call (chatcmpl-uY6H36uQN976z6im3mESZRAb4Zqbx): get_company_profile *****
Arguments: 
{"symbol": "NVDA"}
*********************************************************************************************
***** Suggested tool call (chatcmpl-uY6H36uQN976z6im3mESZRAb4Zqbx): get_company_news *****
Arguments: 
{"end_date": "2025-03-01", "start_date": "2025-02-01", "symbol": "NVDA"}
******************************************************************************************
***** Suggested tool call (chatcmpl-uY6H36uQN976z6im3mESZRAb4Zqbx): get_basic_financials *****
Arguments: 
{"symbol": "NVDA"}
**********************************************************************************************
***** Suggested tool call (chatcmpl-uY6H36uQN976z6im3mESZRAb4Zqbx): get_stock_data *****
Arguments: 
{"end_date": "2025-03-01", "start_date": "2025-02-01", "symbol": "NVDA"}
****************************************************************************************

--------------------------------------------------------------------------------

>>>>>>>> EXECUTING FUNCTION get_company_news...
Call ID: chatcmpl-uY6H36uQN976z6im3mESZRAb4Zqbx
Input arguments: {'end_date': '2025-03-01', 'start_date': '2025-02-01', 'symbol': 'NVDA'}
Finnhub client initialized


>>>>>>>> EXECUTING FUNCTION get_stock_data...
Call ID: chatcmpl-uY6H36uQN976z6im3mESZRAb4Zqbx
Input arguments: {'end_date': '2025-03-01', 'start_date': '2025-02-01', 'symbol': 'NVDA'}
User_Proxy (to Market_Analyst):

***** Response from calling tool (chatcmpl-uY6H36uQN976z6im3mESZRAb4Zqbx) *****
Error: FinnhubAPIException(status_code: 401): Invalid API key
*******************************************************************************

可以看到每次调完以后,都会根据token消耗费用。
在这里插入图片描述

2.Financial Analyst Agent for Report Writing (Equity Research Report)

金融分析师代理用于撰写报告(Equity Research Report)是一个专门用于分析公司年度报告的代理,它能够提取关键信息并生成摘要。该代理能够处理公司的10-K报告、财务数据和市场数据,输出股票研究报告。通过结合先进的LLMs,这个代理深入分析财务文件,如年报、SEC文件和收益电话会议记录,提取关键信息,识别主要的财务指标,突出显示需要进一步审查的趋势和差异

import os
import autogen
from textwrap import dedent
from finrobot.utils import register_keys_from_json
from finrobot.agents.workflow import SingleAssistantShadow

llm_config = {
    "config_list": autogen.config_list_from_json(
        "../OAI_CONFIG_LIST",
        filter_dict={
            "model": ["gpt-4-0125-preview"],
        },
    ),
    "timeout": 120,
    "temperature": 0.5,
}
register_keys_from_json("../config_api_keys")

# Intermediate strategy modules will be saved in this directory
work_dir = "../report"
os.makedirs(work_dir, exist_ok=True)

assistant = SingleAssistantShadow(
    "Expert_Investor",
    llm_config,
    max_consecutive_auto_reply=None,
    human_input_mode="TERMINATE",
)

company = "Microsoft"
fyear = "2023"

message = dedent(
    f"""
    With the tools you've been provided, write an annual report based on {company}'s {fyear} 10-k report, format it into a pdf.
    Pay attention to the followings:
    - Explicitly explain your working plan before you kick off.
    - Use tools one by one for clarity, especially when asking for instructions. 
    - All your file operations should be done in "{work_dir}". 
    - Display any image in the chat once generated.
    - All the paragraphs should combine between 400 and 450 words, don't generate the pdf until this is explicitly fulfilled.
"""
)

assistant.chat(message, use_cache=True, max_turns=50,
               summary_method="last_msg")

运行代码,可以看到生成文相应的财务文档保存在report下面。

(autogen_env) root@autodl-container-f111409ec6-08df088d:~/autodl-tmp/FinRobot/test# python test2.py 
User_Proxy (to Expert_Investor):


With the tools you've been provided, write an annual report based on Microsoft's 2023 10-k report, format it into a pdf.
Pay attention to the followings:
- Explicitly explain your working plan before you kick off.
- Use tools one by one for clarity, especially when asking for instructions. 
- All your file operations should be done in "../report". 
- Display any image in the chat once generated.
- All the paragraphs should combine between 400 and 450 words, don't generate the pdf until this is explicitly fulfilled.


--------------------------------------------------------------------------------
Expert_Investor (to User_Proxy):

To create an annual report based on Microsoft's 2023 10-K report and format it into a PDF, I will follow the steps outlined below:

1. **Retrieve Key Sections from the 10-K Report**: I'll use specific tools to extract and analyze the following sections from Microsoft's 2023 10-K report:
   - Company Description
   - Business Highlights
   - Income Statement
   - Segment Analysis
   - Cash Flow Statement
   - Risk Assessment
   - Balance Sheet

2. **Generate Visuals**: I'll create visuals for the following:
   - PE ratio and EPS performance over the past 4 years.
   - Share performance compared to the S&P 500 over the past year.

3. **Combine Analysis into a Coherent Narrative**: I will synthesize the analyses from the income statement and segment analysis into a single coherent paragraph to provide a comprehensive overview of Microsoft's financial health and operational performance.

4. **Check Text Length**: I will ensure all paragraphs combine between 400 and 450 words as required.

5. **Compile the Report**: Once all the components are ready and meet the requirements, I will compile them into a PDF report, ensuring it includes all the necessary sections and visuals.

6. **Display Visuals**: Any visuals generated will be displayed in the chat for review.

7. **Review and Finalize**: Before finalizing the PDF, I will review all components to ensure accuracy and completeness.

Let's start with the first step. I will begin by retrieving and analyzing the company description for Microsoft's 2023 fiscal year. This will give us an insight into Microsoft's industry, strengths, trends, and strategic initiatives.
***** Suggested tool call (chatcmpl-Wlsfv4sA6e8N1oOnL85B1yEydOIqI): analyze_company_description *****
Arguments: 
{"fyear":"2023","save_path":"../report/msft_company_description.txt","ticker_symbol":"MSFT"}
*****************************************************************************************************

--------------------------------------------------------------------------------

>>>>>>>> USING AUTO REPLY...

>>>>>>>> EXECUTING FUNCTION analyze_company_description...
Call ID: chatcmpl-Wlsfv4sA6e8N1oOnL85B1yEydOIqI
Input arguments: {'fyear': '2023', 'save_path': '../report/msft_company_description.txt', 'ticker_symbol': 'MSFT'}
User_Proxy (to Expert_Investor):

***** Response from calling tool (chatcmpl-Wlsfv4sA6e8N1oOnL85B1yEydOIqI) *****
Error: Too Many Requests. Rate limited. Try after a while.
*******************************************************************************

--------------------------------------------------------------------------------
Expert_Investor (to User_Proxy):

It seems there's a temporary issue with accessing the data due to rate limits. I'll wait a moment and then attempt to retrieve the company description for Microsoft's 2023 fiscal year again. Let's try once more.
***** Suggested tool call (chatcmpl-K1W8qPcmAhg2uLJHdJ3opX22HCt5x): analyze_company_description *****
Arguments: 
{"fyear":"2023","save_path":"../report/msft_company_description.txt","ticker_symbol":"MSFT"}
*****************************************************************************************************

3. 补充10-K干嘛的

10-K报告是美国上市公司根据美国证券交易委员会(SEC)的规定,每年必须提交的一份全面报告。这份报告详细披露了公司的财务状况、运营情况、管理层讨论与分析(MD&A)、公司治理结构、潜在风险因素以及审计过的财务报表等信息。
10-K报告的名称来源于美国证券交易委员会的表格10-K,它是上市公司年度报告的标准格式。这份报告对于投资者、分析师和其他利益相关者来说非常重要,因为它提供了对公司过去一年的全面了解,以及公司未来可能面临的机遇和挑战。
简而言之,10-K报告是一份详尽的年度报告,旨在为投资者提供评估公司价值和做出投资决策所需的关键信息。

四. 总结

FinRobot生态系统通过整合多种AI技术和大型语言模型,提供了一个全面的平台,用于开发和部署各种金融AI代理。这些代理能够执行从市场预测、文档分析到风险评估等多种金融任务,从而满足金融行业的多样化需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/981133.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【软考-架构】1.3、磁盘-输入输出技术-总线

GitHub地址:https://github.com/tyronczt/system_architect ✨资料&文章更新✨ 文章目录 存储系统💯考试真题输入输出技术💯考试真题第一题第二题 存储系统 寻道时间是指磁头移动到磁道所需的时间; 等待时间为等待读写的扇区…

USRP4120-通用软件无线电平台

1、产品描述 USRP4120平台是彬鸿科技公司推出的以XILINX XC7Z020 SOC处理器为核心,搭配ADI AD9361射频集成芯片,针对无线通信系统科研与教学实验场景的一款通用软件无线电平台。产品频率范围70MHz~6GHz,模拟带宽200KHz~56MHz,支持…

MAVEN的安装和配置指南【超详细】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、安装Maven1.下载适合自己的版本2.配置环境变量3.验证环境变量是否配置成功 二、MAVEN的配置1.配置本地仓库2.配置镜像仓库3.创建一个简单的Maven项目 总结 …

数据结构:二叉搜索树(排序树)

1.二叉搜索树的定义 二叉搜索树要么是空树,要么是满足以下特性的树 (1)左子树不为空,那么左子树左右节点的值都小于根节点的值 (2)右子树不为空,那么右子树左右节点的值都大于根节点的值 &#…

Observability:使用 Elastic Agent 跟踪你的 Steam Deck 游戏

作者:来自 Elastic AndersonQ 让我们以不同的方式看待可观察性,并使用我们最喜欢的工具来监控我们的游戏性能。今天,我们将探讨如何使用 Elastic Agent 来监控 Steam Deck,以便我们可以看到我们玩得最多的游戏、它们消耗了多少资源…

20250227解决飞凌OK3588-C的linux R4通过adb拷贝文件速度过慢的问题

20250227解决飞凌OK3588-C的linux R4通过adb拷贝文件速度过慢的问题 2025/2/27 16:51 缘起:最近测试OK3588-C的最新的R1版本的SDK,adb pull的速度为28.8 MB/s Z:\version\OK3588-C_Linux5.10.209Qt5.15.10_用户资料_R1 我司使用4线的USB2.0,…

cesium+vue3自定义HTML实体弹窗、加高德路网、防实体漂浮、让用户画圆、鹰眼

一、基础使用:Cesium.js基础使用(vue)-CSDN博客 1、基础路径 为 Cesium 库设置一个全局变量 CESIUM_BASE_URL,用于指定 Cesium 的资源文件(如 WebGL shaders、纹理、字体等)的 示例场景:假设你…

C# Unity 唐老狮 No.4 模拟面试题

本文章不作任何商业用途 仅作学习与交流 安利唐老狮与其他老师合作的网站,内有大量免费资源和优质付费资源,我入门就是看唐老师的课程 打好坚实的基础非常非常重要: 全部 - 游习堂 - 唐老狮创立的游戏开发在线学习平台 - Powered By EduSoho 如果你发现了文章内特殊的字体格式,…

Docker 学习(二)——基于Registry、Harbor搭建私有仓库

Docker仓库是集中存储和管理Docker镜像的平台,支持镜像的上传、下载、版本管理等功能。 一、Docker仓库分类 1.公有仓库 Docker Hub:官方默认公共仓库,提供超过10万镜像,支持用户上传和管理镜像。 第三方平台:如阿里…

Oracle 数据库基础入门(四):分组与联表查询的深度探索(上)

在 Oracle 数据库的学习进程中,分组查询与联表查询是进阶阶段的重要知识点,它们如同数据库操作的魔法棒,能够从复杂的数据中挖掘出有价值的信息。对于 Java 全栈开发者而言,掌握这些技能不仅有助于高效地处理数据库数据&#xff0…

Lua | 每日一练 (4)

💢欢迎来到张胤尘的技术站 💥技术如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 Lua | 每日一练 (4)题目参考答案线程和协程调度方式上…

我代表中国受邀在亚马逊云科技全球云计算大会re:Invent中技术演讲

大家好我是小李哥,本名叫李少奕,目前在一家金融行业公司担任首席云计算工程师。去年5月很荣幸在全球千万名开发者中被选为了全球亚马逊云科技认证技术专家(AWS Hero),是近10年来大陆地区仅有的第9名大陆专家。同时作为…

C++蓝桥杯基础篇(七)

片头 嗨~小伙伴们,大家好!今天我们来一起学习蓝桥杯基础篇(七),学习相关字符串的知识,准备好了吗?咱们开始咯! 一、字符与整数的联系——ASCII码 每个常用字符都对应一个-128~127的…

显式 GC 的使用:留与去,如何选择?

目录 一、什么是显式 GC? (一) 垃圾回收的基本原理 (二)显式 GC 方法和行为 1. System.gc() 方法 2. 显式 GC 的行为 (三)显式 GC 的使用场景与风险 1. JVM 如何处理显式 GC 2. 显式 GC…

2025.03.03(第一天)

1、常见的高危端口号有哪些,并涉及到哪些攻击方式 端口号服务常见攻击方式21FTP匿名登录、文件上传漏洞22SSH暴力破解、密钥泄露、中间人攻击53DNSDNS劫持、DNS缓存投毒、DDoS放大攻击80/443HTTP/HTTPSSQL注入1433MSSQL暴力破解、SQL注入、远程代码执行3306MySQLSQ…

MySQL数据库基本概念

目录 什么是数据库 从软件角度出发 从网络角度出发 MySQL数据库的client端和sever端进程 mysql的client端进程连接sever端进程 mysql配置文件 MySql存储引擎 MySQL的sql语句的分类 数据库 库的操作 创建数据库 不同校验规则对查询的数据的影响 不区分大小写 区…

确保移动设备上机器学习的安全性:挑战与最佳实践

随着企业不断推出更智能、个性化且响应迅速的体验,AI处理能力在移动设备中的普及,促使了机器学习(ML)本地集成的应用和SDK的快速发展。2024年谷歌I/O大会报告中强调了这一趋势,谷歌鼓励开发者在移动应用中使用本地机器…

【Mac】2025-MacOS系统下常用的开发环境配置

早期版本的一个环境搭建参考 1、brew Mac自带终端运行: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" Installation successful!成功后运行三行命令后更新环境(xxx是mac的username&a…

计算机毕业设计SpringBoot+Vue.js美食推荐系统商城(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

【Linux网络#14】:数据链路层(以太网 局域网通信 ARP协议 ARP 欺骗 DDos 攻击)

📃个人主页:island1314 🔥个人专栏:Linux—登神长阶 ⛺️ 欢迎关注:👍点赞 👂🏽留言 😍收藏 💞 💞 💞 生活总是不会一帆风顺&#x…