亚马逊AWS官方博客

Amazon Nova 助力功夫源:提升金融数据分析效率,推动量化投资普惠化

关于功夫源

北京功夫源发展有限责任公司(以下简称“功夫源”)是一家金融科技公司,专注于向金融机构和个人投资者提供专业级金融交易系统和生成式 AI 驱动的在线金融数据服务,赋能 C 端用户零代码实现股票自定义多因子量化分析。

功夫源基于亚马逊云科技的多种云原生技术和生成式 AI 服务,实现了从底层架构到上层应用的快速技术升级,以及“化繁为简”的交互方式,为用户提供了流畅的使用体验。同时,功夫源科技将 10 年的金融交易数据应用的深度研发和运营经验,通过云原生在线化从 B 端转移到 C 端,为用户提供了 TB 级 level2 数据(深度行情数据,包含成交数据和订单队列数据)的在线实时深度分析。

关于 Amazon Bedrock 和 Amazon Nova

Amazon Bedrock 是一项完全托管的服务,通过单个 API 提供来自 AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI 和 Amazon 等领先人工智能公司的高性能基础模型(FM),以及通过安全性、隐私性和负责任的人工智能构建生成式人工智能应用程序所需的一系列广泛功能。

Amazon Nova 是亚马逊云科技最新、最先进的基础模型(FM),可提供前沿智能和行业领先的性价比,仅在 Amazon Bedrock 中可用。Amazon Nova 的创意内容生成类模型包括图像生成模型 Amazon Nova Canvas 和视频生成模型 Amazon Nova Reel,理解类模型包括极低成本、极低延迟响应的 Amazon Nova Micro、低成本多模态模型 Amazon Nova Lite,和功能强大的多模态模型 Amazon Nova Pro。

应用场景

随着生成式 AI 技术日新月异,很多行业都经历着前所未有的技术变革,金融量化交易这个与数据密不可分的赛道更需要快速拥抱这场新技术,进入智能量化新时代。

传统上,金融数据分析和交易系统主要由大型金融机构掌控,高质量的金融数据不仅要收取高昂的费用,数据的分析与应用所需要的金融工程工具也由于极高的知识门槛不能被绝大多数股票市场交易者掌握,这就造就极大的不公平,与现在提倡的“普惠金融”、“数据平权”相违背。

虽然“数据平权”近几年已经逐渐深入人心,但经调研后发现,普通用户对常规的技术指标,如布林带、MACD、RSI、CCI 等只是“略有耳闻”,而这些指标背后代表的市场“量能走势”需要花费大量时间成本熟练掌握,才能在纷繁的数据中识别。绝大多数用户甚至会因为没有精力了解这些经典技术指标的作用,而直接认为其“无作用”,从而失去了量化指标的辅助,完全依靠“感觉”操作自己的交易。

功夫源基于其十年头部金融服务所沉淀的高质量数据分析处理和策略实现经验,第一时间拥抱生成式 AI 技术,将其引入到量化分析的业务流程中,结合 Amazon Bedrock 提供的一系列大语言模型(LLM),包括 Amazon Nova,构建了一套更智能、更高效的交易分析系统。

功夫源推出的“功夫量化”工具为普通投资者带来了简单易用的金融数据分析服务,使得用户不用花费巨量资金与学习成本,也能享受到专业的金融投资建议与决策。普通投资者使用该工具能够:

  • 无需代码,以自然语言问答的方式即可迅速获取实时的数据分析结果;
  • 按照自身的选股思路,每日接受符合选股思路的标的推送;
  • 基于实时数据分析结果结合量化交易策略和市场洞察,第一时间监控市场异动,获取智能化投资决策。

更便捷的查询方式

为了让普通投资者能实现对 Level2 数据更深入的洞察,功夫源的功夫量化工具巧妙地把 LLM 融合进量化交易数据分析中。用户只需要指定时间和股票名称,选择策略模版,LLM 会生成对应查询语句,结合后端数据分析系统就可以在 TB 级别的高质量 Level2 数据上执行分析,获取相关标的的详细成交数据和分析结果然后返回给用户。目前该工具支持对高精度的逐笔数据进行分时统计,不同维度的数据做横向对比,以及为付费用户提供自定义模版查询功能。

更直观的投资建议

为了让投资者更直观地了解数据背后的关联,功夫量化在数据查询结果的基础上,基于 LLM 的理解和生成的能力,综合不同策略下的数据指标,进一步进行快速且深入的市场分析,让 LLM 发现数据中的隐秘模式和关联,然后生成详细的诊股报告。

在上述场景中,功夫量化基于查询复杂度组合,使用了 Amazon Bedrock 上提供的一系列模型提供服务。Amazon Nova 发布之后,功夫源在多个场景中使用了性价比更好的 Amazon Nova Pro,比如部分固定模版的 SQL 语句生成、诊股报告的生成,实现了性能、准确率和成本三要素的最佳平衡。同时,功夫源也正在探索利用 Amazon Nova Pro 的多模态能力,对行情图做更加深入的数据洞察。

架构介绍

用户发起的量化分析行为实时且难以预测,用户随时可能启动程序进行策略分析或股票数据深度挖掘等行为,功夫源选择了具有敏捷性和快速扩展能力的无服务器技术。利用无服务器网关 Amazon API Gateway 和计算服务 Amazon Lambda,搭建了面向 C 端用户的后端,同时基于无服务器编排服务 Amazon Step Functions 和 Amazon Lambda,构建了一套先进的大数据处理框架。

本文重点探讨在量化金融领域中生成式 AI 应用场景部分的架构。功夫源以 Amazon Bedrock 为核心服务打造多模型协同架构,根据不同任务特点选择最适合的模型,部分 Text2SQL 以及诊股报告生成引入 Amazon Nova Pro 来替代之前使用的模型,在保持性能的同时兼具成本效益。简略的架构图如下:

  1. 用户通过移动端界面选择感兴趣的股票和时间区间,用户的查询请求通过 Amazon API Gateway 进入处理流程,确保安全和可控的 API 访问。
  2. Lambda 函数接收用户请求,进行初步处理,请求被转发至 Amazon Bedrock 服务,不同复杂度的查询用不同 LLM 将自然语言查询智能转换为结构化的 SQL 查询语句。
  3. 查询语句发送到数据分析系统之后生成实时数据结果。
  4. 处理后的数据被传送回 Amazon Bedrock,Amazon Nova Pro 模型基于实时数据生成专业的诊股报告,报告包含技术分析、市场趋势和投资建议等关键信息。
  5. 应用层将将实时数据查询结果和 LLM 生成的诊股报告整合, 将完整的分析结果返回给用户界面,用户可以查看直观的数据可视化和专业的投资分析。

相关代码

Amazon Bedrock 提供了对多个 FM 的统一 API 调用,Amazon Nova 也是其中之一,完整的 Sample code 可以参考官方文档。以下是 Amazon Nova 的简单 Converse API 调用示例,对比之前使用的 Amazon Bedrock 中的其他模型,只需要更改 Model ID 字段即可。

import boto3
import json

client = boto3.client("bedrock-runtime",region_name = 'us-east-1')
MODEL_IDs = ["us.amazon.nova-pro-v1:0","us.amazon.nova-lite-v1:0","us.amazon.nova-micro-v1:0"]
model = MODEL_IDs[0]
def nova(model,prompt):
    lm_system = """ You are young, critical of reality, thoughtful, witty in language, quantitative trading expert and with a keen sensitivity and rigor towards data. Please answer business questions related to quantitative trading according to the requirements and strictly follow the way of reply by requirement. Your thinking of chain should follow the steps in <amazon_nova_thinking_protocol> tags.

<amazon_nova_thinking_protocol>
...
</amazon_nova_thinking_protocol>
"""
    prompt = prompt
    messages = [
        {
            "role": "user", 
            "content": [{"text": prompt}]
        },
        {
            "role": "assistant", 
            "content": [{"text": "Here is my JSON analysis result:\n```json"}]
        }
    ]
    # stopSequences for end with }
    inf_params = {"maxTokens": 300, "topP": 0.1, "temperature": 0.1, "stopSequences": ["}"]}

    additionalModelRequestFields = {
        "inferenceConfig": {
            "topK": 20
        }
    }
    try:
        model_response = bedrock.converse(
            modelId=model_id, 
            messages=messages, 
            system=system, 
            inferenceConfig=inf_params,
            additionalModelRequestFields=additionalModelRequestFields
        )

        response_body = model_response["output"]["message"]["content"][0]["text"]
        return response_body
    
    except Exception as e:
        print(f"Error invoking Bedrock: {str(e)}")
        return None

以诊股报告生成场景为例,需要 LLM 在大量时序数据和金融知识基础上给出指定的分析报告,对 LLM 的理解和推理能力有一定要求,所以功夫量化选取了 Amazon Nova 系列模型中能力比较强的 Amazon Nova Pro。Amazon Nova Pro 在与其他第一梯队模型的 20 项基准测试中,有 17 项表现相当或更优。

在 Amazon Nova Pro 的 Prompt 中给定量化交易相关背景知识,以及分析的具体思路和要求,测试后发现 Amazon Nova 生成的报告详细程度比肩 Amazon Bedrock 中表现最佳的模型。目前,功夫量化针对大部分普通用户已经使用 Amazon Nova Pro 来做诊股报告的生成,为用户提供量化策略的意见。

Amazon Nova Pro 的 Prompt 部分如下:

Your task is to analyze the content within <origin_input> tag and extract valuable insights related to opportunities and risks and give a professional Analysis Report (sometimes output as JSON). Remember "Q&As" stands for "Questions and Answers".

Take a little breath and analyse the content within <origin_input> tag step by step.

Ensure that the analysis covers every single trading day within the specified period, with a focus on unusual movements, significant changes in technical indicators, and overall market trends.

<Market_Analysis_Protocol>
  <Analysis_Process>
    # Analysis Steps:
      1. Comprehensive Daily Analysis:
        - Analyze EVERY SINGLE TRADING DAY in the input data, from the earliest to the latest date.
        - For each date, compare its data to the average of the *previous* 5 trading days.
        - Identify unusual movements based on the defined criteria for EACH DAY.
        - Ensure equal depth of analysis for all dates, avoiding bias towards recent data.

      2. Historical Context Review:
        - Identify patterns, trends, and unusual movements across the entire date range.
        - Focus on major trends and recurring patterns relevant to the entire period.

      3. Comprehensive Evaluation:
        - Analyze factor interaction patterns and behavioral shifts across the entire period.
        - Identify overarching trends and significant changes in market structure.
  
    # Signal Validation Steps:
      1. Individual Factor Analysis
        - Compare to thresholds
        - Check time consistency
        - Verify signal strength
      
      2. Cross-Factor Confirmation
        - Minimum 2-factor alignment
        - Time window matching
        - Pattern consistency

      3. False Signal Filtering
        - Threshold validation
        - Pattern completion check
        - Multi-timeframe confirmation
        
    # Output Compilation:
      - Ensure ALL identified unusual movements for each trading day, are grouped under the same trading day entry, and included in the final output.
      - Maintain chronological order in reporting unusual movements.
      - Provide a balanced analysis that gives equal weight to all trading days in the dataset.
  </Analysis_Process>

  <Unusual_Movement_Detection>
    ...
  </Unusual_Movement_Detection>

  <Data_Analysis_Requirements>
    ...
  </Data_Analysis_Requirements>

  <Output_Standards>
    ...
  </Output_Standards>

  <Data_Structure>
    ...
  </Data_Structure>

  <Critical_Reminders>
    ...
  </Critical_Reminders>

</Market_Analysis_Protocol>

Amazon Nova Pro 生成的结果如下,第一部分是自我思考过程:

#####
【思考过程】

嗯,这是一个关于东风股份(600006)的多维度市场分析。我需要仔细梳理每个交易日的异常变动,特别关注最近几天的趋势和潜在影响。

首先,我注意到几个关键的异常变动时间点:
1. 20241223和20241224是最近的两个交易日,异常变动较为集中
2. 20241217、20241218、20241219也出现了一些显著的异常指标

我将逐步分析这些异常变动,重点关注:
- 指数涨幅异常
- 技术指标(KDJ、乖离率)变化
- 个股与行业相对涨幅
- 市场结构和资金流向

对于20241223和20241224,异常变动较为复杂:
- 指数涨幅出现异常
- KDJ指标的K、D值发生显著变化
- 个股和行业涨幅出现较大偏离
- 乖离率持续处于负值且变化明显

这些异常变动背后可能隐含着市场情绪和资金流向的重要信号。我需要深入解析每一个异常点的具体含义和潜在影响。

关键分析维度:
1. 技术面:KDJ指标显示持续低迷
2. 相对涨幅:个股表现显著弱于大盘和行业
3. 趋势判断:短期内呈现震荡下行态势

接下来我将系统性地梳理每个异常变动点的具体implications。

然后是部分输出结果:

{
    "all_unusual_movements": [
        {
            "trading_day": "20241224",
            "name": "多维度异常",
            "descriptions": [
                {
                    "name": "指数涨幅",
                    "description": "较5日平均增长1.318%,高于历史波动范围"
                },
                {
                    "name": "行业涨幅",
                    "description": "较5日平均增长1.605%,显著高于大盘表现"
                },
                {
                    "name": "D值",
                    "description": "出现异常波动,显著低于前期水平"
                }
            ],
            "analysis": "市场出现短期反弹迹象,行业板块表现强于大盘,但个股未能充分受益。技术指标显示市场情绪仍处于谨慎状态,可能面临震荡调整压力。",
            "value_judgement": "negative"
        },
        {
            "trading_day": "20241223",
            ...
        },
        {
            "trading_day": "20241217",
            ...
        }
    ],
    "overall_analysis": [
        {
            "name": "技术面",
            "content": "近期股价持续承压,KDJ指标显示市场情绪低迷。未来3-5天可能面临震荡调整,但存在技术性反弹可能。",
            "value_judgement": "negative"
        },
        {
            "name": "资金面",
            ...
        }
    ],
    "risks": [
        {
            "name": "技术性调整风险",
            "description": "股价持续低于10日均线,可能触发进一步下探。建议密切关注支撑位情况。"
        },
        {
            "name": "行业分化风险",
            "description": "个股表现显著落后于行业平均水平,可能面临持续分化压力。"
        }
    ],
    "opportunities": [
        {
            "name": "技术性反弹机会",
            "description": "当前股价已严重偏离均线,短期内存在技术性反弹可能。建议关注低吸时机。"
        },
        {
            "name": "行业轮动可能",
            "description": "行业板块整体表现相对强势,个股调整可能为新的投资机会提供契机。"
        }
    ]
}

在 Amazon Nova 的测试过程中,有一些关于调整提示词的实践经验如下:

  • 使用 Role Prompt 的技巧,可以在 System prompt 中引导 Amazon Nova Pro 聚焦金融量化的特定场景。
  • 在 Prompt 中通过 Chain of thought 的方式,可以让 Amazon Nova 在复杂任务中有思考的过程,并输出思考过程。
  • 在 Prompt 中突出重点,比如指定 Json 输出和解释 Output 字段,有助于更好地控制 Amazon Nova 的输出。
  • 在分析时间序列异动场景中,Amazon Nova Pro 在处理时序数据时,最好先输出数据再进行分析,效果会更好。除了提供原始数据外,可以根据量化策略提前对数据进行统计分析,将原始数据和统计数据一起作为输入,可让 Amazon Nova Pro 获得更准确的数据洞察。

客户收益

功夫量化通过引入 Amazon Bedrock,尤其是最新的 Amazon Nova Pro 模型, 在多个关键指标上实现了显著突破。

在成本效益方面,Amazon Nova Pro 展现出了卓越的性价比优势:在保持与第一梯队模型相当效果的同时,定价更具竞争力,Input Token 仅需 $0.8/M token,Output Token 仅需 $3.2/M token,使得 LLM 推理成本降幅达到 75%。功夫量化在部分场景引入 Amazon Nova Pro 之后,生成式 AI 成本在总体 IT 成本中的占比从 80% 降低至 26%,实现了更具竞争力的成本结构。

在面向 C 端用户的场景中,推理延时是影响用户体验的关键因素。Amazon Nova Pro 在这方面表现出色,输出速度达到每秒 100 个 Token,较原先使用模型的 57 个 Token/秒提升了 75%。这一性能提升直接反映在业务场景中,使得诊股报告的生成时间缩短了 40%,大幅改善了用户体验,充分展现了新一代模型在实际应用中的技术优势。

总结

通过云原生架构和生成式 AI 服务的结合,功夫源成功将专业级的量化分析工具普惠化,使其能够服务于更广泛的用户群体。在使用 Amazon Nova 之后,功夫源进一步降低了 LLM 推理成本和延迟,优化客户交互体验。展望未来,功夫源将继续探索 Amazon Nova Pro 的多模态能力,进一步优化用户交互体验,并不断拓展创新的应用场景。功夫源在金融科技领域的创新性尝试为金融服务的智能化转型提供了有价值的参考。通过持续优化和创新,功夫源将继续为用户提供更智能、更高效的量化投资解决方案。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。

参考链接

https://www.kungfu-trader.com

https://docs.aws.amazon.com/zh_cn/nova/latest/userguide/using-converse-api.html

https://docs.aws.amazon.com/zh_cn/nova/latest/userguide/prompting-precision.html

本篇作者

董可人

功夫源科技创始人,利物浦大学计算机科学博士学位,深耕量化交易和高频做市领域,曾任凯纳资本 CTO 和 Arctic Lake Solutions 合伙人,著有《我是高频交易工程师》。

张奕智

功夫源科技产品技术负责人,近 10 年高频量化产品开发经验,研究并探索大模型在金融交易领域应用,参与并推进了大模型在量化策略代码生成,基于量化指标进行专业大模型分析等方向的落地。

汪其香

亚马逊云科技解决方案架构师,负责基于亚马逊云科技云服务的架构咨询和设计实现,具有丰富的解决客户实际问题的经验,同时热衷于生成式 AI、深度学习的研究与应用。

张玉龙

亚马逊云科技解决方案架构师,曾就职于赶集、百度,有超过 10 年的研发及架构设计经验。目前致力于推广 AWS 的技术和各种解决方案。