Cách phân tích bất kỳ công ty nào bằng AI như một chuyên gia

@gemchange_ltd
TIẾNG ANH2 tháng trước · 30 thg 5, 2026
383K
268
27
8
764

TL;DR

Hướng dẫn toàn diện về cách tự động hóa phân tích tài chính bằng dữ liệu SEC EDGAR, các chỉ số kế toán pháp y và các tác nhân AI nhằm xác định rủi ro trong cả cổ phiếu truyền thống và các giao thức tiền điện tử.

Bản dịch

Mùa xuân năm 1998, sáu sinh viên MBA tại Cornell chạy một phương trình trên báo cáo tài chính của Enron và nhận được kết quả -1.89.

Ngưỡng để kết luận "công ty này có khả năng đang làm đẹp sổ sách" là -2.22. Enron đã vượt qua ngưỡng đó. Và một lần nữa, đây là sinh viên, không phải một công ty kiểm toán pháp y nào.

gemchanger - inline image

Họ đăng báo cáo lên website của trường. Phố Wall lúc đó vẫn xếp hạng mua cho Enron, và hầu hết giữ nguyên cho đến vài tuần trước khi cổ phiếu về 0.

Đó là một hồ sơ công khai mà bất kỳ ai cũng có thể lấy về, và một công thức mất khoảng 20 phút để tính bằng tay. Đó là tất cả những gì tôi sắp hướng dẫn bạn, ngoại trừ việc bạn sẽ chạy nó trong vài giây và bạn có thể áp dụng cho bất kỳ công ty hay token nào trên thế giới.

Không phải lời khuyên tài chính, hãy tự nghiên cứu. Điểm số pháp y là dấu hiệu xác suất, không phải bằng chứng, và mọi giá ở đây đều thay đổi, vì vậy hãy xác minh trước khi bạn cam kết. Tôi xây dựng công cụ cho các nhà giao dịch thị trường dự đoán chuyên nghiệp @coldvisionXYZ

L0: Kho Dữ Liệu

Mọi công ty đại chúng ở Mỹ đều nộp báo cáo lên SEC, và SEC cung cấp tất cả qua một API có tên EDGAR. Bạn truy cập một URL và nhận lại mọi con số mà một công ty từng báo cáo, đã được cấu trúc sẵn.

2 điều biến EDGAR thành vũ khí:

  1. Tìm kiếm toàn văn. Nó lập chỉ mục toàn bộ nội dung của mọi hồ sơ đã từng nộp, vì vậy bạn có thể tìm kiếm một cụm từ như "material weakness" trên toàn bộ thị trường và lấy lại mọi công ty vừa âm thầm thừa nhận kiểm soát kế toán của họ bị hỏng. Đó là một danh sách theo dõi bán khống trong khoảng một giây.
  2. Báo cáo tài chính có cấu trúc. Mọi khoản mục, mọi quý, có thể đọc bằng máy, trải dài nhiều năm.

edgartools là thư viện bạn cần.

gemchanger - inline image

Cài đặt bằng pip, không cần key, và nó phân tích 10-K, 8-K, Form 4 giao dịch nội gián, 13F nắm giữ quỹ, tất cả thành các đối tượng Python sạch sẽ.

Nó cũng đi kèm máy chủ MCP, vì vậy bạn có thể hướng Claude vào đó và nói "so sánh tăng trưởng doanh thu của Apple và Microsoft trong 3 năm" và nó thực sự đi lấy các hồ sơ thực tế thay vì bịa ra những con số nghe có vẻ đúng.

sec-edgar-downloader là thư viện mà mọi người thường tìm thấy đầu tiên. Nó chỉ tải xuống hồ sơ thô và đẩy bạn vào một đống HTML để tự phân tích. Đó là cách làm vài năm trước, bây giờ thì chỉ toàn đau đớn. Hãy dùng edgartools.

BamSEC nếu bạn chỉ muốn đọc hồ sơ mà không cần giao diện của EDGAR từ năm 1998. Trình đọc sạch sẽ, so sánh song song, miễn phí cho hầu hết nhu cầu. Tốt để xem qua.

gemchanger - inline image

Bây giờ bạn đã có quyền truy cập có cấu trúc miễn phí vào sổ sách của mọi công ty đại chúng.

L1 - Bắt Kẻ Nói Dối

Bạn đã có số liệu. Trước khi đọc một câu nào từ ban quản lý nói về "năm chuyển đổi" của họ, bạn chạy một vài công thức trên các con số thô.

Các học giả đã xây dựng những công thức này từ hàng thập kỷ các vụ gian lận thực tế. Bạn chỉ cần biết mỗi công thức đang tìm kiếm điều gì.

Beneish M-Score là công thức dành cho Enron.

Tám đầu vào được trộn thành một con số duy nhất. Đầu vào nặng nhất là tổng dồn tích trên tổng tài sản, bởi vì cách nhanh nhất để làm giả lợi nhuận là ghi nhận thu nhập không bao giờ xuất hiện dưới dạng tiền mặt. Dấu hiệu tiếp theo là tăng trưởng doanh số quá sạch sẽ để trung thực, và đó là dấu hiệu phát sáng trên Enron. Trên -2.22 bạn đi điều tra. Enron cho ra -1.89.

gemchanger - inline image

Altman Z-Score là chỉ số đọc phá sản của bạn.

Kết hợp lợi nhuận, đòn bẩy và mức độ hiệu quả của tài sản thành một điểm số kiệt quệ. Dưới 1.81 là vùng nguy hiểm.

gemchanger - inline image

Tỷ lệ dồn tích Sloan là chất lượng lợi nhuận.

Lợi nhuận từ tiền mặt là thật, lợi nhuận từ dồn tích thì đảo ngược. Vượt quá khoảng 25% theo một trong hai hướng và lợi nhuận về cơ bản là ảo ảnh kế toán sắp sụp đổ.

gemchanger - inline image

Piotroski F-Score, 9 điểm có/không về việc một công ty có thực sự đang mạnh lên về tài chính hay không. 6 điểm trở lên là lành mạnh.

gemchanger - inline image

Điều biến việc này từ bài tập về nhà thành quy trình làm việc là chạy cả 4 công thức cùng lúc trên toàn bộ danh sách theo dõi của bạn và chỉ đọc những cái tên bị cảnh báo. Đó chính xác là những gì script bên dưới làm.

Và đừng tự triển khai lại từ một blog ngẫu nhiên nào đó, một nửa mã M-Score trên GitHub bị sai tinh vi.

FinanceToolkit repo có hơn 150 tỷ lệ - Beneish, Altman, Piotroski, Sloan, tất cả - với các công thức được viết công khai để bạn có thể kiểm tra một con số khi không tin tưởng.

Kết hợp nó với key FMP để lấy dữ liệu là bạn đã sẵn sàng. Thành thật mà nói, đây là một trong những repo tài chính bị ngủ quên nhất, minh bạch và thực sự được bảo trì.

https://github.com/JerBouma/FinanceToolkit

gemchanger - inline image

Beneish chạy trên dữ liệu năm trước, vì vậy hành vi thao túng có thể đã được tháo dỡ vào thời điểm bạn nhìn thấy nó. Nó bỏ sót một số vụ gian lận thực sự và báo động sai một số công ty sạch. Điểm số xấu có nghĩa là mở hồ sơ ra. Nó không bao giờ là lý do duy nhất để bán khống.

L2: AI Đọc Lời Văn Cho Bạn

Bạn đã sàng lọc, có thứ gì đó bị cảnh báo, bây giờ bạn mở 10-K, dài hơn 100 trang văn bản pháp lý được viết để không thể đọc được.

Hãy để AI làm việc đó

cách sai là:

dán toàn bộ hồ sơ vào ô chat và hỏi "công ty này có tốt không." Nó bị ngợp và trả lời bất cứ điều gì bạn muốn nghe.

cách đúng là:

Yêu cầu nó so sánh năm nay với năm ngoái.

Lấy phần Risk Factors từ 10-K năm nay và năm ngoái, đưa cả hai cho mô hình và giao một nhiệm vụ duy nhất.

Chỉ cho tôi biết điều gì MỚI trong năm nay hoặc điều gì đã BỊ LOẠI BỎ, trích dẫn ngôn ngữ mới, bỏ qua văn bản tiêu chuẩn có trong cả hai.

Một công ty âm thầm chèn vào một đoạn về tập trung khách hàng vừa cho bạn biết một khách hàng lớn đang lung lay. Một công ty xóa một dòng về nhà cung cấp chính vừa cho bạn biết một mối quan hệ đã kết thúc. Không có điều nào trong số này từng xuất hiện trên thông cáo báo chí. Luật sư viết những câu đó vì họ sợ bị kiện, và nỗi sợ là thông tin nằm trong văn bản thuần túy không ai đọc hai lần.

Cách so sánh tương tự cũng hiệu quả với MD&A (câu chuyện của chính ban quản lý về năm tài chính) và các chú thích. Toàn bộ gian lận của Enron nằm trong các chú thích về các thực thể ngoại bảng. Câu chuyện là dối trá, các chú thích thì không.

edgar-crawler repo tồn tại chỉ để trích xuất các phần mục đó, Risk Factors và MD&A, thành JSON sạch để bạn không phải dùng regex qua HTML. Đó là toàn bộ công việc của nó và nó làm tốt, đưa đầu ra vào bộ so sánh của bạn.

Nếu bạn muốn trả tiền thay vì tự xây dựng, đây là bản đồ trung thực về những ai làm việc này cho bạn.

Hudson Labs (trước đây là Bedrock AI)

Đây là lựa chọn ngầm và là cái tôi thực sự sẽ trả tiền. Nó tự động trích xuất cờ đỏ qua các năm, phát hiện ngôn ngữ về khả năng hoạt động liên tục, điểm yếu kiểm soát nội bộ, rủi ro bên liên quan mà không cần bạn yêu cầu. Bắt đầu từ khoảng $100/tháng. Nếu bạn đọc hồ sơ một cách nghiêm túc, đây là giá trị tốt nhất trên mỗi đô la trong danh sách.

gemchanger - inline image

AlphaSense

Lựa chọn mặc định của tổ chức, khoảng 15-20k một chỗ ngồi, vì vậy thực tế chỉ khi công ty bạn trả tiền. Nó sở hữu Tegus, một thư viện hàng nghìn cuộc phỏng vấn trả phí với các cựu giám đốc điều hành và khách hàng. Gần như là thông tin nội gián hợp pháp nhất bạn có thể có, và bạn không thể tái tạo nó miễn phí.

gemchanger - inline image

Daloopa

Kéo các báo cáo tài chính sẵn sàng cho mô hình với mọi con số được liên kết trở lại vị trí chính xác trong hồ sơ. Dấu vết kiểm toán đó là lý do tại sao những người xây dựng DCF nghiêm túc sử dụng nó. Định giá doanh nghiệp, quá tải trừ khi xây dựng mô hình là công việc thực tế của bạn.

gemchanger - inline image

Fintool ưu tiên AI, được xây dựng cho cổ phiếu Mỹ, trích dẫn mọi thứ, cộng với các cảnh báo thường trực như "báo cho tôi bất cứ khi nào bất kỳ công ty nào mới đề cập đến vấn đề chuỗi cung ứng."

Điểm giữa khá tốt nếu Hudson quá pháp y và AlphaSense quá đắt.

gemchanger - inline image

L3: Crypto

Chuyển sang token. Ý tưởng hoàn toàn giống nhau

Trong cổ phiếu, gian lận ẩn trong dồn tích và chú thích.

Trong crypto, nó ẩn trong lịch trình phát hành và tập trung người nắm giữ, và cả hai đều nằm trên blockchain công khai mà bạn có thể đọc miễn phí.

EDGAR tương đương của bạn ở đây là DefiLlama.

gemchanger - inline image

API miễn phí, không cần key, bao phủ cơ bản mọi TVL, phí, doanh thu và lịch mở khóa của giao thức.

Một giao thức có 3 con số tương ứng trực tiếp với một công ty thông thường.

  • Phí = mọi thứ người dùng trả. Đó là tổng doanh thu.
  • Doanh thu = phần giao thức thực sự giữ lại. Đó là doanh thu thuần.
  • Lợi nhuận = doanh thu trừ đi các token nó in ra để mua chuộc người dùng xuất hiện ngay từ đầu.

Token Terminal chuẩn hóa chính xác những thứ này, phí, doanh thu, lợi nhuận, các chỉ số P/E tương đương crypto, trên mọi blockchain chính.

Thực sự là Bloomberg-crypto và việc chuẩn hóa là công việc thực sự mà bạn sẽ ghét làm bằng tay. Nhưng nó khoảng ~350/tháng, khá đắt cho một người, và gói miễn phí cộng với DefiLlama đáp ứng được hầu hết nhu cầu.

gemchanger - inline image

Sau đó là 2 kẻ giết người, phiên bản crypto của sàng lọc pháp y.

Đầu tiên là lịch trình mở khóa.

Token không tồn tại tất cả khi ra mắt, phân bổ cho đội ngũ và quỹ đầu tư mạo hiểm được vest qua nhiều năm, và khi chúng mở khóa, những người vào gần mức 0 cuối cùng có thể xả lên bạn. Nguyên tắc chung, bất kỳ đợt mở khóa nào trên 5% nguồn cung lưu hành đều là cờ đỏ. Để làm rõ, đợt cliff lớn đầu tiên của Arbitrum đã mở khóa, trong một ngày, một lượng ARB gần bằng tổng nguồn cung lưu hành tại thời điểm đó. Cá voi nắm giữ từ đầu đã có thể thoát ra vào tay nhà đầu tư lẻ và ngày đó đã có trên lịch từ nhiều tháng trước.

Biết 3 dạng.

  1. Cliff xả một khối lượng lớn trong một ngày (dữ dội).
  2. Vest tuyến tính nhỏ giọt hàng ngày (chảy máu chậm mà đôi khi bạn có thể cầm cự).
  3. Phát thải dựa trên hoạt động. Một cliff vào ví quỹ đầu tư mạo hiểm là cái kết thúc danh mục đầu tư.

Thứ hai là tập trung người nắm giữ. Ai thực sự sở hữu thứ này. Nếu một số ít ví nắm giữ hầu hết nguồn cung và chúng được gắn nhãn là đội ngũ hoặc một quỹ đầu tư mạo hiểm giai đoạn đầu nào đó, xin chúc mừng, bạn chính là thanh khoản thoát ra theo thiết kế.

Đây là nơi các công cụ gắn nhãn ví kiếm được tiền, bởi vì dữ liệu blockchain thô chỉ là 0xxxxxxx.... cho đến khi ai đó nói với bạn rằng đó là Jump Trading hoặc hợp đồng vest của đội ngũ.

Arkham

Bắt đầu ở đây vì nó miễn phí cho cá nhân, điều mà không nền tảng nghiêm túc nào khác có. Công cụ khử ẩn danh là thật, nó là công ty đã công khai truy vết hàng tỷ bitcoin bị đánh cắp trở lại một vụ hack. Bạn có thể chạy tính năng truy vết thực thể tương tự trên bất kỳ token nào bạn đang xem xét. Miễn phí là tính năng giết người, chỉ cần sử dụng nó.

Nansen

Theo dõi "smart money", các ví có thành tích sớm và đúng, trên nhiều blockchain. Gần đây đã giảm giá Pro mạnh xuống còn khoảng 49/tháng. Các nhãn là toàn bộ sản phẩm và chúng tốt, nhưng dấu vết biến mất ngay khi tiền chạm đến sàn giao dịch tập trung. Đáng giá nếu bạn giao dịch trên chuỗi một cách nghiêm túc.

Dune

Hơn 100k bảng điều khiển SQL cộng đồng mà bạn có thể fork mà không cần tự viết một dòng SQL nào. Gói miễn phí là đủ cho hầu hết mọi người, và ai đó đã xây dựng bảng điều khiển bạn cần, vì vậy hãy tìm nó trước khi tự xây dựng.

Messari có nghiên cứu định tính và xếp hạng mạnh mẽ. Giá cả không minh bạch và thiên về doanh nghiệp, nghiên cứu miễn phí đáng đọc nhưng đừng mong đợi những thứ tốt mà không có cuộc gọi bán hàng.

Tokenomist (trước đây là Token Unlocks) là lịch mở khóa chuyên dụng. DefiLlama cũng bao gồm mở khóa, nhưng nếu giao dịch mở khóa là toàn bộ công việc của bạn thì đây là chuyên gia.

L4: Một Hệ Thống

Bạn đã có các mảnh ghép, dữ liệu miễn phí cả hai bên, toán pháp y, so sánh tài liệu, sàng lọc on-chain. Lớp cuối cùng là làm cho nó chạy như một cỗ máy thay vì bạn copy-paste qua 15 tab.

virattt/ai-hedge-fund là một nhóm các AI agent, mỗi agent được mô phỏng theo triết lý của một nhà đầu tư nổi tiếng, tranh luận về một cổ phiếu và đưa ra quyết định. Việc tạo hình tượng nhà đầu tư thực sự hơi chiêu trò và bạn chắc chắn không nên giao dịch nó với tiền thật.

https://github.com/virattt/ai-hedge-fund

Nhưng như một bài học miễn phí về cách điều phối các agent phân tích, cách xâu chuỗi một bộ lấy dữ liệu vào một bộ sàng lọc vào một bộ suy luận, nó là giáo viên tốt nhất trên GitHub hiện nay.

gemchanger - inline image

OpenBB là terminal Bloomberg mã nguồn mở. Kết nối các nhà cung cấp dữ liệu của bạn một lần, sử dụng chúng ở mọi nơi, với máy chủ MCP để một agent có thể điều khiển toàn bộ. Mạnh mẽ nhưng nặng nề, thiết lập là công việc thực sự và chất lượng dữ liệu phụ thuộc hoàn toàn vào nhà cung cấp miễn phí nào bạn kết nối. Đáng giá nếu bạn muốn một buồng lái cho mọi thứ, quá tải nếu bạn chỉ muốn sàng lọc một vài cái tên.

https://github.com/OpenBB-finance/OpenBB

gemchanger - inline image

FinGPT / FinRobot là các LLM tài chính mã nguồn mở mà bạn có thể fine-tune với chi phí thấp. Ấn tượng về mặt học thuật và đúng vậy, fine-tune rẻ hơn mọi người nghĩ.

https://github.com/ai4finance-foundation/finrobot

Nhưng về cơ bản cho tất cả mọi người, bạn không cần fine-tune bất cứ thứ gì, một mô hình tiên tiến với các prompt trên là đủ làm việc.

gemchanger - inline image

Theo thứ tự

Lớp công cụ trước, function calling hoặc MCP server bao bọc EDGAR, FMP, DefiLlama, để mô hình lấy số thực và không bao giờ bịa ra chúng. Không thể thương lượng, một AI trích dẫn con số tài chính không có nguồn gốc là trách nhiệm pháp lý, không phải nhà phân tích.

Lớp sàng lọc, các điểm số pháp y và kiểm tra on-chain tự động chạy trên bất kỳ thứ gì vào vũ trụ của bạn.

Lớp đọc, so sánh năm qua năm trên bất kỳ thứ gì sống sót qua sàng lọc.

Tổng hợp, mô hình viết bản ghi nhớ với trích dẫn cho mọi tuyên bố và bạn đọc bản ghi nhớ thay vì 200 trang.

Về mô hình, Claude hoặc GPT đều hoạt động. Nếu bạn tiếp xúc với dữ liệu nhạy cảm và không muốn hồ sơ rời khỏi máy tính của mình, hãy chạy một mô hình mở cục bộ qua Ollama. Mô hình chưa bao giờ là hào. Hào là kết nối nó với dữ liệu sạch, đã xác minh, có nguồn gốc, và hướng toán học kỷ luật vào nó.

L5: Xây Dựng L1

Đưa cho nó một mã cổ phiếu, nó lấy hồ sơ thực từ EDGAR, tính toán Beneish, Altman, Piotroski và tỷ lệ dồn tích, và nếu bạn cung cấp key, nó chạy so sánh Risk Factors năm qua năm và viết cho bạn một đoạn kết luận.

python
1#!/usr/bin/env python3
2"""
3forensic_screener.py - đọc bất kỳ công ty nào như một nhà phân tích, chỉ bằng một lệnh.
4
5cài đặt:
6 pip install edgartools anthropic
7 export SEC_IDENTITY="Your Name [email protected]" # SEC yêu cầu header này
8 export ANTHROPIC_API_KEY="sk-..." # tùy chọn, chỉ dùng cho so sánh
9
10chạy:
11 python forensic_screener.py AAPL
12 python forensic_screener.py TSLA NVDA SMCI # sàng lọc nhiều công ty cùng lúc
13 python forensic_screener.py SMCI --diff # thêm so sánh yếu tố rủi ro
14"""
15
16import os, sys, argparse
17from dataclasses import dataclass
18
19# NGƯỠNG - các ranh giới thay đổi lập trường của bạn. điều chỉnh theo ý muốn.
20M_FLAG = -1.78 # Beneish trên mức này -> rủi ro thao túng (ngưỡng cổ điển -2.22)
21Z_DISTRESS = 1.81 # Altman dưới mức này -> vùng kiệt quệ
22Z_SAFE = 2.99 # Altman trên mức này -> vùng an toàn
23ACCRUAL_BAD = 0.25 # |accruals/assets| trên mức này -> cờ đỏ chất lượng lợi nhuận
24F_STRONG = 6 # Piotroski ở mức này hoặc cao hơn -> đang củng cố
25
26@dataclass
27class YearData:
28 sales: float; cogs: float; sga: float; net_income: float; cfo: float
29 receivables: float; current_assets: float; current_liabilities: float
30 ppe_net: float; depreciation: float; total_assets: float
31 total_liabilities: float; long_term_debt: float; retained_earnings: float
32 ebit: float; market_cap: float; shares: float
33
34def load_two_years(ticker: str):
35 """trả về (this_year, last_year). gọi SEC EDGAR qua mạng."""
36 from edgar import Company, set_identity
37 identity = os.environ.get("SEC_IDENTITY")
38 if not identity:
39 sys.exit("đặt SEC_IDENTITY='Your Name [email protected]' - SEC yêu cầu điều này.")
40 set_identity(identity)
41
42 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)
45
46 def g(stmt, col, *aliases):
47 # tra cứu hàng theo cách tốt nhất có thể; các công ty gắn thẻ cùng một ý tưởng khác nhau
48 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 continue
55 return 0.0
56
57 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 )
77
78 # col 0 = năm mới nhất, col 1 = năm trước (edgartools sắp xếp mới nhất trước)
79 return build(0), build(1)
80
81def d(a, b): return a / b if b else 0.0 # phép chia an toàn
82
83def 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*SGI
93 + 0.115*DEPI - 0.172*SGAI + 4.679*TATA - 0.327*LVGI)
94
95def altman_z_score(t):
96 wc = t.current_assets - t.current_liabilities
97 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))
100
101def piotroski_f_score(t, p):
102 s = 0
103 s += t.net_income > 0
104 s += t.cfo > 0
105 s += d(t.net_income, t.total_assets) > d(p.net_income, p.total_assets)
106 s += t.cfo > t.net_income # tiền mặt vượt dồn tích
107 s += t.long_term_debt < p.long_term_debt
108 s += d(t.current_assets, t.current_liabilities) > d(p.current_assets, p.current_liabilities)
109 s += t.shares <= p.shares # không pha loãng
110 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)
113
114def sloan_accruals(t): return d(t.net_income - t.cfo, t.total_assets)
115
116def risk_factor_diff(ticker):
117 """so sánh Risk Factors năm nay với năm ngoái. bài đọc tốt nhất trong toàn bộ ngăn xếp."""
118 key = os.environ.get("ANTHROPIC_API_KEY")
119 if not key:
120 return "(đã bỏ qua - đặt ANTHROPIC_API_KEY để bật so sánh)"
121 from edgar import Company
122 import anthropic
123 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 "so sánh hai phần Risk Factors này từ các báo cáo hàng năm liên tiếp. "
131 "chỉ báo cáo những gì MỚI trong năm nay hoặc những gì ĐÃ BỊ LOẠI BỎ. trích dẫn ngôn ngữ mới. "
132 "bỏ qua văn bản tiêu chuẩn có trong cả hai. kết thúc bằng một câu: có điều gì ở đây thay đổi rủi ro không?\n\n"
133 f"NĂM NGOÁI:\n{last_rf[:40000]}\n\nNĂM NAY:\n{this_rf[:40000]}")}],
134 )
135 return msg.content[0].text
136
137def 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" không thể tải hồ sơ: {e}"); return
143
144 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} - rủi ro thao túng lợi nhuận")
147 if z < Z_DISTRESS: flags.append(f"Z-Score {z:.2f} - vùng kiệt quệ tài chính")
148 if abs(a) > ACCRUAL_BAD: flags.append(f"Accruals {a:+.1%} - cờ đỏ chất lượng lợi nhuận")
149 if f < F_STRONG: flags.append(f"F-Score {f}/9 - không đang củng cố")
150
151 print(f" Beneish M : {m:+.2f} (> {M_FLAG} = điều tra)")
152 print(f" Altman Z : {z:.2f} (< {Z_DISTRESS} kiệt quệ, > {Z_SAFE} an toàn)")
153 print(f" Piotroski F: {f}/9 (>= {F_STRONG} mạnh)")
154 print(f" Sloan Accr : {a:+.1%} (|x| > {ACCRUAL_BAD:.0%} cờ đỏ)")
155 print(f"\n KẾT LUẬN: {'ĐIỀU TRA' if flags else 'SẠCH'}")
156 for fl in flags: print(f" - {fl}")
157 if do_diff:
158 print("\n SO SÁNH YẾU TỐ RỦI RO (năm qua năm):")
159 print(" " + risk_factor_diff(ticker).replace("\n", "\n "))
160
161def main():
162 ap = argparse.ArgumentParser(description="trình sàng lọc pháp y cho bất kỳ công ty đại chúng Mỹ nào")
163 ap.add_argument("tickers", nargs="+")
164 ap.add_argument("--diff", action="store_true", help="cũng chạy so sánh yếu tố rủi ro")
165 args = ap.parse_args()
166 for tk in args.tickers:
167 screen(tk, do_diff=args.diff)
168 print("\nlưu ý: dấu hiệu xác suất, không phải bằng chứng. Beneish chạy trên dữ liệu "
169 "năm trước nên hành vi thao túng có thể đã được tháo dỡ. điểm số xấu có nghĩa là "
170 "mở hồ sơ, không bao giờ bán khống chỉ dựa trên con số.\n")
171
172if __name__ == "__main__":
173 main()

Tôi đã kiểm tra toán trước khi gửi, đưa vào một bộ số liệu lành mạnh và nó in ra M sạch khoảng -2.24, Z trong vùng an toàn, F ở 9/9, dồn tích gần bằng 0, chính xác những gì bạn muốn.

Thứ duy nhất cần máy của bạn là kết nối SEC trực tiếp và key cho so sánh. Các bí danh thẻ bao gồm các công ty nộp hồ sơ tiêu chuẩn, một công ty đặc biệt có thể cần thêm một dòng và tôi đã đánh dấu vị trí.

Lưu một chạm

Đọc sâu bài viết viral bằng AI trong YouMind

Lưu nguồn, đặt câu hỏi tập trung, tóm tắt lập luận và biến một bài viết viral thành các ghi chú có thể tái sử dụng trong một không gian làm việc AI duy nhất.

Khám phá YouMind
Dành cho nhà sáng tạo

Biến Markdown của bạn thành bài viết 𝕏 gọn gàng

Khi bạn đăng bài viết dài của riêng mình, việc định dạng hình ảnh, bảng và khối mã cho 𝕏 rất mệt mỏi. YouMind biến cả bản nháp Markdown thành một bài viết 𝕏 gọn gàng, sẵn sàng để đăng.

Thử Markdown sang 𝕏

Thêm pattern để giải mã

Bài viết viral gần đây

Khám phá thêm bài viết viral