AWS Builder 文章

使用 Backtrader、AgentCore 和 Strands Agents 构建具备市场状态感知能力的 Amazon 头寸管理

描述: 专业的 AMZN 择时需要市场状态分类、波动率控制、交易成本意识,以及基于证据的敞口管理。将 Backtrader 策略类连接到 Amazon Bedrock AgentCore 运行时、Strands 工具、AWS 审计轨迹、基准过滤器、Sharpe 分析、回撤归因和二十年交易台账生成流程,为只做多投资组合治理、FSI 合规和审计监督下的风险评审提供支持。

AMZN 回测文章系列

English 繁体中文 简体中文

描述: 专业的 AMZN 择时需要市场状态分类、波动率控制、交易成本意识,以及基于证据的敞口管理。将 Backtrader 策略类连接到 Amazon Bedrock AgentCore 运行时、Strands 工具、AWS 审计轨迹、基准过滤器、Sharpe 分析、回撤归因和二十年交易台账生成流程,为只做多投资组合治理、FSI 合规和审计监督下的风险评审提供支持。


免责声明

教育目的:
本文内容仅用于合法的金融规划教育,旨在帮助理解相关概念、方法论和分析思路,并不推广任何特定证券、策略或市场参与决策。

不构成个性化建议:
本文不提供个性化推荐、招揽或承诺;在任何情况下,本教育材料均不明示、暗示或以其他方式表示对未来表现、结果或收益作出保证。

数据限制:
由于沙箱环境无法获取实时数据,上传结果依赖确定性的离线数据,因此输出应理解为说明性示例,而非实时分析。

只做多范围:
所有研究表述均限定为只做多,避免期权、看跌期权、卖空或看空策略,确保讨论整体聚焦于传统资产持有和正向方向性敞口概念。


开篇:将市场状态视为头寸控制

只做多的 Amazon 投资者即使方向判断正确,也可能在波动率扩张或整体市场特征变化时管理不好敞口。本文将研究问题收敛到具备市场状态感知能力的头寸管理:规则应在什么时候参与,什么时候等待,以及当环境不再支持信号时,什么时候应降低敞口?


定位

本文采用具备风险意识的交易员视角,说明市场状态过滤器、波动率约束、成交量确认和动量诊断如何让 AMZN 择时更易于评审。语气务实:信念可以开启讨论,但市场状态证据决定头寸管理流程是否足够有纪律,能否继续执行。


值得解决的客户问题

许多交易评审将市场环境视为背景评论。实践中,市场状态是控制界面的一部分。风险团队需要看到 AMZN 入场是否发生在有利的整体市场条件下,波动率是否改变了仓位规模纪律,以及高换手信号在实施摩擦之后是否仍能创造价值。


该工作流支持的业务成果

该工作流帮助团队在统一框架下比较对市场状态敏感的择时规则。投资组合经理可以获得更清晰的敞口逻辑,风险评审人员可以获得回撤和波动率语境,技术团队可以获得受控的 AgentCore 和 Strands 执行路径,委员会则可以获得用于判断规则是否稳健、是否过度反应或运营成本过高的表述。


目录

  • 第 1 部分:开篇语境与文章重点
    介绍 AMZN 只做多择时问题、文章重点,以及在讨论任何配置决策之前先建立证据的业务原因。本部分帮助读者理解交易视角、市场语境,以及为什么该工作流属于教育用途而非投资建议。
  • 第 2 部分:Agentic 架构与治理控制
    解释 AgentCore 和 Strands 运行模型,包括编排器、数据代理、策略代理、风险评审代理、治理检查器、工具权限、审计产物和人工审批边界。本部分让架构在代码和策略记录出现之前更易读。
  • 第 3 部分:数据、基准与回测框架
    覆盖真实或已批准的数据输入、基准语境、OHLCV 对齐、数据血缘和可复用回测框架。本部分展示 AMZN、Nasdaq 100、S&P 500 和 Dow Jones 语境如何转化为可评审的研究证据。
  • 第 4 部分:具备市场状态感知能力的策略框架与代码逻辑
    解释文章策略族背后的实现框架,包括入场逻辑、出场逻辑、仓位规模、执行分离、风险控制和通俗代码评审。本部分帮助读者在不丢失治理语境的情况下检查策略示例。
  • 第 5 部分:交易台账与头寸管理证据
    聚焦交易台账、头寸管理证据、换手率、回撤评审,以及每一次模拟入场和出场都必须可追溯的原因。本部分将回测从图表转化为可评审的决策序列。
  • 第 6 部分:治理、风险评审与机构挑战
    汇集机构评审指引、模型风险问题、质询工作流、审计轨迹预期、生产就绪、参数敏感性、失效模式和委员会证据标准。本部分通过将治理内容放在策略记录之前,提升可读性。
  • 第 7 部分:策略目录与阅读方法
    展示策略目录和阅读策略记录的方法。本部分在治理概念与各个策略示例之间提供简短的导航桥梁。
  • 第 8 部分:策略记录 6-10:MACD、Golden Cross、ATR、Volume 和 ROC
    将策略 6-10 归入一个易读部分,使读者可以评审本文的五个策略记录,而不必把每个策略都变成单独的顶层目录项。重点是研究目的、代码逻辑、风险控制和交易台账解读。
  • 第 9 部分:执行委员会摘要与收束发言
    将技术研究转化为高管和委员会语言。本部分总结测试了什么、仍有哪些不确定性、为什么该工作流不能取代人的责任,以及如何负责任地讨论结果。
  • 第 10 部分:来源、数据说明与最终披露
    将来源、数据说明、限制和最终披露语言放在一起。本部分澄清数据假设、时间窗口、AWS 设计参考,以及文章的教育边界。

第 1 部分:开篇语境与文章重点

相关摘要: 介绍 AMZN 只做多择时问题、文章重点,以及在讨论任何配置决策之前先建立证据的业务原因。本部分帮助读者理解交易视角、市场语境,以及为什么该工作流属于教育用途而非投资建议。

开篇与市场语境

相关摘要: 确立 AMZN 择时问题,解释为什么回测应纳入机构评审,并将本文定位为证据生成而非预测。本节将盈利的只做多头寸与风险纪律、基准意识、披露语言和面向委员会的沟通连接起来。

有说服力的文章应从交易问题开始,而不是从软件开始。Amazon 只做多头寸可以盈利,但仍可能受到择时薄弱、退出纪律不清和敞口过大的影响。因此,本节将回测定位为一种治理工具,帮助交易台在讨论配置之前先解释决策。

先前交付说明中的有用内容在此被整合为:用证据说话,明确假设,避免确定性表述。受众应当了解该工作流测试什么、哪些数据支持它、可能在哪里失效,以及哪些内容仍需由人来决策。这比在末尾附上一段重复的练习说明更有力。

市场语境很重要,因为 AMZN 会受到成长偏好、整体股票市场状态、消费者预期、云业务情绪、流动性和估值压力的影响。基准意识有助于交易员避免声称每一笔收益都来自个股层面的能力。


系列重点

本文聚焦市场状态过滤器、波动率、成交量确认和动量诊断。它是四篇技术系列文章中的一篇。结构已达到可发布状态,并避免暴露草稿指令。文章保留了演讲辅导的意图,同时将信息转化为面向金融服务受众的成熟段落。


业务问题:择时是治理问题

一个 Amazon 头寸可以在长期维度上盈利,但仍然管理不佳。因此,机构需要流程语言,而不仅仅是绩效语言。研究团队应展示买入了什么、何时买入、为什么买入、何时卖出、为什么卖出,以及该决策相对于主要股票基准的表现。Agentic 工作流让这些证据更容易生成,也更容易接受质询。


第 2 部分:Agentic 架构与治理控制

相关摘要: 解释 AgentCore 和 Strands 运行模型,包括编排器、数据代理、策略代理、风险评审代理、治理检查器、工具权限、审计产物和人工审批边界。本部分让架构在代码和策略记录出现之前更易读。

Agentic 研究架构

相关摘要: 解释 Bedrock AgentCore、Strands Agents、数据工具、策略生成、Backtrader 执行和结果汇总如何形成受控工作流。本节强调工具权限、职责分离、审计产物,以及任何真实投资组合决策之前的人工审批。

Agentic 架构将职责分离。编排器接收请求,数据工具验证 OHLCV 输入,策略生成器准备规则逻辑,Backtrader 工具执行模拟,风险评审代理汇总回撤和交易行为,治理检查器验证政策边界。

经过整合的交付规则体现为架构纪律:每个 agent 动作都应生成证据。一次有用的运行会留下数据引用、代码版本、参数、时间戳、交易台账、指标、图表路径和异常记录。这些产物使投资、技术和风险团队能够评审输出。

AgentCore 和 Strands Agents 可以加速研究循环,但权限边界至关重要。系统可以运行已批准的工具并准备备忘录;它不应决定适当性、批准资本配置,或将历史回测转化为绩效承诺。


使用 Bedrock AgentCore 和 Strands Agents 的 Agentic 架构

该架构将判断与自动化分离。Quant Orchestrator 接收研究请求并协调专业工具。Strategy Generator 编写或检索 Backtrader 策略类。Market Data Tool 获取 AMZN^NDX^GSPC^DJI 的日度 OHLCV 数据。Risk Summary Agent 计算收益、回撤、敞口、交易次数、胜率、利润因子和相对基准表现。Governance Agent 检查政策边界:只做多普通股、无衍生品、无不受支持的绩效承诺。

该设计适合机构研究,因为它创建了可追溯性。模型不会暗中决定投资组合。相反,agent 调用已批准的工具,记录输入和输出,并返回可由人工委员会质询的备忘录。代码示例使用 Backtrader,因为它提供事件驱动的研究引擎、技术指标、分析器、订单处理和交易统计。


第 3 部分:数据、基准与回测框架

相关摘要: 覆盖真实或已批准的数据输入、基准语境、OHLCV 对齐、数据血缘和可复用回测框架。本部分展示 AMZN、Nasdaq 100、S&P 500 和 Dow Jones 语境如何转化为可评审的研究证据。

真实市场数据与基准

相关摘要: 将 AMZN 定义为研究资产,并将 Nasdaq 100、S&P 500 和 Dow Jones Industrial Average 定义为基准语境。本节解释经调整的 OHLCV 数据、日历对齐、数据血缘、公司行为处理,以及为什么不应使用编造的市场价格。

数据血缘是一项交易控制。调整后价格、公司行为、缺失值、节假日日历、供应商变更和基准对齐,都可能改变择时规则的表面行为。本节将数据工程视为投资治理的一部分,而不是背景任务。

AMZN 是可交易资产。Nasdaq 100、S&P 500 和 Dow Jones Industrial Average 分别为成长市场状态、整体股票风险和蓝筹情绪提供不同视角。工作流应记录为什么使用每个基准,以及每个基准可能在何处产生误导。

本文避免使用编造价格和不受支持的绩效声明。如果无法检索数据,应说明该限制。如果使用生产数据,则应将数据集快照和调整政策与回测产物一起保存。


真实数据设置

示例使用 Amazon 普通股作为可交易资产,并使用三个基准指数作为语境:Nasdaq 100 用于成长和科技市场状态,S&P 500 用于广义美国股票市场状态,Dow Jones Industrial Average 用于蓝筹风险情绪。当在你的环境中运行时,可执行框架会通过 yfinance 下载真实日度数据。本文不会编造市场价格或虚构绩效数字。


第 4 部分:具备市场状态感知能力的策略框架与代码逻辑

相关摘要: 解释文章策略族背后的实现框架,包括入场逻辑、出场逻辑、仓位规模、执行分离、风险控制和通俗代码评审。本部分帮助读者在不丢失治理语境的情况下检查策略示例。

具备市场状态感知能力的策略实现与代码逻辑

相关摘要: 介绍本文使用的策略示例,并解释每条规则如何创建入场和出场条件。本节将信号逻辑与执行逻辑分离,并将代码翻译成通俗的头寸管理控制语言。

策略实现应读起来像一张控制图。入场逻辑解释为什么开立多头头寸。出场逻辑解释为什么平仓。仓位规模逻辑解释承担多少敞口。风险逻辑解释流程在什么时候覆盖信号。这使非开发人员也能理解代码评审。

信号逻辑和执行逻辑应保持分离。信号可以识别有利条件,但执行引擎必须检查现有头寸状态、可用现金、佣金、风险止损和目标退出。分离可以提升可审计性,并减少隐藏行为。

本文将代码讲解放在主要策略讨论之中,而不是作为孤立注释。每个策略都应根据其台账、回撤、换手率、基准表现和运营可行性来判断,而不能只看标题式收益。

本文特别聚焦具备市场状态感知能力的头寸管理、波动率控制、交易成本意识和动量诊断。因此,代码评审应评估该策略族是否支持这一业务目标,以及其交易记录是否足够可解释,能够满足机构评审需要。


第 5 部分:交易台账与头寸管理证据

相关摘要: 聚焦交易台账、头寸管理证据、换手率、回撤评审,以及每一次模拟入场和出场都必须可追溯的原因。本部分将回测从图表转化为可评审的决策序列。

市场状态记录、换手率与头寸管理

相关摘要: 解释交易台账如何通过记录入场、出场、价格、规模、已实现损益、信号原因、回撤行为、换手率和风险调整后评审来支持头寸管理决策。

交易台账是交易台的记忆系统。它记录入场日期、出场日期、价格、规模、毛损益、入场原因和出场原因。没有台账,策略只是一个故事。有了台账,委员会就可以检查模拟决策的实际序列。

回撤评审必须先于收益庆祝。一个策略的总收益看起来可能很有吸引力,但在真实压力下可能很难持有。台账和回撤路径帮助评审人员判断该规则是否符合授权范围和风险承受能力。

先前的练习说明被整合进评审流程:在得出任何结论之前,先解释数据来源、日期范围、策略规则、基准语境、风险指标和台账。本文将其保留在头寸管理部分,因为它会改变证据的阅读方式。


二十年交易历史结构

含义
entry_date 模拟 AMZN 多头头寸开立时的交易日期
exit_date 模拟 AMZN 多头头寸平仓时的交易日期
entry_price Backtrader 模拟入场价格
exit_price Backtrader 模拟出场价格
size 模拟头寸中的 AMZN 股数
gross_pnl 税费和额外实施成本之前的毛损益
entry_reason 触发入场的信号标签
exit_reason 触发出场的信号、目标或风险控制标签

交易历史很重要,因为它可以避免模糊叙事。委员会可以检查利润是来自许多可重复交易,还是来自某个异常时期;出场是否在熊市状态下降低了损害;基准过滤器是否有帮助;以及换手率能否承受现实的实施成本。


第 6 部分:治理、风险评审与机构质询

相关摘要: 汇集机构评审指引、模型风险问题、质询工作流、审计轨迹预期、生产就绪、参数敏感性、失效模式和委员会证据标准。本部分通过将治理内容放在策略记录之前,提升可读性。

说明性模式;在生产环境中应调整 IAM、网络、审批和日志记录。

from bedrock_agentcore import BedrockAgentCoreApp
from strands import Agent, tool

app = BedrockAgentCoreApp()

ALLOWED = {
    "breakout_55": "Breakout55Strategy",
    "ema_cross": "EMACrossStrategy",
    "multi_factor": "MultiFactorEnsembleStrategy",
}

@tool
def validate_policy(strategy_key: str, side: str, derivatives: bool) -> dict:
    if side.lower() != "long_only":
        return {"ok": False, "reason": "Only long-only equity research is allowed."}
    if derivatives:
        return {"ok": False, "reason": "Derivative instruments are outside this workflow."}
    if strategy_key not in ALLOWED:
        return {"ok": False, "reason": "Strategy is not approved in the registry."}
    return {"ok": True, "reason": "Policy accepted."}

@tool
def run_registered_backtest(strategy_key: str) -> dict:
    return {"status": "submitted", "strategy": ALLOWED[strategy_key], "artifact_prefix": f"s3://research/amzn/{strategy_key}/"}

agent = Agent(tools=[validate_policy, run_registered_backtest])

@app.entrypoint
def invoke(payload):
    return agent(payload.get("request", "Run approved AMZN long-only backtest."))

if __name__ == "__main__":
    app.run()

应用于正文的细节 1:先定义市场状态,再评估信号

具备市场状态感知能力的文章,应在讨论信号之前先定义市场环境的含义。市场状态可以来自广义指数趋势、波动率状态、流动性行为或相对基准动量。交易员应解释哪些市场状态变量是可观测的,以及它们如何影响 AMZN 敞口。


应用于正文的细节 2:将波动率作为仓位规模约束

波动率不仅是图表条件,也是一项仓位规模约束。在平静市场中看起来有吸引力的规则,可能在日内波动区间扩大时变得难以持有。因此,本文将 ATR、回撤和敞口规模放在同一个头寸管理讨论中。


应用于正文的细节 3:交易成本意识

高换手规则可能因价差、滑点、佣金、税务摩擦和评审负担而损失经济价值。具备市场状态感知能力的研究应追问:择时质量的改善是否足以证明额外交易活动是合理的。


应用于正文的细节 4:动量衰竭评审

动量可以持续,但也可能变得拥挤或衰竭。专业评审会追问入场是否足够早以参与行情,出场是否足够早以保护资本。交易台账应揭示规则是持续滞后,还是保持了适当耐心。


应用于正文的细节 5:风险官汇报

风险官不需要每一行代码;风险官需要的是敞口规则、止损行为、最大回撤、交易次数和失效模式。本文将代码翻译为评审语言,使风险和投资利益相关方能够质询同一组证据。


应用于正文的细节 6:信号漂移监控

在某一市场状态下有效的策略,可能会在市场结构变化时发生漂移。监控应将当前交易频率、平均持有期和回撤与历史区间进行比较。如果行为发生重大变化,应在暴露更多资本之前重新评审该规则。


机构评审视角 1:证据包设计

完整的证据包应包括研究问题、数据来源、调整政策、代码列表、代码版本、参数集、交易台账、回撤画像、指标摘要、异常日志和披露语言。这使投资、风险、技术和合规团队都能够评审回测。


机构评审视角 2:人工质询工作流

当工作流能够引发质询时,它才算成功。评审人员应追问数据是否干净、规则是否具有经济依据、基准是否适当、参数是否稳定、成本是否现实,以及结论是否被限定在证据所支持的范围内。


机构评审视角 3:只做多政策边界

本文将政策边界保持为只做多。该边界使工作流聚焦于择时、仓位规模、退出和证据质量,而不是复杂的工具构造。它也为治理 agent 提供了拒绝不受支持请求的明确规则。


机构评审视角 4:图表与台账解读

图表有用,但台账才是审计轨迹。权益曲线可能掩盖集中度,单一收益数字可能掩盖换手率。因此,本文将图表、台账和指标视为互补证据,而不是可相互替代的证明。


机构评审视角 5:生产就绪检查清单

notebook 并不等于生产环境。生产就绪需要受控数据访问、版本化代码、参数记录、可重复运行、异常处理、产物存储、审批工作流和监控。Agentic 工具应支持这些控制,而不是绕过它们。


机构评审视角 6:失效模式披露

专业文章应尽早说明失效模式。趋势规则可能遭遇反复震荡,动量可能衰竭,波动率过滤器可能滞后,基准过滤器可能排除快速修复行情。明确这些风险可以提升可信度,并帮助委员会准备有价值的问题。


第 7 部分:策略目录与阅读方法

相关摘要: 展示策略目录和阅读策略记录的方法。本部分在治理概念与各个策略示例之间提供简短的导航桥梁。

阅读记录之前的策略评审方法

在阅读策略记录之前,对每条规则使用相同的证据顺序:确认数据、识别入场条件、识别出场条件、检查仓位规模假设、评审回撤、比较基准表现,并记录经验教训。这句话将重复的交付说明转化为文章内部使用的方法。


本文策略目录

  • Strategy 6: MACDTrendStrategy — MACD 柱状图趋势加速。
  • Strategy 7: GoldenCrossStrategy — 50/200 移动平均线金叉。
  • Strategy 8: ATRChannelStrategy — ATR 波动率通道突破。
  • Strategy 9: VolumeConfirmStrategy — 由高于平均水平的成交量确认的价格突破。
  • Strategy 10: RateOfChangeStrategy — 六个月 ROC 动量。

第 8 部分:策略记录 6-10:MACD、Golden Cross、ATR、Volume 和 ROC

相关摘要: 将策略 6-10 归入一个易读部分,使读者可以评审本文的五个策略记录,而不必把每个策略都变成单独的顶层目录项。重点是研究目的、代码逻辑、风险控制和交易台账解读。

Strategy 6: MACDTrendStrategy

研究目的。 MACD 柱状图趋势加速。该策略作为 AMZN 只做多择时示例编写。它可以建立多头头寸、平掉多头头寸,或保持现金状态。它不会创建空头敞口,也不会使用期权、看跌期权、互换、期货、保证金或其他衍生工具。

头寸管理评审。 对于 MACDTrendStrategy,交易台应评估在考虑成本、回撤和基准语境之后,MACD 柱状图趋势加速是否提供了有用的择时证据。评审应检查该规则的交易频率、出场是否易于理解、持有期是否符合授权范围,以及该信号是否提供了超越在所有市场状态下简单持有 AMZN 的洞察。

Backtrader 代码。 将该类添加到可复用框架下方,然后在受控研究环境中运行 run_backtest(MACDTrendStrategy, "MACDTrendStrategy")

class MACDTrendStrategy(TradeLoggerMixin, bt.Strategy):
    params = dict(fast=12, slow=26, signal=9, risk_per_trade=0.09)
    def __init__(self):
        TradeLoggerMixin.__init__(self)
        self.macd = bt.ind.MACD(self.data0.close, period_me1=self.p.fast, period_me2=self.p.slow, period_signal=self.p.signal)
        self.hist = self.macd.macd - self.macd.signal
    def next(self):
        self.risk_exit_check()
        if not self.position and self.hist[0] > 0 and self.hist[-1] <= 0:
            self.buy_long("macd_histogram_positive_turn")
        elif self.position and self.hist[0] < 0:
            self.close_long("macd_histogram_negative")

针对 MACDTrendStrategy 的 agent 评审应总结本次特定策略运行的信号路径、台账完整性、风险控制活动和只做多政策状态。


Strategy 7: GoldenCrossStrategy

研究目的。 50/200 移动平均线金叉。该策略作为 AMZN 只做多择时示例编写。它可以建立多头头寸、平掉多头头寸,或保持现金状态。它不会创建空头敞口,也不会使用期权、看跌期权、互换、期货、保证金或其他衍生工具。

头寸管理评审。 对于 GoldenCrossStrategy,交易台应评估在考虑成本、回撤和基准语境之后,50/200 移动平均线金叉是否提供了有用的择时证据。评审应检查该规则的交易频率、出场是否易于理解、持有期是否符合授权范围,以及该信号是否提供了超越在所有市场状态下简单持有 AMZN 的洞察。

Backtrader 代码。 将该类添加到可复用框架下方,然后在受控研究环境中运行 run_backtest(GoldenCrossStrategy, "GoldenCrossStrategy")

class GoldenCrossStrategy(TradeLoggerMixin, bt.Strategy):
    params = dict(fast=50, slow=200, risk_per_trade=0.10)
    def __init__(self):
        TradeLoggerMixin.__init__(self)
        self.fast = bt.ind.SMA(self.data0.close, period=self.p.fast)
        self.slow = bt.ind.SMA(self.data0.close, period=self.p.slow)
        self.cross = bt.ind.CrossOver(self.fast, self.slow)
    def next(self):
        self.risk_exit_check()
        if not self.position and self.cross[0] > 0:
            self.buy_long("golden_cross")
        elif self.position and self.cross[0] < 0:
            self.close_long("death_cross_exit")

针对 GoldenCrossStrategy 的 agent 评审应总结本次特定策略运行的信号路径、台账完整性、风险控制活动和只做多政策状态。


Strategy 8: ATRChannelStrategy

研究目的。 ATR 波动率通道突破。该策略作为 AMZN 只做多择时示例编写。它可以建立多头头寸、平掉多头头寸,或保持现金状态。它不会创建空头敞口,也不会使用期权、看跌期权、互换、期货、保证金或其他衍生工具。

头寸管理评审。 对于 ATRChannelStrategy,交易台应评估在考虑成本、回撤和基准语境之后,ATR 波动率通道突破是否提供了有用的择时证据。评审应检查该规则的交易频率、出场是否易于理解、持有期是否符合授权范围,以及该信号是否提供了超越在所有市场状态下简单持有 AMZN 的洞察。

Backtrader 代码。 将该类添加到可复用框架下方,然后在受控研究环境中运行 run_backtest(ATRChannelStrategy, "ATRChannelStrategy")

class ATRChannelStrategy(TradeLoggerMixin, bt.Strategy):
    params = dict(period=22, atr_period=14, atr_mult=2.5, risk_per_trade=0.08)
    def __init__(self):
        TradeLoggerMixin.__init__(self)
        self.ma = bt.ind.SMA(self.data0.close, period=self.p.period)
        self.atr = bt.ind.ATR(self.data0, period=self.p.atr_period)
        self.upper = self.ma + self.p.atr_mult * self.atr
    def next(self):
        self.risk_exit_check()
        if not self.position and self.data0.close[0] > self.upper[0]:
            self.buy_long("atr_channel_breakout")
        elif self.position and self.data0.close[0] < self.ma[0]:
            self.close_long("atr_midline_exit")

针对 ATRChannelStrategy 的 agent 评审应总结本次特定策略运行的信号路径、台账完整性、风险控制活动和只做多政策状态。


Strategy 9: VolumeConfirmStrategy

研究目的。 由高于平均水平的成交量确认的价格突破。该策略作为 AMZN 只做多择时示例编写。它可以建立多头头寸、平掉多头头寸,或保持现金状态。它不会创建空头敞口,也不会使用期权、看跌期权、互换、期货、保证金或其他衍生工具。

头寸管理评审。 对于 VolumeConfirmStrategy,交易台应评估在考虑成本、回撤和基准语境之后,由高于平均水平的成交量确认的价格突破是否提供了有用的择时证据。评审应检查该规则的交易频率、出场是否易于理解、持有期是否符合授权范围,以及该信号是否提供了超越在所有市场状态下简单持有 AMZN 的洞察。

Backtrader 代码。 将该类添加到可复用框架下方,然后在受控研究环境中运行 run_backtest(VolumeConfirmStrategy, "VolumeConfirmStrategy")

class VolumeConfirmStrategy(TradeLoggerMixin, bt.Strategy):
    params = dict(price_lookback=40, volume_lookback=30, volume_mult=1.4, risk_per_trade=0.08)
    def __init__(self):
        TradeLoggerMixin.__init__(self)
        self.highest = bt.ind.Highest(self.data0.high(-1), period=self.p.price_lookback)
        self.vol_avg = bt.ind.SMA(self.data0.volume, period=self.p.volume_lookback)
        self.exit_ma = bt.ind.SMA(self.data0.close, period=20)
    def next(self):
        self.risk_exit_check()
        if not self.position and self.data0.close[0] > self.highest[0] and self.data0.volume[0] > self.p.volume_mult * self.vol_avg[0]:
            self.buy_long("breakout_with_volume_confirmation")
        elif self.position and self.data0.close[0] < self.exit_ma[0]:
            self.close_long("short_ma_exit")

针对 VolumeConfirmStrategy 的 agent 评审应总结本次特定策略运行的信号路径、台账完整性、风险控制活动和只做多政策状态。


Strategy 10: RateOfChangeStrategy

研究目的。 六个月 ROC 动量。该策略作为 AMZN 只做多择时示例编写。它可以建立多头头寸、平掉多头头寸,或保持现金状态。它不会创建空头敞口,也不会使用期权、看跌期权、互换、期货、保证金或其他衍生工具。

头寸管理评审。 对于 RateOfChangeStrategy,交易台应评估在考虑成本、回撤和基准语境之后,六个月 ROC 动量是否提供了有用的择时证据。评审应检查该规则的交易频率、出场是否易于理解、持有期是否符合授权范围,以及该信号是否提供了超越在所有市场状态下简单持有 AMZN 的洞察。

Backtrader 代码。 将该类添加到可复用框架下方,然后在受控研究环境中运行 run_backtest(RateOfChangeStrategy, "RateOfChangeStrategy")

class RateOfChangeStrategy(TradeLoggerMixin, bt.Strategy):
    params = dict(roc_period=126, exit_ma=63, risk_per_trade=0.09)
    def __init__(self):
        TradeLoggerMixin.__init__(self)
        self.roc = bt.ind.RateOfChange(self.data0.close, period=self.p.roc_period)
        self.exit_ma = bt.ind.SMA(self.data0.close, period=self.p.exit_ma)
    def next(self):
        self.risk_exit_check()
        if not self.position and self.roc[0] > 0.15:
            self.buy_long("six_month_positive_momentum")
        elif self.position and self.data0.close[0] < self.exit_ma[0]:
            self.close_long("momentum_ma_exit")

针对 RateOfChangeStrategy 的 agent 评审应总结本次特定策略运行的信号路径、台账完整性、风险控制活动和只做多政策状态。


第 9 部分:执行委员会摘要与收束发言

相关摘要: 将技术研究转化为高管和委员会语言。本部分总结测试了什么、仍有哪些不确定性、为什么该工作流不能取代人的责任,以及如何负责任地讨论结果。

高管收束与治理评审

相关摘要: 将技术工作流转化为委员会语言。本节解释 agents 如何在不取代责任的情况下加速研究,证据应如何接受质询,以及专业人员如何继续对适当性、风险承受能力、数据质量、实施就绪和最终资本决策负责。

收束部分将市场状态研究转化为决策语言。委员会需要知道测试了哪些波动率、动量和市场状态过滤器,它们是否改善了 AMZN 敞口纪律,以及它们是否引入了滞后、换手率或错过修复行情的问题。

agent 不能取代专业人员。Agentic 工具可以组织市场状态证据并汇总回撤,但适当性、授权匹配、成本容忍度和最终资本决策仍然是人的责任。

有纪律的收束应避免宣传性语言。核心信息是:在相信信号之前先评审市场状态,在称赞择时之前先检查换手率,并将责任保留在投资团队。


高管发言收束

最终信息应当与市场状态相关:择时规则应解释其预期发挥作用的环境。AgentCore 和 Strands Agents 可以加速市场状态评审,Backtrader 可以回放规则路径,但二者都不能承诺下一个 AMZN 市场状态会像上一个一样。


供委员会使用的执行摘要

这篇具备市场状态感知能力的文章应用于追问:择时规则在不同波动率、动量和基准状态下是否表现不同。委员会应关注过滤器是改善了纪律,还是只是延迟了决策,以及由此产生的交易次数能否经受成本、税务和运营评审。

最终决策仍由人作出。Agentic 工具可以组织市场状态证据并突出回撤行为,但不能决定授权匹配,也不能保证未来市场状态会类似于回测窗口。


第 10 部分:来源、数据说明与最终披露

相关摘要: 将来源、数据说明、限制和最终披露语言放在一起。本部分澄清数据假设、时间窗口、AWS 设计参考,以及文章的教育边界。

来源与数据说明

  • 真实数据工作流:可执行示例使用 yfinance 下载 AMZN^NDX^GSPC^DJI 的日度 OHLCV 数据。
  • 时间范围:2006-06-192026-06-19,受市场假期和数据提供商可用性限制。
  • AWS 设计模式:Bedrock AgentCore 运行时用于 agent 编排,Strands Agents 用于工具协调,AWS 治理数据模式用于血缘、访问和产物存储。
  • 仅用于教育:不构成个性化建议,不构成招揽,也不构成绩效保证。

最终治理数据说明

  • 真实数据工作流:可执行示例应使用经过批准的 AMZN、Nasdaq 100、S&P 500 和 Dow Jones Industrial Average 日度 OHLCV 数据。
  • 时间范围:示例设计使用二十年研究窗口,并应在每次运行中记录准确的开始和结束日期。
  • AWS 设计模式:Bedrock AgentCore 运行时可以托管 agent 编排,Strands Agents 可以协调工具使用和结果评审。
  • 仅用于教育:不构成个性化建议,不构成招揽,也不构成绩效保证。