Cree un analista técnico de acciones virtual utilizando Amazon Bedrock Agents

Las preguntas sobre el análisis técnico de acciones pueden ser tan únicas como el propio analista de acciones individual. Las consultas suelen tener varios indicadores técnicos como la media móvil simple (SMA), la media móvil exponencial (EMA), el índice de fuerza relativa (RSI) y otros. Responder a estas variadas preguntas significaría escribir una lógica empresarial compleja para descomprimir la consulta en partes y obtener los datos necesarios. Con la cantidad de indicadores disponibles, la posibilidad de tener uno o varios de ellos en cualquier combinación y cada uno de esos indicadores en diferentes períodos de tiempo, puede resultar bastante complejo incorporar dicha lógica de negocios en el código.

A medida que la tecnología de IA continúa evolucionando, las capacidades de IA generativa Los agentes continúan expandiéndose, ofreciendo aún más oportunidades para que usted obtenga una ventaja competitiva. A la vanguardia de esta evolución se encuentra Roca Amazónicaun servicio totalmente administrado que hace que los modelos básicos (FM) de alto rendimiento de Amazon y otras empresas líderes en inteligencia artificial estén disponibles a través de una única API. Con Amazon Bedrock, puede crear y escalar aplicaciones de IA generativa con seguridad, privacidad e IA responsable. Agentes de Amazon Bedrock planifica y ejecuta tareas de varios pasos utilizando los sistemas y fuentes de datos de la empresa, desde responder preguntas de los clientes sobre la disponibilidad de sus productos hasta tomar sus pedidos. Con Amazon Bedrock, puede crear un agente en tan solo unos pocos pasos rápidos seleccionando primero un FM y proporcionándole acceso a sus sistemas empresariales, bases de conocimiento y acciones para ejecutar sus API de forma segura. Estas acciones se pueden implementar en la nube utilizando AWS Lambdao puede utilizar la lógica empresarial local con devolución de control. Un agente analiza la solicitud del usuario y llama automáticamente a las API y fuentes de datos necesarias para cumplir con la solicitud. Amazon Bedrock Agents ofrece seguridad y privacidad mejoradas: no es necesario que usted diseñe mensajes, administre el contexto de la sesión ni organice tareas manualmente.

En esta publicación, creamos un analista virtual que puede responder consultas en lenguaje natural sobre acciones que coinciden con ciertos criterios de indicadores técnicos utilizando Amazon Bedrock Agents. Como parte del agente, configuramos grupos de acciones que constan de funciones Lambda, lo que le da al agente la capacidad de realizar diversas acciones. El agente de Amazon Bedrock transformará la consulta en lenguaje natural del usuario en llamadas Lambda relevantes, pasando los indicadores técnicos y su duración necesaria. Lambda accederá a los datos bursátiles de código abierto precargados en un Servicio de almacenamiento simple de Amazon (Amazon S3), calcula el indicador técnico en tiempo real y lo devuelve al agente. El agente realizará más acciones, como otras llamadas Lambda o filtrar y ordenar según la tarea.

Descripción general de la solución

La solución de asistente de análisis técnico utilizará Amazon Bedrock Agents para responder consultas de análisis técnico en lenguaje natural, desde consultas simples como “¿Puede darme una lista de acciones en el índice NASDAQ 100?” hasta consultas complejas como “¿Qué acciones en el índice NASDAQ 100 tienen?” ¿Ambos crecieron más del 10% en los últimos 6 meses y también cerraron por encima de su SMA de 20 días? Los agentes organizan y analizan la tarea y la dividen en la secuencia lógica correcta utilizando las capacidades de razonamiento del FM. Los agentes llaman automáticamente a las funciones Lambda necesarias para obtener los datos relevantes del análisis técnico de las acciones, determinando en el camino si pueden continuar o si necesitan recopilar más información.

El siguiente diagrama ilustra la arquitectura de la solución.

El flujo de trabajo consta de los siguientes pasos:

  1. La solución activa una función Lambda basada en Python que recupera los datos de stock diarios del último año utilizando el yfinance paquete. La función Lambda se activa para ejecutarse todos los días mediante un Puente de eventos de Amazon Las funciones colocan los datos bursátiles del último año en un depósito S3.
  2. Un usuario hace una consulta en lenguaje natural, como “¿Puede darme una lista de acciones en el índice NASDAQ 100” o “¿Qué acciones cerraron en 20 SMA y 50 EMA en el índice FTSE 100?”
  3. Esta consulta se pasa al agente de Amazon Bedrock impulsado por Claude 3 Sonnet de Anthropic. El agente deconstruye la consulta del usuario, crea un plan de acción y lo ejecuta paso a paso para obtener diversos datos necesarios para responder la pregunta. Para obtener los datos necesarios, el agente tiene tres grupos de acciones, cada uno de ellos impulsado por una función Lambda que puede utilizar los datos sin procesar almacenados en el depósito S3 para calcular indicadores técnicos y otra información relacionada con las acciones. Según la respuesta del grupo de acción y el plan de acción del agente, el agente continuará haciendo llamadas o realizando otras acciones como filtrar o resumir hasta llegar a la respuesta a la pregunta. Los grupos de acción son los siguientes:
    1. obtener índice – Obtener el símbolo bursátil de los componentes de un índice determinado. El ejemplo actualmente tiene componentes configurados para los índices Nasdaq 100, FTSE 100 y Nifty 50.
    2. obtener-cambio-de-stock – Para una acción o lista de acciones determinada, calcule el porcentaje de cambio durante un período determinado en función de los datos sin procesar obtenidos previamente en Amazon S3. Esta solución actualmente está configurada para tener datos del último año.
    3. obtener-análisis-técnico – Para una acción o lista de acciones determinada, calcule el indicador técnico determinado para un período de tiempo determinado. También recupera el último precio de cierre de la acción en función de los datos sin procesar obtenidos previamente en Amazon S3. Actualmente, esta solución está configurada para manejar indicadores técnicos SMA, EMA y RSI por hasta 1 año.

Requisitos previos

Para configurar esta solución, necesita conocimientos básicos de AWS y los servicios de AWS relevantes. Además, solicitar acceso al modelo en Amazon Bedrock para el soneto Claude 3 de Anthropic.

Implementar la solución

Complete los siguientes pasos para implementar la solución usando Formación en la nube de AWS:

  1. Inicie la pila de CloudFormation en el us-east-1 Región de AWS:

Pila de lanzamiento

  1. Para Nombre de la pilaingrese el nombre de la pila de su elección.
  2. Deje el resto como predeterminado.
  3. Elegir Próximo.
  4. Elegir Próximo
  5. Seleccione la casilla de verificación de reconocimiento y elija Entregar.

  1. Espere a que se complete la creación de la pila.
  2. Verifique que todos los recursos estén creados en la página de detalles de la pila.

La pila de CloudFormation crea la solución descrita en la descripción general de la solución y los siguientes recursos clave:

  • StockDataS3Bucket – El depósito S3 para almacenar los datos de stock de 1 año.
  • YfinDailyLambda – Una función Python Lambda para obtener los datos de acciones del último año en los índices Nasdaq 100, FTSE 100 y Nifty 50 de Yahoo Finance utilizando el yfinance paquete:
# Example call to Yahoo finance to get stock history
import yfinance as yf
stock_ticker = yf.Ticker(<Stock Symbol>)
stock_history = stock_ticker.history(period= <Time duration to fetch history e.g. 1y>))

  • YfinDailyLambdaScheduleRule – Una regla de EventBridge para activar la YfinDailyLambda funciona diariamente para obtener los últimos datos bursátiles.
  • InvokeYfinDailyLambda e InvokeLambdaFunction – Un recurso de CloudFormation personalizado y su función Lambda para invocar el YfinDailyLambda funciona como parte de la creación de la pila para recuperar los datos iniciales.
  • ObtenerIndexLambda – Esta función toma un nombre de índice como entrada y devuelve la lista de acciones en el índice dado.
  • ObtenerStockChangeLambda – Esta función toma una lista de acciones y el número de días como entrada, recupera los datos de las acciones del depósito S3, calcula el cambio porcentual durante el período para las acciones y devuelve los datos.
  • GetStockTechAnalysisLambda – Esta función toma una lista de acciones, el número de días y un indicador técnico como entrada y devuelve el último cierre y el indicador técnico durante la cantidad de días para la lista de acciones dada. Por ejemplo:
# Sample code to calculate Simple Moving Average,  a technical indicator
from ta.trend import SMAIndicator
indicator_ta = SMAIndicator(<PAndas series with Close price>, window=<SMA window number of days>)
stock_SMA = indicator_ta.sma_indicator()

  • StockBotAgente – El agente de Amazon Bedrock creado con el modelo Claude 3 Sonnet de Anthropic con tres grupos de acciones, cada uno asignado a una función Lambda. Damos instrucciones al agente en lenguaje natural. En nuestra solución, parte de nuestra instrucción es que “Puede buscar la lista de acciones en un índice determinado” para que el agente sepa que puede buscar acciones en un índice. Configuramos los grupos de acciones como parte del agente y utilizamos el estándar de esquema OpenAPI 3 para describir la funcionalidad Lambda, de modo que el agente comprenda cuándo y cómo invocar las funciones Lambda. El siguiente es un fragmento del esquema OpenAPI del grupo de acciones get-index donde describimos su funcionalidad, sus parámetros de entrada y salida y su formato:
{
"openapi": "3.0.0",
"info": {
"title": "Get Index list of stocks api",
"version": "1.0.0",
"description": "API to fetch the list of stocks in a given index"
},

"paths": {
"/get-index": {
"get": {
"summary": "Get list of stock symbols in index",
"description": "Based on provided index, return list of stock symbols in the index",
"operationId": "getIndex",
"parameters": [
{
"name": "indexName",
"in": "path",
"description": "Index Name",
"required": true,
"schema": {
"type": "string"
}
}
],

"responses": {
"200": {
"description": "Get Index stock list",
"content": {
"application/json": {
"schema": {
"type": "array",

Prueba la solución

Para probar la solución, complete los siguientes pasos:

  1. En la consola de Amazon Bedrock, elija Agentes en el panel de navegación.
  2. Elija el agente creado por la pila de CloudFormation.

  1. Bajo Pruebaelige el alias con el nombre Versión 1 y ampliar la Prueba

Ahora puedes ingresar preguntas para interactuar con el agente.

  1. Comencemos con la consulta “¿Puede darme una lista de acciones en Nasdaq?”.

Puedes ver la respuesta en la siguiente captura de pantalla. Ampliar el Paso de seguimiento en el panel derecho para ver el fundamento del agente y la llamada a la función Lambda.

  1. Ahora hagamos una pregunta que probablemente utilice los tres grupos de acción y sus funciones Lambda: “¿Puede darnos una lista de acciones que hayan crecido más del 10% en los últimos 6 meses y que también hayan cerrado por encima de su SMA de 20 días? Utilice acciones del índice Nasdaq”.

Obtendrá la respuesta que se muestra en la siguiente captura de pantalla y, en los pasos de seguimiento, verá las diversas funciones Lambda que se invocan en diferentes pasos a medida que el agente razona los pasos para llegar a la respuesta a la pregunta.

Puede realizar más pruebas con indicaciones adicionales, como:

  • ¿Puede darnos los tres principales ganadores en términos de porcentaje en los últimos 6 meses en el índice Nifty 50?
  • ¿Qué acciones cerraron sobre 20 SMA y 50 EMA en el índice FTSE 100?
  • ¿Puede darnos una lista de acciones que crecieron más del 10% en los últimos 6 meses y cerraron por encima de la SMA de 20 días y la EMA de 50 días? Utilice acciones del índice FTSE 100. Pregunta de seguimiento: De estas acciones, ¿hay alguna que haya crecido más del 25% en los últimos meses? Si es así, ¿puede darme las acciones y su porcentaje de crecimiento en 6 meses?

Invocar programáticamente al agente

Cuando esté satisfecho con el rendimiento de su agente, puede crear una aplicación para invocar al agente mediante programación usando el Agente de invocación API. El ID del agente y el ID del alias del agente necesarios para invocar el alias del agente mediante programación se pueden encontrar en la página Salidas pestaña de la pila de CloudFormation, titulada AgentId y AgentAliasIdrespectivamente. Para obtener más información sobre la invocación programática, consulte lo siguiente Ejemplo de Python y Ejemplo de JavaScript.

Limpiar

Para evitar cargos en su cuenta de AWS, limpie los recursos aprovisionados de la solución:

  1. En la consola de Amazon S3, vaciar el depósito S3 creado como parte de la pila de CloudFormation. El nombre del depósito debe comenzar con el nombre de la pila que ingresó al crear la pila de CloudFormation. También puede verificar el nombre del depósito en la pila de CloudFormation. Recursos
  2. En la consola de AWS CloudFormation, seleccione la pila que creó para esta solución y elija Borrar.

Conclusión

En esta publicación, mostramos cómo puede utilizar Amazon Bedrock Agents para llevar a cabo tareas complejas que necesitan una orquestación de múltiples pasos a través de instrucciones en lenguaje natural. Con los agentes, puede automatizar tareas para sus clientes y responder preguntas por ellos. Le animamos a explorar el Guía del usuario de agentes de Amazon Bedrock para comprender mejor sus capacidades y utilizarlas para sus casos de uso.


Sobre los autores

Bharat Sridharan es gerente técnico senior de cuentas en AWS y trabaja con clientes estratégicos de AWS para optimizar de manera proactiva sus cargas de trabajo en AWS. Bharath también se especializa en servicios de aprendizaje automático de AWS con un enfoque en IA generativa.