Prompts financeiros e quantitativos
Análise de resultados financeiros, pontuação de risco e prompts para extração de documentos da SEC.
Prompts financeiros e quantitativos é uma aula grátis de AI Prompt Engineering no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AI Prompt Engineering, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AI Prompt Engineering inclui 4 aulas no total.
Contexto da elaboração de instruções para o setor financeiro
A elaboração de instruções para o setor financeiro extrai dados estruturados de documentos não estruturados — relatórios de resultados, documentos apresentados à SEC e notas de analistas. A precisão é importante: interpretar incorretamente um valor de receita ou inverter a direção do crescimento pode causar erros subsequentes graves.
Instrução para extração de relatório de resultados
Os relatórios de resultados seguem uma estrutura parcialmente padronizada. Uma instrução de extração direcionada recupera com precisão os principais indicadores financeiros, lidando tanto com variantes GAAP quanto não GAAP.
EARNINGS_EXTRACTION_PROMPT = '''Extract the following financial metrics from the earnings report below.
Return ONLY a JSON object with these exact keys.
If a value is not stated, use null.
Do not calculate or derive values — only extract explicitly stated figures.
Required fields:
- revenue_usd_millions: total net revenue (GAAP)
- revenue_yoy_pct: year-over-year revenue growth percentage
- gross_margin_pct: gross margin percentage (GAAP)
- operating_income_usd_millions: GAAP operating income/loss
- ebitda_usd_millions: Adjusted EBITDA (non-GAAP, if reported)
- net_income_usd_millions: GAAP net income/loss
- eps_diluted: diluted EPS (GAAP)
- eps_adj_diluted: adjusted diluted EPS (non-GAAP, if reported)
- guidance_next_quarter_revenue_low: low end of next quarter revenue guidance
- guidance_next_quarter_revenue_high: high end of next quarter revenue guidance
- fiscal_period: e.g. "Q3 FY2024"
Earnings Report:
{report_text}'''
import anthropic, json
client = anthropic.Anthropic(api_key='YOUR_API_KEY')
def extract_earnings(report_text):
response = client.messages.create(
model='claude-opus-4-5', max_tokens=1000,
messages=[{'role': 'user', 'content':
EARNINGS_EXTRACTION_PROMPT.format(report_text=report_text)}]
)
return json.loads(response.content[0].text)Instrução para cálculo de índices financeiros
Quando quiser que o modelo calcule índices financeiros, forneça explicitamente a fórmula. Não presuma que o modelo conheça a definição exata — analistas diferentes usam fórmulas ligeiramente diferentes.
RATIO_PROMPT = '''Calculate the following financial ratios using the data provided.
Show your work: state the formula, plug in the numbers, and give the result.
Round all ratios to 2 decimal places.
Ratios to calculate:
1. Gross Margin = (Revenue - COGS) / Revenue * 100
2. Operating Margin = Operating Income / Revenue * 100
3. Net Margin = Net Income / Revenue * 100
4. Current Ratio = Current Assets / Current Liabilities
5. Quick Ratio = (Current Assets - Inventory) / Current Liabilities
6. Debt-to-Equity = Total Debt / Total Shareholders Equity
7. Return on Equity (ROE) = Net Income / Average Shareholders Equity * 100
8. EV/EBITDA = Enterprise Value / EBITDA (if EV is provided)
Financial Data:
{financial_data}'''
def calculate_ratios(financial_data):
response = client.messages.create(
model='claude-opus-4-5', max_tokens=2000,
messages=[{'role': 'user', 'content':
RATIO_PROMPT.format(financial_data=financial_data)}]
)
return response.content[0].textExtração do crescimento ano a ano
O crescimento YoY pode ser apresentado como variação absoluta, porcentagem ou ambos. A instrução deve lidar com todos os casos e distinguir entre crescimento divulgado e crescimento em moeda constante.
YOY_PROMPT = '''From the financial document below, extract year-over-year growth metrics.
For each metric found, provide:
- metric_name: e.g. "Revenue", "Gross Profit", "Operating Income"
- current_period: value and period (e.g. "$4.2B, Q3 2024")
- prior_period: value and period (e.g. "$3.8B, Q3 2023")
- yoy_change_pct: percentage change (positive = growth, negative = decline)
- constant_currency_yoy_pct: if reported, the constant-currency growth rate (else null)
- commentary: any management commentary on drivers of the change
IMPORTANT:
- Do not mix GAAP and non-GAAP figures in the same row.
- Mark each row with gaap: true or false.
- If growth is reported only in narrative form (e.g. "revenue grew 15%"),
still capture it but set current_period and prior_period to null.
Document:
{document_text}'''
def extract_yoy_growth(document_text):
import json
response = client.messages.create(
model='claude-opus-4-5', max_tokens=2000,
messages=[{'role': 'user', 'content':
YOY_PROMPT.format(document_text=document_text)}]
)
return response.content[0].textPadrão de extração de documentos da SEC
Os documentos da SEC (10-K, 10-Q) têm cabeçalhos de seção padronizados. Direcione a extração para seções específicas usando instruções que considerem as seções, reduzindo o uso da janela de contexto e melhorando a precisão.
SEC_EXTRACTION_PROMPT = '''You are analyzing a {filing_type} SEC filing.
From {section_name}, extract the following:
{extraction_targets}
Rules:
1. Quote exact figures as stated — do not round or reformat numbers.
2. Note the fiscal year end and reporting currency.
3. If the section uses tables, extract all rows of the table.
4. Flag any restatements: "[RESTATED from prior filing]".
5. Note any forward-looking statements with [FLS] tag.
Filing Section Text:
{section_text}'''
# Section targets by filing type
SECTION_TARGETS = {
'10-K': {
'Item 7 MD&A': 'Revenue breakdown by segment, key cost drivers, liquidity discussion',
'Item 1A Risk Factors': 'Top 5 risks by category (operational, financial, regulatory, competitive)',
'Item 8 Financial Statements': 'Consolidated income statement, balance sheet key line items'
},
'10-Q': {
'Item 1 Financial Statements': 'Revenue, operating income, cash flow from operations',
'Item 2 MD&A': 'Quarter-over-quarter and YoY comparisons'
}
}
def extract_sec_section(filing_type, section_name, section_text):
targets = SEC_EXTRACTION_TARGETS = SECTION_TARGETS[filing_type][section_name]
response = client.messages.create(
model='claude-opus-4-5', max_tokens=3000,
messages=[{'role': 'user', 'content':
SEC_EXTRACTION_PROMPT.format(
filing_type=filing_type, section_name=section_name,
extraction_targets=targets, section_text=section_text
)}]
)
return response.content[0].textResumo dos fatores de risco
Os documentos da SEC podem ter mais de 50 páginas de fatores de risco. Uma instrução de resumo que categorize e classifique os riscos permite que os analistas identifiquem rapidamente os mais relevantes.
RISK_FACTOR_PROMPT = '''Summarize the risk factors from this SEC filing.
Categories to use:
1. Financial Risks (liquidity, debt, interest rate, FX)
2. Operational Risks (supply chain, technology, key personnel)
3. Regulatory / Legal Risks (compliance, litigation, government action)
4. Market / Competitive Risks (competition, market conditions, pricing)
5. Macroeconomic Risks (recession, inflation, geopolitical)
For each risk:
- Title: 5-8 word summary
- Category: one of the 5 above
- Materiality: HIGH / MEDIUM / LOW (based on language used: "could significantly...",
"may adversely affect...", "could result in material...")
- Summary: 2-3 sentence description
Sort each category by Materiality descending.
Limit to top 3 risks per category (15 total max).
Risk Factors Section:
{risk_factors_text}'''
def summarize_risk_factors(risk_factors_text):
response = client.messages.create(
model='claude-opus-4-5', max_tokens=3000,
messages=[{'role': 'user', 'content':
RISK_FACTOR_PROMPT.format(risk_factors_text=risk_factors_text)}]
)
return response.content[0].textGeração de notas de analista
Depois de extrair e analisar os dados financeiros, gere uma nota no estilo de um analista que resuma as conclusões. A instrução deve impor a estrutura e o tom objetivo de uma pesquisa financeira profissional.
ANALYST_NOTE_PROMPT = '''Write an equity research analyst note for the earnings results below.
STRUCTURE (required sections):
1. Headline: one sentence (include ticker, period, key takeaway, and target price if updated)
2. Investment Thesis: 2-3 sentences on the core bull/bear case
3. Earnings Summary: revenue, gross margin, EPS vs consensus estimates
4. Key Positives: 3 bullet points
5. Key Risks/Concerns: 3 bullet points
6. Guidance Commentary: management outlook, consensus vs guidance delta
7. Valuation: brief note on current multiple vs historical and peers
8. Recommendation: OUTPERFORM / MARKET PERFORM / UNDERPERFORM with 12-month target
TONE: Professional, data-driven, third person. Attribute claims to the company
("Management guided...", "The company reported...").
Do not use vague language — state numbers.
DISCLAIMER: This is AI-generated analysis for informational purposes only.
It does not constitute investment advice. Past performance is not indicative
of future results.
Earnings Data:
{earnings_data}'''Padrões de avisos financeiros
Assim como as ferramentas jurídicas e médicas, as ferramentas financeiras de IA exigem avisos de isenção de responsabilidade obrigatórios. Insira-os na camada da aplicação para garantir que nunca sejam omitidos.
FINANCIAL_DISCLAIMER = (
'\n\n---\n'
'DISCLAIMER: This content is generated by an AI system for informational '
'and educational purposes only. It does not constitute investment advice, '
'a solicitation to buy or sell any security, or a recommendation to invest. '
'Financial data extracted by AI may contain errors — always verify against '
'primary source filings. Past performance does not guarantee future results. '
'Consult a licensed financial advisor before making investment decisions.'
)
def get_financial_analysis(prompt):
response = client.messages.create(
model='claude-opus-4-5', max_tokens=2000,
messages=[{'role': 'user', 'content': prompt}]
)
raw = response.content[0].text
return raw + FINANCIAL_DISCLAIMER
# Always use get_financial_analysis() rather than calling the API directly
# to ensure disclaimer is never accidentally omittedDesambiguação entre GAAP e não GAAP
Um dos erros mais comuns na extração financeira é misturar números GAAP e não GAAP. As instruções devem exigir explicitamente que o modelo identifique cada número e sinalize discrepâncias.
GAAP_PROMPT = '''Extract all income statement figures from the text below.
For every number:
- Label it as GAAP or Non-GAAP (Adjusted/Pro Forma)
- If the company reports both, show both on separate rows
- Never combine GAAP and Non-GAAP in a single calculation
Common non-GAAP labels to watch for:
"Adjusted", "Non-GAAP", "Pro Forma", "Normalized", "Underlying",
"Core", "Recurring", "Organic" (for revenue)
Output as a table:
| Metric | GAAP Value | Non-GAAP Value | Period |
|--------|------------|----------------|--------|
Also note in a separate section any reconciliation items between GAAP and Non-GAAP:
- Stock-based compensation
- Amortization of acquired intangibles
- Restructuring charges
- Any other adjustments
Document:
{document_text}'''
print('Always verify GAAP/Non-GAAP labels against the company\'s own reconciliation tables.')Análise de tendências em vários períodos
A extração de um único período oferece uma fotografia do momento. Uma instrução de análise de tendências compara os indicadores ao longo de vários períodos para revelar padrões de trajetória e de aceleração ou desaceleração.
TREND_PROMPT = '''Analyze the financial trend for {company_name} using the multi-period data below.
1. Create a summary table with these columns:
| Period | Revenue | Rev Growth YoY | Gross Margin | Op Margin | Net Margin |
2. Identify trends:
- Is revenue growth accelerating, decelerating, or stable?
- Margin expansion or compression trend?
- Any notable inflection points (period where trend changed direction)?
3. Key observations (5 bullet points max):
- Focus on directional changes, not just absolute numbers
- Note any seasonality patterns if visible in quarterly data
4. Risks in the trend:
- Flag any deterioration that management has not addressed
- Note if guidance implies trend continuation or reversal
Data ({num_periods} periods):
{multi_period_data}'''
def analyze_trend(company_name, multi_period_data, num_periods):
response = client.messages.create(
model='claude-opus-4-5', max_tokens=2000,
messages=[{'role': 'user', 'content':
TREND_PROMPT.format(
company_name=company_name,
multi_period_data=multi_period_data,
num_periods=num_periods
)}]
)
return response.content[0].textValidação: verificação cruzada dos números extraídos
Erros de extração financeira são perigosos. Crie uma etapa de validação que verifique os números extraídos usando identidades contábeis (por exemplo, lucro bruto = receita - COGS) para detectar alucinações ou erros de extração.
def validate_financials(extracted):
errors = []
# Check revenue consistency
if extracted.get('revenue_usd_millions') and extracted.get('cogs_usd_millions'):
calc_gp = extracted['revenue_usd_millions'] - extracted['cogs_usd_millions']
stated_gp = extracted.get('gross_profit_usd_millions')
if stated_gp and abs(calc_gp - stated_gp) > 1: # $1M tolerance
errors.append(
f'Gross profit mismatch: calculated {calc_gp:.1f}M '
f'vs stated {stated_gp:.1f}M'
)
# Check gross margin consistency
if extracted.get('revenue_usd_millions') and extracted.get('gross_profit_usd_millions'):
calc_gm = (extracted['gross_profit_usd_millions'] /
extracted['revenue_usd_millions']) * 100
stated_gm = extracted.get('gross_margin_pct')
if stated_gm and abs(calc_gm - stated_gm) > 0.5: # 0.5 pp tolerance
errors.append(
f'Gross margin mismatch: calculated {calc_gm:.1f}% '
f'vs stated {stated_gm:.1f}%'
)
return errors
# Always run validation after extraction
errors = validate_financials(extracted_data)
if errors:
print('Validation errors — manually verify:', errors)
else:
print('Validation passed')Verificação rápida
Ao extrair indicadores financeiros de um relatório de resultados, o modelo retorna uma margem bruta de 45%, mas os valores de receita e COGS indicam uma margem bruta de 51%. O que você deve fazer?
Resumo da elaboração de instruções financeiras
A elaboração de instruções financeiras e quantitativas exige precisão, identificação e validação:
- Instruções de extração: especifiquem nomes exatos dos campos e retornem JSON para processamento por máquina
- Fórmula explícita: forneça sempre a fórmula exata para os cálculos dos índices
- GAAP versus não GAAP: identifique cada número — nunca os misture nos cálculos
- Seções da SEC: direcione a instrução para seções específicas dos itens a fim de reduzir o ruído
- Validação: faça uma verificação cruzada usando identidades contábeis para detectar erros de extração
- Avisos de isenção de responsabilidade: sempre insira o aviso de isenção de responsabilidade sobre investimentos na camada da aplicação
Aprenda AI Prompt Engineering com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 53
- Aulas
- 199
Perguntas Frequentes
A aula “Prompts financeiros e quantitativos” é grátis?
Sim — o texto completo de “Prompts financeiros e quantitativos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AI Prompt Engineering, atualize para CoddyKit PRO. O curso de AI Prompt Engineering inclui 4 aulas no total.
O que vou aprender em “Prompts financeiros e quantitativos”?
Análise de resultados financeiros, pontuação de risco e prompts para extração de documentos da SEC. Você pratica AI Prompt Engineering com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar AI Prompt Engineering?
Nenhuma experiência prévia é necessária. AI Prompt Engineering no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Prompts financeiros e quantitativos”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de AI Prompt Engineering?
Sim. Cada aula de AI Prompt Engineering inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Padrões de prompts para o domínio jurídico
- Prompts médicos e clínicos
- Prompts financeiros e quantitativos
- Injeção de glossário e ontologia do domínio