1998 Baharı, Cornell'de altı MBA öğrencisi Enron'un finansallarına tek bir denklem uyguladı ve -1,89 sonucunu aldı.
"Bu şirket muhtemelen defterleri manipüle ediyor" eşiği -2,22. Enron bu eşiği geçmişti. Ve yine, bunlar adli muhasebe uzmanları değil, öğrencilerdi.

Raporu okul web sitesine koydular. O dönemde piyasanın tamamı hâlâ Enron'a "al" tavsiyesi veriyordu ve çoğu, hisse sıfıra gitmeden birkaç hafta öncesine kadar bu tavsiyeyi sürdürdü.
Bu, herkesin çekip alabileceği halka açık bir dosyaydı ve elle yaklaşık 20 dakika süren tek bir formüldü. Size anlatacağım şeyin tamamı bu, sadece siz bunu saniyeler içinde çalıştıracaksınız ve dünya üzerindeki herhangi bir şirkete veya tokena yöneltebilirsiniz.
Finansal tavsiye değildir, kendi araştırmanızı yapın. Adli puanlar, kanıt değil olasılık işaretleridir ve buradaki her fiyat değişir, bu yüzden taahhütte bulunmadan önce doğrulayın. Profesyonel tahmin piyasası yatırımcıları için araçlar geliştiriyorum @coldvisionXYZ
L0: Veri Evi
ABD'deki her halka açık şirket SEC'e dosya sunar ve SEC tüm bunları EDGAR adlı bir API aracılığıyla sunar. Bir URL'ye tıklarsınız ve bir şirketin bildirdiği, zaten yapılandırılmış her rakamı geri alırsınız.
EDGAR'ı bir silah yapan 2 şey:
- Tam metin araması. Şimdiye kadar sunulmuş her dosyanın gerçek metnini indeksler, böylece "maddi zafiyet" gibi bir ifadeyi tüm piyasada arayabilir ve muhasebe kontrollerinin bozuk olduğunu sessizce itiraf eden her şirketi geri çekebilirsiniz. Bu, yaklaşık bir saniyede bir açığa satış izleme listesidir.
- Yapılandırılmış finansallar. Her kalem, her çeyrek, makine tarafından okunabilir, yıllar öncesine kadar.
edgartools ihtiyacınız olan şey.

Pip kurulumu, anahtar gerekmez ve 10-K'ları, 8-K'ları, içeriden öğrenen Form 4'lerini, 13F fon portföylerini, hepsini temiz Python nesnelerine ayrıştırır.
Ayrıca bir MCP sunucusuyla birlikte gelir, böylece Claude'u doğrudan ona yönlendirip "Apple ve Microsoft'un 3 yıllık gelir büyümesini karşılaştır" diyebilirsiniz ve o da gerçek dosyaları alır, kulağa doğru gelen rakamlar uydurmaz.
sec-edgar-downloader herkesin ilk bulduğu şeydir. Sadece ham dosyayı indirir ve sizi kendi başınıza ayrıştırmanız için bir HTML yığınının içine atar. Birkaç yıl önce yapılacak şey buydu, şimdi sadece eziyet. edgartools kullanın.
BamSEC yalnızca EDGAR'ın 1998'den kalma arayüzü olmadan dosyaları okumak istiyorsanız. Temiz okuyucu, yan yana karşılaştırma, ihtiyacınız olan çoğu şey için ücretsiz. Göz atmak için iyi.

Artık her halka açık şirketin defterlerine ücretsiz, yapılandırılmış erişiminiz var.
L1 - Yalancıları Yakalamak
Rakamlar elinizde. Yönetimin "dönüşüm yılı" hakkında tek bir cümlesini okumadan önce, ham veriler üzerinde birkaç formül çalıştırıyorsunuz.
Akademisyenler bunları onlarca yıllık gerçek dolandırıcılık vakalarına dayanarak oluşturdu. Sadece her birinin neyi aradığını bilmeniz gerekiyor.
Beneish M-Score Enron'unkidir.
Sekiz girdi tek bir sayıya dönüştürülür. Açık ara en ağır girdi, toplam aktifler içindeki toplam tahakkuklardır, çünkü kazançları sahteleştirmenin en hızlı yolu, hiçbir zaman nakit olarak görünmeyen geliri kaydetmektir. Bir sonraki bayrak, dürüst olmak için fazla temiz olan satış büyümesidir ve Enron'da yanan da buydu. -2,22'nin üzerinde araştırmaya başlarsınız. Enron -1,89 yazdırdı.

Altman Z-Score iflas okumanızdır.
Kârlılığı, kaldıracı ve aktiflerin ne kadar sıkı çalıştığını tek bir sıkıntı puanında birleştirir. 1,81'in altı tehlike bölgesidir.

Sloan tahakkuk oranı kazanç kalitesidir.
Nakitten oluşan kazançlar gerçektir, tahakkuklardan oluşan kazançlar tersine döner. Her iki yönde de yaklaşık %25'i geçerseniz, kazançlar esasen üzerinizde çözülmek üzere olan muhasebesel bir seraptır.

Piotroski F-Score, bir şirketin gerçekten finansal olarak güçlenip güçlenmediğine dair 9 evet/hayır noktasıdır. 6 veya üzeri sağlıklıdır.

Bunu ödevden bir iş akışına dönüştüren şey, 4'ünü de aynı anda tüm izleme listenizde çalıştırmak ve yalnızca işaret veren isimleri okumaktır. Aşağıdaki betiğin yaptığı da tam olarak budur.
Ve lütfen bunları rastgele bir blogdan yeniden uygulamayın, GitHub'daki M-Score kodunun yarısı ince bir şekilde hatalıdır.
FinanceToolkit deposunda 150'den fazla oran vardır - Beneish, Altman, Piotroski, Sloan, hepsi - formüller açıkça yazılmıştır, böylece güvenmediğiniz bir sayıyı denetleyebilirsiniz.
Veri için bir FMP anahtarıyla eşleştirin, hazırsınız. Açıkçası, piyasada en çok göz ardı edilen finans repolarından biri, şeffaf ve gerçekten bakımlı.

Beneish geçen yılın verileriyle çalışır, bu nedenle siz gördüğünüzde manipülasyon zaten çözülüyor olabilir. Bazı gerçek dolandırıcılıkları kaçırır ve bazı temiz olanları yanlış işaretler. Kötü bir puan, dosyayı açmak anlamına gelir. Tek başına asla açığa satış nedeni değildir.
L2: Yapay Zeka Sizin İçin Kelimeleri Okusun
Tarama yaptınız, bir şey işaret verdi, şimdi özellikle okunamaz olacak şekilde hazırlanmış 100+ sayfalık hukuk dili olan 10-K'yı açıyorsunuz.
Bu işi yapay zekaya bırakın
yanlış yol:
tüm dosyayı bir sohbet kutusuna yapıştırıp "bu iyi bir şirket mi" diye sormaktır. Boğulur ve size ne duymak isterseniz onu söyler.
doğru yol:
Bu yılın dosyasını geçen yılınkiyle karşılaştırmasını isteyin.
Bu yılki 10-K ve geçen yılki 10-K'dan Risk Faktörleri bölümünü çıkarın, her ikisini de modele verin ve ona tek bir iş verin.
Bana yalnızca bu yıl yeni olanı veya kaldırılanı söyle, yeni dili alıntıla, her ikisinde de bulunan standart metni görmezden gel.
Müşteri yoğunlaşması hakkında sessizce bir paragraf ekleyen bir şirket, size büyük bir müşterinin sallandığını söylemiştir. Önemli bir tedarikçiyle ilgili bir satırı silen bir şirket, size bir ilişkinin sona erdiğini söylemiştir. Bunların hiçbiri asla basın bültenine çıkmaz. Avukatlar bu cümleleri dava edilmekten korktukları için yazarlar ve korku, kimsenin iki kez okumadığı düz metinde yatan bilgidir.
Aynı fark, MD&A (yönetimin yıla ilişkin kendi hikayesi) ve dipnotlar için de geçerlidir. Enron'un tüm dolandırıcılığı, bilanço dışı varlıklar hakkındaki dipnotlarda yaşıyordu. Hikaye yalandı, dipnotlar değildi.
edgar-crawler deposu, temel olarak bu madde bölümlerini, Risk Faktörleri ve MD&A'yı, bunları HTML üzerinde regex yapmak zorunda kalmamanız için temiz JSON'a dönüştürmek için vardır. Tek işi budur ve bunu iyi yapar, çıktıyı farkınıza besleyin.
Ödemeyi inşa etmeye tercih ederseniz, işte bunu sizin için kimin yaptığına dair dürüst harita.
Hudson Labs (eski adıyla Bedrock AI)
Gözden kaçan seçimdir ve gerçekten para ödeyeceğim tek şey. Yıllar arası kırmızı bayrak çıkarmayı otomatik olarak yapar, siz sormadan işletmenin sürekliliği dili, maddi zayıflıklar, ilişkili taraf riskini yüzeye çıkarır. Aylık yaklaşık 100$'dan başlar. Dosyaları ciddiye okuyorsanız, listedeki dolar başına en iyi değer budur.

AlphaSense
Kurumsal varsayılan, koltuk başına yaklaşık 15-20 bin dolar, bu nedenle gerçekçi olmak gerekirse yalnızca firmanız ödüyorsa. Eski yöneticiler ve müşterilerle binlerce ücretli röportajdan oluşan bir kütüphane olan Tegus'a sahiptir. Yasal içeriden öğrenme bilgisine mümkün olduğunca yakındır ve ücretsiz olarak yeniden oluşturamazsınız.

Daloopa
Modele hazır finansalları, her bir numarası dosyadaki tam yerine köprülü olarak çeker. Bu denetim izi, ciddi DCF'ler oluşturan kişilerin onu kullanmasının nedenidir. Kurumsal fiyatlandırma, modelleme asıl işiniz değilse aşırıya kaçar.

Fintool yapay zeka önceliklidir, ABD hisse senetleri için oluşturulmuştur, her şeyde alıntılar vardır, ayrıca "bana herhangi bir şirket yeni tedarik zinciri sorunlarından bahsettiğinde beni uyar" gibi kalıcı uyarılar vardır.
Hudson size fazla adli ve AlphaSense fazla pahalı geliyorsa iyi bir orta yol.

L3: Kripto
Tokenlara geçelim. Tamamen aynı fikir
Hisse senetlerinde dolandırıcılık tahakkuklarda ve dipnotlarda saklanır.
Kriptoda ise arz takvimlerinde ve sahip yoğunlaşmasında saklanır ve bunların her ikisi de ücretsiz okuyabileceğiniz halka açık bir zincirde bulunur.
Buradaki EDGAR eşdeğeriniz DefiLlama.

Ücretsiz API, anahtar gerekmez, temel olarak her protokolün TVL'sini, ücretlerini, gelirini ve kilit açma takvimini kapsar.
Bir protokolün, normal bir şirketle doğrudan eşleşen 3 numarası vardır.
- Ücretler = kullanıcıların ödediği her şey. Bu brüt gelirdir.
- Gelir = protokolün gerçekten elinde tuttuğu dilim. Bu net gelirdir.
- Kazanç = gelir eksi kullanıcıları ilk etapta gelmeleri için rüşvet vermek üzere bastığı tokenlar.
Token Terminal tam olarak bunları, ücretleri, geliri, kazançları, kripto F/K eşdeğerlerini, her büyük zincirde standartlaştırır.
Gerçekten kriptonun Bloomberg'idir ve standartlaştırma, elle yapmaktan nefret edeceğiniz gerçek bir iştir. Ancak aylık ~350$'dır, bu tek bir kişi için çok fazladır ve ücretsiz katman artı DefiLlama sizi çoğu yere götürür.

Ardından 2 öldürücü, adli taramanın kripto versiyonu.
Önce kilit açma takvimleri.
Tokenların tamamı lansmanda mevcut değildir, ekip ve VC tahsisatları yıllar içinde hak edilir ve kilitleri açıldığında, sıfıra yakın giren kişiler nihayet size boşaltma yapabilir. Temel kural, dolaşımdaki arzın %5'inin üzerindeki herhangi bir tek kilit açma kırmızı bayraktır. Gerçek kılmak gerekirse, Arbitrum'un ilk büyük uçurum kilidi bir günde, o sırada toplam dolaşımdaki arza kabaca eşit miktarda ARB'yi açtı. Başlangıçtan beri tutan balinalar perakendeye çıkış yapabildi ve tarih aylar öncesinden takvimdeydi.
3 şekli bilin.
- Uçurum, bir günde bir yığını boşaltır (şiddetli).
- Doğrusal hak ediş günlük damlar (bazen dayanabileceğiniz yavaş kanama).
- Emisyonlar, aktiviteye göre serbest bırakılır. Bir VC cüzdanına yapılan uçurum, portföyleri bitirendir.
İkinci olarak sahip yoğunlaşması. Şeyin gerçekte kime ait olduğu. Bir avuç cüzdan arzın çoğuna sahipse ve bunlar ekip veya bazı erken aşama VC fonu olarak etiketlenmişse, tebrikler, siz tasarım gereği çıkış likiditesisiniz.
Cüzdan etiketleme araçlarının değerini gösterdiği yer burasıdır, çünkü ham zincir verileri, size bunun Jump Trading veya bir ekip hak ediş sözleşmesi olduğunu söyleyen biri olana kadar sadece 0xxxxxxx....'dir.
Arkham
Buradan başlayın çünkü bireyler için ücretsizdir, başka hiçbir ciddi platformun yapmadığı gibi. Kimliği gizleme motoru gerçek anlaşmadır, çalınan milyarlarca bitcoin'i herkese açık bir bilgisayar korsanlığına kadar izleyen firmadır. Baktığınız herhangi bir token üzerinde aynı varlık izlemeyi çalıştırabilirsiniz. Ücretsiz olması öldürücü özelliktir, sadece kullanın.
Nansen
"akıllı parayı", yani erken ve doğru olma geçmişine sahip cüzdanları, birçok zincirde takip eder. Kısa süre önce Pro fiyatını aylık yaklaşık 49$'a kadar sert bir şekilde düşürdü. Etiketler tüm üründür ve iyidirler, ancak fonlar merkezi bir borsaya ulaştığı anda iz soğur. Zincir üzerinde ciddi bir şekilde işlem yapıyorsanız buna değer.
Dune
Kendiniz tek satır SQL yazmadan çatallayabileceğiniz 100 binin üzerinde topluluk SQL panosu. Ücretsiz katman neredeyse herkes için fazlasıyla yeterlidir ve istediğiniz pano zaten birileri tarafından oluşturulmuştur, bu yüzden kendi panoınızı oluşturmadan önce gidip onu bulun.
Messari güçlü niteliksel araştırma ve derecelendirmelere sahiptir. Fiyatlandırma opaktır ve kurumsal odaklıdır, ücretsiz araştırma okumaya değerdir ancak bir satış görüşmesi olmadan iyi şeyleri beklemeyin.
Tokenomist (eski adıyla Token Unlocks) özel kilit açma takvimidir. DefiLlama da kilit açmaları kapsar, ancak kilit açma ticareti tüm işinizse, bu uzman olanıdır.
L4: Tek Bir Sistem
Artık parçalara sahipsiniz, her iki tarafta da ücretsiz veri, adli matematik, belge farkı, zincir üstü tarama. Son katman, bunu 15 sekme arasında kopyala-yapıştır yapmak yerine tek bir makine olarak çalıştırmaktır.
virattt/ai-hedge-fund, her biri ünlü bir yatırımcının felsefesi üzerine modellenmiş, bir hisse senedi üzerinde tartışan ve bir karar çıkaran bir yapay zeka ajanları ekibidir. Yatırımcı-kişiliği olayı aslında bir tür gösteriştir ve kesinlikle gerçek parayla canlı olarak işlem yapmamalısınız.
Ancak analiz ajanlarını nasıl düzenleyeceğiniz, bir veri alıcıyı bir tarayıcıya, oradan bir muhakeme yapıcıya nasıl zincirleyeceğiniz konusunda ücretsiz bir ders olarak, şu anda GitHub'daki en iyi öğretmendir.

OpenBB açık kaynak Bloomberg terminalidir. Veri sağlayıcılarınızı bir kez bağlayın, her yerde kullanın, bir ajanın her şeyi yönlendirebilmesi için bir MCP sunucusuyla birlikte gelir. Güçlü ama ağırdır, kurulum gerçek bir iştir ve veri kalitesi tamamen hangi ücretsiz sağlayıcıyı bağladığınıza bağlıdır. Her şey için tek bir kokpit istiyorsanız buna değer, yalnızca birkaç ismi taramak istiyorsanız aşırıya kaçar.

FinGPT / FinRobot, ucuza ince ayar yapabileceğiniz açık finansal LLM'lerdir. Akademik olarak etkileyici ve evet, ince ayar yapmak insanların düşündüğünden daha ucuzdur.
Ancak temelde herkes için hiçbir şeye ince ayar yapmanıza gerek yoktur, yukarıdaki yönlendirmelerle birlikte bir sınır modeli işi görür.

Sırayla
Önce araç katmanı, EDGAR, FMP, DefiLlama'yı saran işlev çağrıları veya MCP sunucuları, böylece model gerçek rakamları alır ve asla onları icat etmez. Pazarlık konusu olmayan bir durum, kaynaksız bir finansal rakam alıntılayan bir yapay zeka bir analist değil, bir yükümlülüktür.
Tarama katmanı, evreninize giren her şeyde otomatik olarak çalışan adli puanlar ve zincir üstü kontroller.
Okuma katmanı, taramadan sağ çıkan her şeyde yıldan yıla fark.
Sentez, model her iddiada bir alıntıyla notu yazar ve siz 200 sayfa yerine notu okursunuz.
Modeller konusunda, Claude veya GPT'nin ikisi de çalışır. Hassas verilere dokunuyorsanız ve dosyaların makinenizden ayrılmasını istemiyorsanız, Ollama aracılığıyla yerel olarak açık bir model çalıştırın. Model hiçbir zaman hendek olmadı. Hendek, onu temiz, doğrulanmış, kaynağa bağlı verilere bağlamak ve ona disiplinli matematik uygulamaktır.
L5: L1'i Oluşturun
Ona bir borsa kodu verin, EDGAR'dan gerçek dosyaları çeker, Beneish, Altman, Piotroski ve tahakkuk oranını hesaplar ve bir anahtar verirseniz, yıldan yıla Risk Faktörleri farkını çalıştırır ve size tek paragraflık bir karar yazar.
1#!/usr/bin/env python32"""3forensic_screener.py - herhangi bir şirketi bir analist gibi, tek komutla okuyun.45kurulum:6 pip install edgartools anthropic7 export SEC_IDENTITY="Adınız Soyadınız [email protected]" # SEC bu başlığı gerektirir8 export ANTHROPIC_API_KEY="sk-..." # isteğe bağlı, yalnızca fark için910çalıştırma:11 python forensic_screener.py AAPL12 python forensic_screener.py TSLA NVDA SMCI # birkaçını aynı anda tara13 python forensic_screener.py SMCI --diff # risk faktörü farkını ekle14"""1516import os, sys, argparse17from dataclasses import dataclass1819# EŞİKLER - duruşunuzu değiştiren çizgiler. zevkinize göre ayarlayın.20M_FLAG = -1.78 # Beneish bunun üzerinde -> manipülasyon riski (klasik kesim -2.22)21Z_DISTRESS = 1.81 # Altman bunun altında -> sıkıntı bölgesi22Z_SAFE = 2.99 # Altman bunun üzerinde -> güvenli bölge23ACCRUAL_BAD = 0.25 # |tahakkuklar/aktifler| bunun üzerinde -> kazanç kalitesi kırmızı bayrağı24F_STRONG = 6 # Piotroski bunun üzerinde veya eşit -> güçleniyor2526@dataclass27class YearData:28 sales: float; cogs: float; sga: float; net_income: float; cfo: float29 receivables: float; current_assets: float; current_liabilities: float30 ppe_net: float; depreciation: float; total_assets: float31 total_liabilities: float; long_term_debt: float; retained_earnings: float32 ebit: float; market_cap: float; shares: float3334def load_two_years(ticker: str):35 """(this_year, last_year) döndürür. ağ üzerinden SEC EDGAR'ı çağırır."""36 from edgar import Company, set_identity37 identity = os.environ.get("SEC_IDENTITY")38 if not identity:39 sys.exit("SEC_IDENTITY='Adınız Soyadınız [email protected]' olarak ayarlayın - SEC bunu gerektirir.")40 set_identity(identity)4142 company = Company(ticker)43 fin = company.get_financials()44 inc, bal, cfs = fin.income_statement(periods=2), fin.balance_sheet(periods=2), fin.cash_flow(periods=2)4546 def g(stmt, col, *aliases):47 # en iyi çaba satır araması; şirketler aynı fikri farklı şekilde etiketler48 for a in aliases:49 try:50 row = stmt.loc[stmt.index.str.contains(a, case=False, na=False)]51 if not row.empty:52 return float(row.iloc[0, col])53 except Exception:54 continue55 return 0.05657 def build(col):58 return YearData(59 sales=g(inc, col, "RevenueFromContractWithCustomerExcludingAssessedTax", "Revenues", "SalesRevenueNet"),60 cogs=g(inc, col, "CostOfGoodsAndServicesSold", "CostOfRevenue"),61 sga=g(inc, col, "SellingGeneralAndAdministrativeExpense"),62 net_income=g(inc, col, "NetIncomeLoss"),63 cfo=g(cfs, col, "NetCashProvidedByUsedInOperatingActivities"),64 receivables=g(bal, col, "AccountsReceivableNetCurrent", "ReceivablesNetCurrent"),65 current_assets=g(bal, col, "AssetsCurrent"),66 current_liabilities=g(bal, col, "LiabilitiesCurrent"),67 ppe_net=g(bal, col, "PropertyPlantAndEquipmentNet"),68 depreciation=g(cfs, col, "DepreciationDepletionAndAmortization", "DepreciationAmortizationAndAccretionNet"),69 total_assets=g(bal, col, "Assets"),70 total_liabilities=g(bal, col, "Liabilities"),71 long_term_debt=g(bal, col, "LongTermDebtNoncurrent", "LongTermDebt"),72 retained_earnings=g(bal, col, "RetainedEarningsAccumulatedDeficit"),73 ebit=g(inc, col, "OperatingIncomeLoss"),74 market_cap=getattr(company, "market_cap", 0.0) or 0.0,75 shares=g(bal, col, "CommonStockSharesOutstanding"),76 )7778 # col 0 = en yeni yıl, col 1 = önceki yıl (edgartools en yeni önce sıralar)79 return build(0), build(1)8081def d(a, b): return a / b if b else 0.0 # güvenli bölme8283def beneish_m_score(t, p):84 DSRI = d(d(t.receivables, t.sales), d(p.receivables, p.sales))85 GMI = d((p.sales - p.cogs)/p.sales if p.sales else 0, (t.sales - t.cogs)/t.sales if t.sales else 0)86 AQI = d(1 - d(t.current_assets + t.ppe_net, t.total_assets), 1 - d(p.current_assets + p.ppe_net, p.total_assets))87 SGI = d(t.sales, p.sales)88 DEPI = d(d(p.depreciation, p.depreciation + p.ppe_net), d(t.depreciation, t.depreciation + t.ppe_net))89 SGAI = d(d(t.sga, t.sales), d(p.sga, p.sales))90 TATA = d(t.net_income - t.cfo, t.total_assets)91 LVGI = d(d(t.total_liabilities, t.total_assets), d(p.total_liabilities, p.total_assets))92 return (-4.84 + 0.92*DSRI + 0.528*GMI + 0.404*AQI + 0.892*SGI93 + 0.115*DEPI - 0.172*SGAI + 4.679*TATA - 0.327*LVGI)9495def altman_z_score(t):96 wc = t.current_assets - t.current_liabilities97 return (1.2*d(wc, t.total_assets) + 1.4*d(t.retained_earnings, t.total_assets)98 + 3.3*d(t.ebit, t.total_assets) + 0.6*d(t.market_cap, t.total_liabilities)99 + 1.0*d(t.sales, t.total_assets))100101def piotroski_f_score(t, p):102 s = 0103 s += t.net_income > 0104 s += t.cfo > 0105 s += d(t.net_income, t.total_assets) > d(p.net_income, p.total_assets)106 s += t.cfo > t.net_income # nakit tahakkukları yener107 s += t.long_term_debt < p.long_term_debt108 s += d(t.current_assets, t.current_liabilities) > d(p.current_assets, p.current_liabilities)109 s += t.shares <= p.shares # seyreltme yok110 s += d(t.sales - t.cogs, t.sales) > d(p.sales - p.cogs, p.sales)111 s += d(t.sales, t.total_assets) > d(p.sales, p.total_assets)112 return int(s)113114def sloan_accruals(t): return d(t.net_income - t.cfo, t.total_assets)115116def risk_factor_diff(ticker):117 """bu yılki Risk Faktörleri ile geçen yılınkini karşılaştırır. yığındaki en iyi tek okuma."""118 key = os.environ.get("ANTHROPIC_API_KEY")119 if not key:120 return "(atlandı - farkı etkinleştirmek için ANTHROPIC_API_KEY ayarlayın)"121 from edgar import Company122 import anthropic123 f = Company(ticker).get_filings(form="10-K").latest(2)124 this_rf = getattr(f[0].obj(), "risk_factors", str(f[0]))125 last_rf = getattr(f[1].obj(), "risk_factors", str(f[1]))126 client = anthropic.Anthropic(api_key=key)127 msg = client.messages.create(128 model="claude-opus-4-8", max_tokens=1024,129 messages=[{"role": "user", "content": (130 "ardışık yıllık dosyalardan bu iki Risk Faktörleri bölümünü karşılaştır. "131 "YALNIZCA bu yıl YENİ olanı veya KALDIRILMIŞ olanı rapor et. yeni dili alıntıla. "132 "her ikisinde de bulunan standart metni görmezden gel. tek bir cümleyle bitir: burada riski değiştiren bir şey var mı?\n\n"133 f"GEÇEN YIL:\n{last_rf[:40000]}\n\nBU YIL:\n{this_rf[:40000]}")}],134 )135 return msg.content[0].text136137def screen(ticker, do_diff=False):138 print(f"\n{'='*60}\n {ticker.upper()}\n{'='*60}")139 try:140 t, p = load_two_years(ticker)141 except Exception as e:142 print(f" dosyalar yüklenemedi: {e}"); return143144 m, z, f, a = beneish_m_score(t, p), altman_z_score(t), piotroski_f_score(t, p), sloan_accruals(t)145 flags = []146 if m > M_FLAG: flags.append(f"M-Score {m:+.2f} - kazanç manipülasyonu riski")147 if z < Z_DISTRESS: flags.append(f"Z-Score {z:.2f} - finansal sıkıntı bölgesi")148 if abs(a) > ACCRUAL_BAD: flags.append(f"Tahakkuklar {a:+.1%} - kazanç kalitesi kırmızı bayrağı")149 if f < F_STRONG: flags.append(f"F-Score {f}/9 - güçlenmiyor")150151 print(f" Beneish M : {m:+.2f} (> {M_FLAG} = araştır)")152 print(f" Altman Z : {z:.2f} (< {Z_DISTRESS} sıkıntı, > {Z_SAFE} güvenli)")153 print(f" Piotroski F: {f}/9 (>= {F_STRONG} güçlü)")154 print(f" Sloan Accr : {a:+.1%} (|x| > {ACCRUAL_BAD:.0%} kırmızı bayrak)")155 print(f"\n KARAR: {'ARAŞTIR' if flags else 'TEMİZ'}")156 for fl in flags: print(f" - {fl}")157 if do_diff:158 print("\n RİSK FAKTÖRÜ FARKI (yıldan yıla):")159 print(" " + risk_factor_diff(ticker).replace("\n", "\n "))160161def main():162 ap = argparse.ArgumentParser(description="herhangi bir ABD halka açık şirketi için adli tarayıcı")163 ap.add_argument("tickers", nargs="+")164 ap.add_argument("--diff", action="store_true", help="risk faktörü farkını da çalıştır")165 args = ap.parse_args()166 for tk in args.tickers:167 screen(tk, do_diff=args.diff)168 print("\nhatırlatma: olasılık bayrakları, kanıt değil. Beneish geçen yılın verileriyle çalışır, bu nedenle "169 "manipülasyon zaten çözülüyor olabilir. kötü bir puan dosyayı açmak anlamına gelir, asla "170 "yalnızca sayıya dayanarak açığa satış yapmayın.\n")171172if __name__ == "__main__":173 main()
Göndermeden önce matematiği kontrol ettim, sağlıklı bir dizi sayı besleyin ve temiz bir M yaklaşık -2,24, Z güvenli bölgede, F 9/9, tahakkuklar sıfıra yakın, tam olarak istediğiniz gibi yazdırır.
Makinenizin ihtiyaç duyduğu tek şey canlı SEC bağlantısı ve fark için bir anahtardır. Etiket takma adları standart dosyalayıcıları kapsar, egzotik bir tanesi bir satır eklenmesini gerektirebilir ve nerede olduğunu işaretledim.





