您当前的位置:首页 > 计算机 > 编程开发 > 人工智能

图解 Langchain 金融决策,连续加班只为你打造投资助手

时间:04-19来源:作者:点击数:

Langchain 就像是一个金融顾问团队,可以帮你分析市场数据、提供投资建议和自动化决策流程。

基本功能

1. 链式调用
# 创建一个简单的金融分析链
from langchain.chains import SimpleSequentialChain
from langchain.llms import OpenAI
# 初始化语言模型
llm = OpenAI(temperature=0.7)
# 股票分析链
分析链 = LLMChain(
    llm=llm,
    prompt=PromptTemplate(
        input_variables=["股票代码"],
        template="分析 {股票代码} 的基本面情况:"
    )
)
# 投资建议链
建议链 = LLMChain(
    llm=llm,
    prompt=PromptTemplate(
        input_variables=["分析结果"],
        template="根据以下分析给出投资建议: {分析结果}"
    )
)
# 组合链
完整分析链 = SimpleSequentialChain(
    chains=[分析链, 建议链],
    verbose=True
)
结果 = 完整分析链.run("AAPL")
2. 向量存储
# 存储金融新闻用于后续检索
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import Chroma
# 创建嵌入模型
embeddings = OpenAIEmbeddings()
# 金融新闻列表
金融新闻 = [
    "美联储宣布加息25个基点",
    "科技股普遍下跌",
    "通胀率连续三个月下降"
]
# 创建向量存储
向量数据库 = Chroma.from_texts(
    金融新闻,
    embeddings,
    collection_name="金融新闻"
)
# 检索相关内容
相关新闻 = 向量数据库.similarity_search("利率变化")
Generated Image

实用功能

1. 市场数据分析
# 设计一个分析市场趋势的工具
from langchain.agents import Tool, initialize_agent
from langchain.agents import AgentType
from langchain.utilities import GoogleSerperAPIWrapper
# 搜索工具
搜索 = GoogleSerperAPIWrapper()
搜索工具 = Tool(
    name="搜索引擎",
    func=搜索.run,
    description="用于获取最新市场信息"
)
# 数据分析工具
def 分析市场趋势(查询内容):
    # 这里可以连接专业的金融API
    return f"对 {查询内容} 的市场趋势分析结果"
分析工具 = Tool(
    name="趋势分析",
    func=分析市场趋势,
    description="分析特定市场或股票的走势"
)
# 初始化代理
市场分析代理 = initialize_agent(
    tools=[搜索工具, 分析工具],
    llm=llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True
)
# 执行分析
分析结果 = 市场分析代理.run("分析美国科技股近期趋势")
2. 风险评估
# 创建评估投资风险的链
from langchain.prompts import ChatPromptTemplate
from langchain.output_parsers import ResponseSchema, StructuredOutputParser
# 定义输出格式
风险评分_schema = ResponseSchema(
    name="风险评分",
    description="从1-10评估风险水平,10最高"
)
风险因素_schema = ResponseSchema(
    name="风险因素",
    description="列出主要风险因素"
)
建议策略_schema = ResponseSchema(
    name="建议策略",
    description="如何应对这些风险"
)
# 创建输出解析器
解析器 = StructuredOutputParser([风险评分_schema, 风险因素_schema, 建议策略_schema])
格式指南 = 解析器.get_format_instructions()
# 创建提示模板
风险评估模板 = ChatPromptTemplate.from_template(
    """分析以下投资的风险情况:
    投资目标: {投资对象}
    市场情况: {市场描述}
    {格式指南}
    """
)
# 构建完整链
风险评估链 = LLMChain(
    llm=llm,
    prompt=风险评估模板,
    output_parser=解析器
)
# 执行评估
评估结果 = 风险评估链.run(
    投资对象="特斯拉股票",
    市场描述="当前市场波动较大,科技股整体估值较高",
    格式指南=格式指南
)
3. 投资组合优化
# 利用记忆组件记录历史投资决策
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
# 创建记忆组件
投资记忆 = ConversationBufferMemory()
# 创建考虑历史决策的链
投资组合链 = ConversationChain(
    llm=llm,
    memory=投资记忆,
    prompt=PromptTemplate(
        input_variables=["history", "input"],
        template="""作为投资组合管理专家,根据历史决策和当前市场情况给出建议。
        历史决策:
        {history}
        当前情况:
        {input}
        投资建议:"""
    )
)
# 记录第一次决策
第一次建议 = 投资组合链.predict(input="我的组合中有60%科技股,市场预期美联储将加息")
# 后续决策会考虑历史
第二次建议 = 投资组合链.predict(input="最新数据显示通胀降低,但失业率上升")
Generated Image

常见任务示例

1. 自动化投资研究
# 设计一个完整的投资研究助手
from langchain.agents import AgentExecutor, Tool
from langchain.agents import create_pandas_dataframe_agent
import pandas as pd
import yfinance as yf
# 获取股票数据
def 获取股票数据(股票代码):
    try:
        股票 = yf.Ticker(股票代码)
        历史数据 = 股票.history(period="1y")
        return pd.DataFrame(历史数据)
    except Exception as e:
        return f"获取数据失败: {e}"
# 创建股票数据工具
股票数据工具 = Tool(
    name="股票历史数据",
    func=获取股票数据,
    description="获取股票的历史价格数据,输入股票代码如AAPL"
)
# 创建数据分析代理
def 创建分析代理(数据框):
    return create_pandas_dataframe_agent(
        llm=llm,
        df=数据框,
        verbose=True
    )
# 投资研究流程
def 投资研究(股票代码):
    # 步骤1: 获取数据
    股票数据 = 获取股票数据(股票代码)
    if isinstance(股票数据, str):
        return 股票数据  # 返回错误信息
    # 步骤2: 创建分析代理
    分析代理 = 创建分析代理(股票数据)
    # 步骤3: 执行分析
    技术分析 = 分析代理.run(f"对{股票代码}进行技术分析,计算主要指标")
    趋势分析 = 分析代理.run(f"分析{股票代码}的价格趋势和波动性")
    # 步骤4: 生成投资建议
    投资建议链 = LLMChain(
        llm=llm,
        prompt=PromptTemplate(
            input_variables=["股票代码", "技术分析", "趋势分析"],
            template="""
            基于以下分析为{股票代码}提供投资建议:
            技术分析: {技术分析}
            趋势分析: {趋势分析}
            投资建议:
            """
        )
    )
    最终建议 = 投资建议链.run(
        股票代码=股票代码,
        技术分析=技术分析,
        趋势分析=趋势分析
    )
    return {
        "股票代码": 股票代码,
        "技术分析": 技术分析,
        "趋势分析": 趋势分析,
        "投资建议": 最终建议
    }
2. 金融新闻分析
# 创建金融新闻分析器
from langchain.document_loaders import WebBaseLoader
from langchain.indexes import VectorstoreIndexCreator
# 定义新闻源
金融新闻源 = [
    "https://finance.example.com/markets",
    "https://finance.example.com/stocks",
    "https://finance.example.com/economy"
]
# 函数:加载和分析新闻
def 分析金融新闻(股票代码="", 主题=""):
    # 加载网页内容
    文档加载器 = WebBaseLoader(金融新闻源)
    # 创建向量索引
    索引 = VectorstoreIndexCreator().from_loaders([文档加载器])
    # 构建查询
    if 股票代码 and 主题:
        查询 = f"{股票代码} {主题}"
    elif 股票代码:
        查询 = f"{股票代码} 最新消息"
    elif 主题:
        查询 = f"{主题} 市场影响"
    else:
        查询 = "今日重要金融新闻"
    # 查询相关新闻
    新闻结果 = 索引.query(查询)
    # 提取关键信息
    提取链 = LLMChain(
        llm=llm,
        prompt=PromptTemplate(
            input_variables=["新闻内容"],
            template="""
            从以下金融新闻中提取关键信息:
            {新闻内容}
            请提供:
            1. 主要事件摘要
            2. 可能的市场影响
            3. 相关股票或行业
            """
        )
    )
    分析结果 = 提取链.run(新闻内容=新闻结果)
    return {
        "查询": 查询,
        "原始新闻": 新闻结果,
        "分析结果": 分析结果
    }
Generated Image

注意事项

  1. 投资决策别全靠AI,它只是辅助工具
  2. 数据源要靠谱,垃圾进垃圾出的道理都懂
  3. 定期评估模型性能,市场变了模型也得跟着变
  4. 敏感金融数据加密存储,别把客户资料泄露了
  5. 遵守金融法规,不是啥建议都能给的

总结

Langchain 库是构建智能金融决策系统的强大工具,可以帮你:

  • 结构化处理金融数据
  • 自动化投资研究分析
  • 生成个性化投资建议
  • 持续优化投资组合

哎呀,终于搞定这个投资助手了!加班做完这套系统后,我相信你的投资分析效率会提高不少。不过记住,再智能的系统也只是工具,最终决策还是你自己拍板。开始用起来吧!

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐