En esta publicación de blog, demostramos técnicas de ingeniería rápidas para generar análisis precisos y relevantes de datos tabulares utilizando un lenguaje específico de la industria. Esto se hace proporcionando datos de muestra en contexto de modelos de lenguaje grandes (LLM) con características y etiquetas en el mensaje. Los resultados son similares a los LLM de ajuste fino sin las complejidades del ajuste fino de modelos. Usamos un método llamado Aprendizaje Tabular Generativo (GTL) basado en el documento técnico. De lo supervisado a lo generativo: un paradigma novedoso para el aprendizaje profundo tabular con modelos de lenguaje grandes y demostrar las ventajas de GTL utilizando cuadernos JupyterLab totalmente administrados en Cuadernos de Amazon SageMaker para interactuar con los modelos Meta Llama alojados en Amazon SageMaker o Roca Amazónica. Puede consultar cuadernos de referencia adicionales en muestras-aws para saber cómo utilizar los modelos Llama de Meta alojados en Amazon Bedrock.
Requisitos previos
Las siguientes secciones describen los requisitos previos necesarios para esta demostración. Puede implementar estos pasos desde el Consola de administración de AWS o utilizando la última versión del Interfaz de línea de comandos de AWS (AWS CLI).
- Acceso a LLM como los modelos Llama de Meta alojados en Amazon SageMaker o Amazon Bedrock
- Configuración del dominio de Amazon SageMaker configurada con cuadernos de JupyterLab y las bibliotecas y paquetes de Python necesarios para interactuar con los LLM.
- Conjuntos de datos tabulares de muestra de la industria financiera formateados como datos estructurados (estamos utilizando datos de fondos cotizados en bolsa de Kaggle) disponibles para consultas mediante un motor SQL como Amazon Athena.
- Conocimiento de técnicas de ingeniería de indicaciones de IA generativa para proporcionar a los LLM contexto relevante y datos de muestra.
- Capacidad para evaluar y comparar los resultados generados por LLM para determinar su precisión y relevancia para la tarea de análisis.
- Comprensión de los datos de la industria financiera y conocimiento de cómo organizar y consultar estos datos en un formato tabular estructurado consumible por LLM.
- Conocimiento del dominio de la industria al que pertenecen los datos para determinar las características y etiquetas apropiadas para solicitudes de datos de muestra.
Datos de la industria financiera
En la industria financiera, los datos pueden tener la forma de una tabla en archivos PDF o datos estructurados en una base de datos. El siguiente es un ejemplo de un conjunto de datos de información financiera para fondos cotizados en bolsa (ETF) de Kaggle en un formato tabular estructurado que utilizamos para probar nuestra solución.
Un usuario puede hacer una pregunta relacionada con el negocio o la industria sobre los ETF.
NOTA: Dado que utilizamos un motor de consulta SQL para consultar el conjunto de datos para esta demostración, las indicaciones y los resultados generados mencionan SQL a continuación.
# Business question
question = "Please provide a list of about 100 ETFs or ETNs names with exposure to US markets"
# Generate a prompt to get the LLM to provide an SQL query
SQL_SYS_PROMPT = PromptTemplate.from_template(tmp_sql_sys_prompt).format(
question=question,
table_schema=table_schema_etf
)
results = get_llm_sql_analysis(
question=question,
sql_sys_prompt=SQL_SYS_PROMPT,
qna_sys_prompt=QNA_SYS_PROMPT
)
Después de recuperar los datos del conjunto de datos, se envían al LLM alojado en Amazon Bedrock (consulte la lista de modelos compatibles en Amazon Bedrock) para su análisis y genera una respuesta a la pregunta o consulta del usuario en lenguaje natural.
La pregunta del ejemplo anterior no requiere muchos análisis complejos de los datos devueltos por el conjunto de datos del ETF. Recibimos una respuesta del LLM basada en su análisis de los datos en un lenguaje satisfactorio para la industria o relevante para el negocio:
LLM SQL Analysis:
After analyzing the provided SQL query results, I can conclude that the list of ETFs/ETNs does not primarily focus on US markets. Instead, it appears to be a comprehensive list of bond ETFs/ETNs with a global scope, covering various regions, currencies, and bond types.
Here are some key observations:
1. **Global coverage**: The list includes ETFs/ETNs tracking bond markets in Europe (e.g., Eurozone, UK), the US, and globally diversified indices.
2. **Bond types**: The list covers a range of bond types, including corporate bonds, government bonds, high-yield bonds, and green bonds.
3. **Currency exposure**: ETFs/ETNs are denominated in various currencies, such as EUR, USD, and GBP, with some offering hedged exposure to mitigate currency risks.
4. **ESG and SRI focus**: A significant portion of the list consists of ETFs/ETNs with an Environmental, Social, and Governance (ESG) or Socially Responsible Investing (SRI) focus, which suggests a emphasis on sustainable investing.
To answer the original question, I can identify a subset of ETFs/ETNs from the list that have exposure to US markets:
**US-focused ETFs/ETNs:**
1. xxxx USD Corporate Bond 0-3yr ESG UCITS ETF USD (Dist)
2. xxxx USD Corporate Bond ESG 0-3yr UCITS ETF EUR Hedged (Acc)
3. xxxx ESG USD High Yield (DR) UCITS ETF - Dist
4. xxxx USD High Yield Corporate Bond ESG UCITS ETF USD (Acc)
5. xxxx USD High Yield Corporate Bond ESG UCITS ETF USD (Dist)
6. xxxx Index US Corporate SRI UCITS ETF DR (C)
7. xxxx Index US Corporate SRI UCITS ETF DR Hedged EUR (D)
8. xxxx USD Corporate Bond ESG UCITS ETF (Acc)
9. xxxx USD Corporate Bond ESG UCITS ETF (Dist)
10. xxxx ESG USD High Yield Corporate Bond UCITS ETF 1C
11. xxxx ETF (LU) xxxx xxxx US Liquid Corporates Sustainable UCITS ETF (USD) A-dis
12. xxxx USD Corporate Green Bond UCITS ETF 2C Acc USD
Please note that this subset is not exhaustive, and there may be other ETFs/ETNs in the original list that have some exposure to US markets. Additionally, investors should carefully evaluate the investment objectives, risks, and characteristics of each ETF/ETN before making any investment decisions.
NOTA: Los nombres de los ETF de salida no representan los datos reales del conjunto de datos utilizado en esta demostración.
NOTA: Los resultados generados por los LLM no son deterministas y pueden variar en sus pruebas.
¿Cuál sería la respuesta o el análisis de datos del LLM cuando las preguntas del usuario en lenguaje natural específico de la industria se vuelvan más complejas? Para responder preguntas que requieren un análisis más complejo de los datos con un contexto específico de la industria, el modelo necesitaría más información que depender únicamente de su conocimiento previamente entrenado.
Descripción general de la solución
Le recomendamos que piense en esta pregunta antes de comenzar: ¿Puede mejorar el contexto proporcionado al LLM en el mensaje junto con la pregunta en lenguaje natural del usuario para generar mejores resultados, antes de intentar ajustar los LLM, lo que requiere configurar procesos MLOPS y entornos, recopilar y preparar conjuntos de datos etiquetados relevantes y precisos, y más?
Proponemos un marco GTL intermedio utilizando el modelo Meta Llama en Amazon Bedrock. El marco propuesto no pretende reemplazar la opción de ajuste. El siguiente diagrama ilustra este marco de GTL para LLM.
GTL es un tipo de técnica de indicaciones de pocas tomas en la que proporcionamos la siguiente información sobre los datos recuperados del conjunto de datos estructurados como parte de la solicitud al LLM:
- Una personalidad que el LLM utilizará al generar el análisis de datos (que proporciona sugerencias al modelo para utilizar datos específicos de la industria con los que ya ha sido entrenado previamente)
- Características y descripciones de los datos.
- Etiquetas de datos y descripciones.
- Un pequeño conjunto de datos de muestra que contiene características
- Un análisis de muestra como ejemplo.

El siguiente es un ejemplo de mensaje GTL:
instructions = [
{
"role": "user",
"content": """Given the following SQL query results: {query_results}
And the original question: {question}
You are an expert in Exchange-Traded Funds or ETFs and Exchange-Traded Notes or ETNs .
Based on the features of the funds or notes, please predict how expensive the funds are for investors.
I will supply multiple instances with features and the corresponding label for reference.
Please refer to the table below for detailed descriptions of the features and label:
— feature description —
Features:
isin: International Securities Identification Number
wkn: Wertpapierkennnummer or German securities identification number
name: ETF Name
fundprovider: Financial Company providing the ETF
legalstructure: Exchange Traded Fund (ETF) or Exchange Traded Notes (ETN)
totalexpenseratio: An expense ratio is the cost of owning an ETF or ETN, the management fee paid to the fund company for the benefit of owning the fund,
paid annually and measured as a percent of your investment in the fund. 0.30 percent means you’ll pay $30 per year for every $10,000 you have invested in the fund.
— label description —
Expensive: Whether the fund is expensive for investors or not. 0 means not expensive, 1 means expensive.
— data —
|isin|wkn|name|fundprovider|legalstructure|totalexpenseratio|Expensive|
|GB00BNRRxxxx |A3xxxx|xxxx Physical Staked Cardano|xxxx|ETN|0.0|0|
|BGPLWIG0xxxx|A2xxxx|xxxx Poland WIGxxx UCITS ETF|xxxx|ETF|0.0138|0|
|CH044568xxxx|A2Txxxx|xxxx Crypto Basket Index ETP|xxxx|ETN|0.025|1|
|CH1114873xxxx|A3Gxxxx|xxxx Solana ETP|xxxx|ETN|0.025|1|
|GB00BNRRxxxx|A3xxxx|xxxx Physical Staked Algorand|xxxx|ETN|0.0|<MASK>|
Please use the supplied data to predict the <MASK>. Fund is expensive[1] or not[0]?
Answer: 0
Please provide an analysis and interpretation of the results to answer the original {question}.
"""
}
]
QNA_SYS_PROMPT = format_instructions(instructions)
En nuestro mensaje GTL, destacamos solo el subconjunto de columnas en el conjunto de datos que son relevantes para producir un análisis preciso y relevante de los datos basado en la industria de las 129 columnas posibles en el conjunto de datos EFT que hemos elegido y también ejemplos de cómo para interpretar los datos.
Ejemplos de casos de uso
Veamos algunos ejemplos de mensajes con análisis generado. La siguiente pregunta requiere un análisis complejo de datos de múltiples columnas de la base de datos del ETF, basado en el conocimiento de la industria. En este ejemplo, el usuario intenta encontrar ETF (fondos) que proporcionen mayores dividendos y menor volatilidad en el valor, que son una característica deseada de los fondos que los inversores buscan en los fondos en los que quieren invertir.
# Business question
question = "Name the least risk funds that yields higher dividends and isn't volatile"
# Generate a prompt to get the LLM to provide an SQL query
SQL_SYS_PROMPT = PromptTemplate.from_template(tmp_sql_sys_prompt).format(
question=question,
table_schema=table_schema_etf
)
results = get_llm_sql_analysis(
question=question,
sql_sys_prompt=SQL_SYS_PROMPT,
qna_sys_prompt=QNA_SYS_PROMPT
)
La siguiente es nuestra respuesta sin el mensaje GTL:
LLM SQL Query:
SELECT
name,
yeardividendyield,
yearvolatilitycur,
fiveyearreturncur
FROM
etftable
WHERE
yeardividendyield > 3
AND yearvolatilitycur < 10
AND fiveyearreturncur > 5
ORDER BY
yearvolatilitycur ASC
LIMIT 10;
LLM SQL Analysis:
Based on the provided data, I will analyze the features and predict the GoodInvestment label for each fund. Then, I will identify
the least risk funds that yield higher dividends and aren't volatile.
**Analysis**
From the data, I observe the following:
1. **Low total expense ratio**: Funds with lower totalexpenseratio are more desirable, as they charge lower management fees.
A lower expense ratio indicates that the fund is cheaper to own.
2. **High five-year return**: Funds with higher fiveyearreturncur indicate better performance over the past 5 years.
3. **Non-zero yearly dividend yield**: Funds with non-zero yeardividendyield provide a regular income stream to investors.
**Prediction of GoodInvestment label**
Based on the analysis, I predict the GoodInvestment label for each fund as follows:
|isin|GoodInvestment|
| --- | --- |
|LU17815xxxx|1|
|LU17815xxxx7|1|
|IE00B5Bxxxx|0|
|LU14078xxxx|1|
|IE00B4xxxx|1|
|LU17815xxxx|1|
**Least risk funds that yield higher dividends and aren't volatile**
To identify the least risk funds, I will consider the following criteria:
1. **Low volatility**: Funds with lower fiveyearreturncur volatility are less risky.
2. **Higher dividend yield**: Funds with higher yeardividendyield provide a regular income stream to investors.
3. **Low expense ratio**: Funds with lower totalexpenseratio are cheaper to own.
Based on these criteria, I recommend the following funds:
1. **xxxxUK NT (DR) UCITS ETF - Dist (LU17815xxxx)**: This fund has a low expense ratio (0.04%), a relatively high dividend yield (0.0379),
and a moderate five-year return (0.2296).
2. **xxxxUS Equity (DR) UCITS ETF - Dist (LU17815xxxx)**: This fund has a low expense ratio (0.04%), a relatively high dividend yield (0.0196),
and a high five-year return (0.7337).
3. **xxxxEURO STOXX 50 UCITS ETF EUR (IE00B4Kxxxx)**: This fund has a moderate expense ratio (0.05%), a relatively high dividend yield (0.0297),
and a moderate five-year return (0.3927).
These funds offer a balance between dividend yield, low expense ratio, and moderate volatility, making them suitable for investors seeking a
relatively stable investment with a regular income stream.
Vemos que la recuperación de datos solo utiliza la volatilidad anual y no la información de volatilidad de 3 y 5 años. Además, algunos de los fondos no tienen datos de volatilidad en el conjunto de datos (no hay valores para la volatilidad de 1, 3 o 5 años).
La siguiente es una pregunta modificada que solicita consideraciones de columnas adicionales para datos de 3 y 5 años.
# Business question
question = "Name the least risk funds that yields higher dividends and isn't volatile based on five year, three year and one year volatiliy data"
# Generate a prompt to get the LLM to provide an SQL query
SQL_SYS_PROMPT = PromptTemplate.from_template(tmp_sql_sys_prompt).format(
question=question,
table_schema=table_schema_etf
)
results = get_llm_sql_analysis(
question=question,
sql_sys_prompt=SQL_SYS_PROMPT,
qna_sys_prompt=QNA_SYS_PROMPT
)
Usamos el siguiente mensaje GTL con etiquetas para interpretar datos de 1 año, 3 años y 5 años o la falta de datos:
instructions = [
{
"role": "user",
"content": """Given the following SQL query results: {query_results}
And the original question: {question}
You are an expert in Exchange-Traded Funds or ETFs and Exchange-Traded Notes or ETNs .
Based on the features of the funds or notes, please predict best funds for investors to invest in.
I will supply multiple instances with features and the corresponding label for reference.
Please refer to the table below for detailed descriptions of the features and label:
— feature description —
Features:
isin: International Securities Identification Number
wkn: Wertpapierkennnummer or German securities identification number
name: ETF Name
fundprovider: Financial Company providing the ETF
legalstructure: Exchange Traded Fund (ETF) or Exchange Traded Notes (ETN)
yeardividendyield: Yearly Dividend yield as a percentage of total investment
fiveyearreturncur: Returns over past 5 year period as a percentage of investment
totalexpenseratio: An expense ratio is the cost of owning an ETF or ETN, the management fee paid to the fund company for the benefit of owning the fund,
paid annually and measured as a percent of your investment in the fund. 0.30 percent means you’ll pay $30 per year for every $10,000 you have invested in the fund.
— label description —
volatile: The fund has low fiveyearvolatilitycur, threeyearvolatilitycur, yearvolatilitycur. 0 means not volatile, 1 means volatile, 2 means cannot be determined.
— data —
|isin|name|fiveyearvolatilitycur|threeyearvolatilitycur|yearvolatilitycur|Risk|
|LU033504xxxx|xxxx II EUR Overnight Rate Swap UCITS ETF 1D|8.0E-4|9.0E-4|0.0011|0|
|FR001051xxxx|Lyxor Euro Overnight Return UCITS ETF - Acc|8.0E-4|9.0E-4|0.0011|0|
|LU0290358xxxx|xxxxII EUR Overnight Rate Swap UCITS ETF 1C|9.0E-4|0.001|0.0013|0|
|BGCROEX03xxxx|xxxx UCITS ETF|0.675|0.8606|1.4787|1|
|IE000RN0xxxx|xxxxDisruptive Technology Real Estate UCITS ETF Acc||||2|
|GB00BNRRxxxx|xxxxPhysical Staked xxxx||||2|
|FR001075xxxx|xxxx ETF xxxx0-6 Months Euro Investment Grade UCITS ETF EUR (C)|0.0014|0.0016|0.0021|<MASK>|
Please use the supplied data to predict the <MASK>. Fund is volatile[1] or not[0] or cannot-be-determined[2]?
Answer: 1
Please provide an analysis and interpretation of the results to answer the original {question}.
"""
}
]
Vemos que con indicaciones adicionales el modelo utiliza todas las columnas de volatilidad en el conjunto de datos (1 año, 3 años y 5 años) y proporciona sugerencias de salida para cuando hay datos presentes o faltantes en las columnas de volatilidad.
La siguiente es nuestra respuesta con indicaciones GTL:
LLM SQL Query:
SELECT
name,
fundprovider,
yeardividendyield,
fiveyearvolatilitycur,
threeyearvolatilitycur,
yearvolatilitycur
FROM
etftable
WHERE
yeardividendyield > 0
AND fiveyearvolatilitycur < (SELECT AVG(fiveyearvolatilitycur) FROM etftable)
AND threeyearvolatilitycur < (SELECT AVG(threeyearvolatilitycur) FROM etftable)
AND yearvolatilitycur < (SELECT AVG(yearvolatilitycur) FROM etftable)
ORDER BY
yeardividendyield DESC,
fiveyearvolatilitycur,
threeyearvolatilitycur,
yearvolatilitycur
LIMIT 10;
LLM SQL Analysis:
Based on the provided data, I will analyze and interpret the results to answer the original question.
**Least Risk Funds with Higher Dividend Yields and Low Volatility**
To identify the least risk funds, I will consider the following criteria:
1. **Low Volatility**: Funds with low five-year, three-year, and one-year volatility (less than 0.1).
2. **Higher Dividend Yields**: Funds with a higher yearly dividend yield (greater than 0.07).
3. **Low Expense Ratio**: Funds with a low total expense ratio (less than 0.1).
After analyzing the data, I have identified the following funds that meet the above criteria:
1. **xxxx Global Select Dividend 100 Swap UCITS ETF 1D**:
* Yearly Dividend Yield: 0.0938
* Five-year Volatility: 0.1096
* Three-year Volatility: 0.1125
* One-year Volatility: 0.1236
* Expense Ratio: Not available in the data
2. **xxxx Emerging Markets Equity Income UCITS ETF**:
* Yearly Dividend Yield: 0.0797
* Five-year Volatility: 0.1532
* Three-year Volatility: 0.1471
* One-year Volatility: 0.1335
* Expense Ratio: Not available in the data
3. **xxxx FTSE EM High Dividend Low Volatility UCITS ETF**:
* Yearly Dividend Yield: 0.0787
* Five-year Volatility: 0.1566
* Three-year Volatility: 0.1621
* One-year Volatility: 0.1439
* Expense Ratio: Not available in the data
These funds have relatively low volatility and higher dividend yields compared to the other funds in the dataset. However, please note that the
expense ratio is not available in the data, which is an important factor to consider when evaluating the overall cost of investing in an ETF.
**Additional Considerations**
When evaluating these funds, investors should also consider other factors such as:
1. **Fund Provider**: The reputation and experience of the fund provider can impact the fund's performance and risk profile.
2. **Legal Structure**: The legal structure of the fund (ETF or ETN) can affect its tax efficiency, liquidity, and regulatory environment.
3. **Investment Strategy**: The fund's investment strategy and asset allocation can influence its risk profile and potential returns.
In conclusion, the three funds mentioned above appear to be the least risk funds with higher dividend yields and low volatility based
on the provided data. However, investors should conduct further research and consider additional factors before making an investment decision.
Como podemos ver la recuperación de datos es más precisa. Además, el análisis generado consideró toda la información de volatilidad en el conjunto de datos (1 año, 3 años y 5 años) y tuvo en cuenta los datos de volatilidad presentes o faltantes.
A partir de este resultado, se recomienda construir un conjunto seleccionado de mensajes GTL junto con las preguntas más comunes de los usuarios pertenecientes a conjuntos de datos que los usuarios preguntarán. Las indicaciones deberán ser creadas por especialistas en conjuntos de datos que tengan un conocimiento profundo del conjunto de datos desde la perspectiva de la industria y puedan proporcionar el contexto adecuado a los LLM. Las organizaciones pueden utilizar una biblioteca rápida de este tipo para crear aplicaciones interactivas que permitan a los usuarios comerciales habituales que quizás no tengan un conocimiento o comprensión profundos de los conjuntos de datos subyacentes interactuar y obtener información de estos conjuntos de datos mediante preguntas en lenguaje natural.
Conclusión
A medida que se lanzan LLM más nuevos y más grandes, mejoran en la generación de un análisis de conjuntos de datos estructurados utilizando un lenguaje específico de la industria. Sin embargo, hay margen de mejora en el análisis de datos procedentes de conjuntos de datos estructurados. Una opción es ajustar el LLM para mejorar la relevancia y el lenguaje del análisis de datos generados utilizando un lenguaje empresarial específico. El ajuste requiere esfuerzos y costos adicionales (recopilación de datos relevantes, etiquetado de los datos, costos adicionales involucrados en la adquisición y el aprovisionamiento, y mantenimiento del entorno informático de ajuste).
En esta publicación, mostramos un método con indicaciones de pocos disparos utilizando modelos Meta Llama disponibles a través de Roca Amazónica que puede mejorar el análisis de los datos específico de la industria o del negocio con solo una ingeniería rápida. (Para ciertos casos de uso, es posible que sea necesario realizar ajustes finos. Consulte Precios de Amazon Bedrock para costos estimados con o sin el uso de modelos ajustados).
Pruebe esta solución con sus propios casos de uso y conjuntos de datos específicos de la industria y háganos saber sus comentarios y preguntas en los comentarios.
NOTA: Los autores del blog no brindan ningún consejo financiero o de inversión en esta publicación de blog, ni recomiendan este conjunto de datos ni los ETF mencionados en este conjunto de datos.
Acerca de los autores
Randy DeFauw es arquitecto principal de soluciones sénior en AWS. Tiene un MSEE de la Universidad de Michigan, donde trabajó en visión por computadora para vehículos autónomos. También tiene un MBA de la Universidad Estatal de Colorado. Randy ha ocupado diversos puestos en el ámbito tecnológico, desde ingeniería de software hasta gestión de productos. Ingresó al espacio de Big Data en 2013 y continúa explorando esa área. Trabaja activamente en proyectos en el espacio ML y ha presentado en numerosas conferencias, incluidas Strata y GlueCon.
Arghya Banerjee es un arquitecto sénior de soluciones en AWS en el área de la Bahía de San Francisco y se centra en ayudar a los clientes a adoptar y utilizar la nube de AWS. Está enfocado en servicios de Big Data, Data Lakes, Streaming y análisis por lotes y tecnologías de IA generativa.
Ravi Ganesha es un arquitecto de soluciones sénior en AWS en el área de Austin, Texas, y se centra en ayudar a los clientes a abordar sus problemas comerciales mediante la adopción de la nube. Se centra en tecnologías de análisis, resiliencia, seguridad e inteligencia artificial generativa.
Varun Mehta es arquitecto sénior de soluciones en AWS. Le apasiona ayudar a los clientes a crear soluciones bien diseñadas a escala empresarial en la nube de AWS. Trabaja con clientes estratégicos que utilizan AI/ML para resolver problemas comerciales complejos. Fuera del trabajo, le encanta pasar tiempo con su esposa e hijos.