Finansal ve Nicel İstemler
Kazanç analizi, risk puanlama ve SEC bildirimlerinden veri çıkarma istemleri.
Finansal ve Nicel İstemler, CoddyKit'te ücretsiz bir AI Prompt Engineering dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Prompt Engineering öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Prompt Engineering kursu toplamda 4 dersten oluşur.
Finans Alanında İstem Oluşturma Bağlamı
Finans alanında istem oluşturma, yapılandırılmamış belgelerden yapılandırılmış veriler çıkarır — kazanç raporları, SEC dosyalamaları ve analist notları. Kesinlik önemlidir: yanlış okunan bir gelir rakamı veya büyüme yönünün tersine çevrilmesi, sonraki süreçlerde ciddi hatalara yol açabilir.
Kazanç Raporu Çıkarma İstemi
Kazanç raporları yarı standart bir yapı izler. Hedefli bir çıkarma istemi, hem GAAP hem de GAAP dışı biçimleri ele alarak temel finansal ölçütleri doğru biçimde çıkarır.
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)Finansal Oran Hesaplama İstemi
Finansal oranları hesaplamasını istediğinizde formülü açıkça verin. Modelin kesin tanımı bildiğini varsaymayın — farklı analistler biraz farklı formüller kullanır.
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].textYıllık Bazda Büyüme Çıkarma
YoY büyümesi mutlak değişim, yüzde veya her ikisi olarak raporlanabilir. İstem tüm durumları ele almalı ve raporlanan büyümeyi sabit kur bazlı büyümeden ayırt etmelidir.
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].textSEC Bildirimlerini Çıkarma Deseni
SEC bildirimlerinde (10-K, 10-Q) standartlaştırılmış bölüm başlıkları bulunur. Bağlam penceresi kullanımını azaltmak ve kesinliği artırmak için bölüm bağlamını gözeten çıkarma istemleriyle belirli bölümleri hedefleyin.
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].textRisk Faktörlerini Özetleme
SEC bildirimlerinde risk faktörleri 50'den fazla sayfa tutabilir. Riskleri kategorilere ayırıp sıralayan bir özetleme istemi, analistlerin en önemli riskleri hızla belirlemesini sağlar.
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].textAnalist Notu Oluşturma
Finansal verileri çıkardıktan ve analiz ettikten sonra, bulguları özetleyen analist üslubunda bir not oluşturun. İstem, profesyonel finansal araştırmanın yapısını ve nesnel tonunu zorunlu kılmalıdır.
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}'''Finansal Uyarı Kalıpları
Hukuk ve tıp araçlarında olduğu gibi, finansal yapay zekâ araçları da zorunlu yasal uyarılar gerektirir. Bunların hiçbir zaman atlanmamasını sağlamak için uyarıları uygulama katmanına ekleyin.
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 omittedGAAP ve GAAP Dışı Ayrımını Netleştirme
Finansal veri çıkarımındaki en yaygın hatalardan biri, GAAP ve GAAP dışı rakamları birbirine karıştırmaktır. İstemler, modelin her sayıyı etiketlemesini ve tutarsızlıkları işaretlemesini açıkça zorunlu kılmalıdır.
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.')Çok Dönemli Eğilim Analizi
Tek dönemlik çıkarma bir anlık görüntü sunar. Bir eğilim analizi, gidişat ile hızlanma/yavaşlama örüntülerini ortaya çıkarmak için ölçütleri birden çok dönem boyunca karşılaştırır.
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].textDoğrulama: Çıkarılan Sayıları Çapraz Denetleme
Finansal veri çıkarma hataları tehlikelidir. Halüsinasyonları veya çıkarma hatalarını tespit etmek için çıkarılan sayıları muhasebe özdeşliklerini (ör. brüt kâr = gelir - COGS) kullanarak çapraz denetleyen bir doğrulama adımı oluşturun.
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')Hızlı Kontrol
Bir kazanç raporundan finansal ölçütler çıkarılırken model %45 brüt kâr marjı döndürüyor, ancak gelir ve COGS rakamları %51 brüt kâr marjına işaret ediyor. Ne yapmalısınız?
Finansal İstem Oluşturma Özeti
Finansal ve nicel istem oluşturma; kesinlik, etiketleme ve doğrulama gerektirir:
- Çıkarma istemleri: Makine tarafından işlenebilmesi için alan adlarını tam olarak belirtin ve JSON döndürün
- Formülü açıkça belirtme: Oran hesaplamaları için her zaman kesin formülü verin
- GAAP ve GAAP dışı: Hesaplamalarda bunları asla karıştırmadan her sayıyı etiketleyin
- SEC bölümleri: Gürültüyü azaltmak için belirli Madde bölümlerini hedefleyin
- Doğrulama: Çıkarma hatalarını tespit etmek için muhasebe özdeşliklerini kullanarak çapraz denetim yapın
- Uyarılar: Yatırım uyarısını her zaman uygulama katmanına ekleyin
Sıkça Sorulan Sorular
“Finansal ve Nicel İstemler” dersi ücretsiz mi?
Evet — “Finansal ve Nicel İstemler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Prompt Engineering kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Prompt Engineering kursu toplamda 4 dersten oluşur.
“Finansal ve Nicel İstemler” dersinde ne öğreneceğim?
Kazanç analizi, risk puanlama ve SEC bildirimlerinden veri çıkarma istemleri. AI Prompt Engineering ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
AI Prompt Engineering öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te AI Prompt Engineering, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Finansal ve Nicel İstemler” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu AI Prompt Engineering dersinde kod yazıp çalıştırabilir miyim?
Evet. Her AI Prompt Engineering dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Hukuk Alanı İstem Kalıpları
- Tıp ve Klinik İstem Oluşturma
- Finansal ve Nicel İstemler
- Alan Sözlüğü ve Ontoloji Enjeksiyonu