Lọc cổ phiếu theo P/E, ROE, thanh khoản bằng AI
Sàng lọc cổ phiếu Việt Nam bằng Claude hoặc ChatGPT theo điều kiện tự chọn trên P/E, ROE, thanh khoản, khối ngoại, RS, Điểm tổng hợp; xếp hạng theo một chỉ tiêu.
Sàng lọc cổ phiếu là bước đầu của hầu hết quy trình phân tích, và FinLens MCP
cho bạn làm việc đó bằng một câu tiếng Việt thay vì kéo thả bộ lọc. Ba công cụ
chia việc rõ: screener_list_fields cho biết có thể lọc theo trường nào với đơn
vị gì, screener_run chạy cây điều kiện tự chọn, còn screener_top xếp hạng cả
bảng lọc theo một chỉ tiêu duy nhất. Kết quả là danh sách mã thật kèm giá trị của
đúng những trường bạn đã hỏi.
Có thể lọc theo những trường nào?
Công cụ screener_list_fields trả catalog trường của bảng lọc: mã trường, tên
tiếng Việt, nhóm, kiểu dữ liệu, đơn vị, toán tử hợp lệ, thang giá trị gợi ý và
tỷ lệ mã có dữ liệu ở phiên mới nhất. Các nhóm gồm giá và biến động (price),
thanh khoản (liquidity), khối ngoại (foreign), cổ đông (shareholder), RS và
Điểm tổng hợp (rating) và chỉ số cơ bản (fundamental) như P/E, P/B, ROE,
ROA, biên lợi nhuận, tăng trưởng, vốn hoá.
Bộ lọc có những trường cơ bản nào, đơn vị từng trường là gì và bao nhiêu phần trăm mã có dữ liệu?
→ screener_list_fields: group='fundamental' — fields.code, unit, operators, coverage_pct
Có trường nào về khối ngoại để lọc không? Toán tử nào dùng được với chúng?
→ screener_list_fields: query='nước ngoài' — fields.operators, min_value / max_value, example_conditions
Hai trường ghi chú đáng xem trước khi lọc: coverage_pct bằng 0 nghĩa là trường
hiện chưa có số liệu nên lọc sẽ rỗng; as_of_supported cho biết trường có dùng
được khi lọc theo một phiên quá khứ hay không — chỉ số cơ bản thì không. Danh
sách not_supported_here liệt kê các trường là tín hiệu kỹ thuật dạng sự kiện,
thuộc signals_screen chứ không thuộc bộ lọc này.
Lọc theo điều kiện tự chọn
Công cụ screener_run nhận một cây điều kiện {logic, rules}: mỗi rule gồm
field lấy từ catalog, op và value; một rule có thể là một nhóm con với
logic riêng, lồng tối đa 3 cấp và tối đa 20 rule. Toán tử cho trường số là
>=, <=, >, < và between với cặp [thấp, cao]; trường danh sách dùng in
và not_in. Giá trị truyền theo đơn vị của trường, phần trăm đã nhân 100.
Tìm cổ phiếu trên HOSE có ROE từ 15% và P/E dưới 12, sắp theo thanh khoản giảm dần, lấy 20 mã
→ screener_run: conditions={logic:'and', rules:[roe >= 15, pe < 12]}, exchanges=['HOSE'], sort_by='avg_value_bil', limit=20
Trong ngành ngân hàng, tìm mã có P/B dưới 1,5 và (ROE trên 18% hoặc tăng trưởng lợi nhuận trên 20%)
→ screener_run: icb_code='8300', rules lồng 2 cấp — nhóm con {logic:'or', rules:[...]}
Tại phiên 2026-10-01, mã nào có RS trên 80 và giá trị giao dịch bình quân trên 50 tỷ một phiên?
→ screener_run: as_of='2026-10-01' — chỉ trường có as_of_supported; chỉ số cơ bản không dùng được với as_of
Kết quả trả universe_size là số mã được xét sau khi lọc sàn và ngành,
matched là tổng số mã thoả điều kiện trước khi cắt theo limit, và từng dòng
gồm mã, sàn, mã ngành ICB cấp 4, giá đóng cửa theo nghìn VND, % thay đổi phiên và
1 tháng, RS 1–100, Điểm tổng hợp 1–99, giá trị giao dịch bình quân 3 tháng cùng
values chứa giá trị của mọi trường đã dùng. Trường hoặc toán tử sai trả lỗi nêu
rõ rule nào sai, nên bạn sửa đúng chỗ thay vì đoán.
Xếp hạng theo một chỉ tiêu
Công cụ screener_top xếp toàn bộ bảng lọc theo một trường số ở phiên mới
nhất: chg_1m_pct tăng giá 1 tháng, chg_d_pct thay đổi trong phiên,
avg_value_bil thanh khoản, foreign_net_value_bil khối ngoại mua bán ròng,
rs_score, overall_rating, roe, pe, market_cap... direction là desc
để lấy giá trị cao nhất trước hoặc asc để lấy thấp nhất trước.
10 cổ phiếu tăng mạnh nhất 1 tháng qua trên HOSE và HNX là mã nào, thanh khoản từng mã ra sao?
→ screener_top: metric='chg_1m_pct', direction='desc', exchanges=['HOSE','HNX'], limit=10
Trong ngành bất động sản, mã nào được khối ngoại mua ròng nhiều nhất phiên gần nhất?
→ screener_top: metric='foreign_net_value_bil', icb_code='8600' — khớp cả ngành con
Mã không có giá trị của trường được xếp hạng bị bỏ qua, và screener_top không
lọc thêm điều kiện nào khác — khi cần vừa lọc vừa xếp hạng, dùng screener_run
với sort_by.
Chạy bộ lọc đã lưu trên FinLens
Bộ lọc bạn đã lưu trên FinLens chạy được ngay trong trợ lý AI sau khi đăng nhập
qua OAuth. Công cụ me_saved_screens liệt kê các bộ lọc kèm saved_screen_id,
điều kiện, các trường dùng và cờ runnable; truyền id đó vào
screener_run(saved_screen_id=...) là chạy đúng bộ lọc trên phiên mới nhất.
Bộ lọc có tín hiệu kỹ thuật dạng sự kiện thì không chạy được ở đây — danh sách
trường đó nằm ở unsupported_fields. Chi tiết về dữ liệu cá nhân xem
Danh mục, watchlist và bộ lọc của bạn.
Chạy bộ lọc "Giá trị" tôi đã lưu trên FinLens và cho biết hôm nay có bao nhiêu mã khớp
→ me_saved_screens lấy id → screener_run: saved_screen_id=..., không truyền conditions cùng lúc
Phạm vi quét và giới hạn
Phạm vi của ba công cụ là bảng lọc của FinLens — rổ cổ phiếu thanh khoản,
không phải toàn bộ mã niêm yết; universe_size trong kết quả cho biết đúng số mã
được xét. Bộ lọc dựa trên dữ liệu cuối ngày của phiên ghi ở as_of, chỉ số cơ
bản tính khi chạy nên không lọc được theo ngày quá khứ. Công cụ không tính tín
hiệu kỹ thuật dạng sự kiện, không chấm điểm và không khuyến nghị mã nào; danh sách
khớp điều kiện là điểm bắt đầu để phân tích tiếp, không phải danh mục nên mua.
Khác gì với signals_screen?
screener_run lọc theo trạng thái hiện tại của các trường trong catalog —
giá, biến động, thanh khoản, khối ngoại, sở hữu, RS, Điểm tổng hợp, chỉ số cơ bản
— với cây điều kiện tự do. signals_screen ở trang
Tín hiệu kỹ thuật và backtest quét sự kiện kỹ thuật
như giá cắt đường trung bình hay RSI vào vùng quá bán xuất hiện trong N phiên
gần nhất, kèm bộ lọc cơ bản đi cùng. Trường nào catalog đánh dấu
not_supported_here thì thuộc signals_screen; hai công cụ dùng cùng thang RS
1–100 nên kết quả đối chiếu được với nhau.
Bảng công cụ bộ lọc
| Công cụ | Việc gì | Tham số chính |
|---|---|---|
screener_list_fields | Catalog trường lọc: mã, tên, nhóm, kiểu, đơn vị, toán tử, thang giá trị, % mã có dữ liệu, ví dụ conditions; liệt kê trường thuộc signals_screen | group, query |
screener_run | Lọc theo cây điều kiện and/or (≤ 3 cấp, ≤ 20 rule), theo sàn và ngành ICB, sắp xếp theo trường bất kỳ, lọc theo phiên quá khứ, hoặc chạy bộ lọc đã lưu | conditions, sort_by, sort_dir, exchanges, icb_code, limit, as_of, saved_screen_id |
screener_top | Xếp hạng cả bảng lọc theo một trường số ở phiên mới nhất, cao nhất hoặc thấp nhất trước | metric, direction, exchanges, icb_code, limit |
Bài liên quan
Tín hiệu kỹ thuật và backtest
signals_screen quét tín hiệu dạng sự kiện — phần bộ lọc này không làm.
Điểm xếp hạng tổng hợp
Ý nghĩa của Điểm tổng hợp 1–99 và Sức mạnh giá xuất hiện trong kết quả lọc.
Danh mục, watchlist và bộ lọc của bạn
Lấy id bộ lọc đã lưu để chạy lại trong trợ lý AI.
Phân tích tài chính cơ bản
Đào sâu từng mã sau khi có danh sách khớp điều kiện.
Câu hỏi thường gặp
Lọc cổ phiếu có ROE trên 15% và P/E dưới 12 bằng AI thế nào?
Chỉ cần hỏi trợ lý AI bằng tiếng Việt, ví dụ tìm cổ phiếu HOSE có ROE từ 15% và P/E dưới 12, sắp theo thanh khoản. FinLens MCP gọi screener_run với cây điều kiện gồm hai rule roe >= 15 và pe < 12 nối bằng logic and, lọc sàn qua exchanges rồi sắp xếp theo avg_value_bil. Kết quả trả từng mã kèm giá, % thay đổi, RS, Điểm tổng hợp, thanh khoản và giá trị thật của mọi trường đã dùng trong điều kiện. Điều kiện có thể lồng and/or tối đa 3 cấp với tối đa 20 rule.
Làm sao biết bộ lọc có những trường nào và đơn vị ra sao?
Công cụ screener_list_fields của FinLens MCP trả catalog đầy đủ: mã trường dùng trong rule, tên tiếng Việt, nhóm, kiểu số hay danh sách, đơn vị như %, nghìn VND, tỷ VND hay lần, toán tử hợp lệ, thang giá trị gợi ý, trường có sắp xếp được không, có lọc theo ngày quá khứ được không và tỷ lệ mã có dữ liệu ở phiên mới nhất. Có thể lọc catalog theo nhóm hoặc từ khoá, ví dụ nhóm fundamental hay từ khoá nước ngoài. Kết quả kèm ví dụ conditions hợp lệ để tham chiếu.
Cổ phiếu nào tăng mạnh nhất tháng qua hoặc được khối ngoại mua ròng nhiều nhất?
Công cụ screener_top của FinLens MCP xếp hạng toàn bộ bảng lọc theo một trường duy nhất ở phiên mới nhất. Hỏi tăng mạnh nhất tháng thì AI dùng metric chg_1m_pct với direction desc; hỏi giảm mạnh nhất thì direction asc; hỏi khối ngoại mua ròng nhiều nhất thì metric foreign_net_value_bil. Có thể giới hạn theo sàn hoặc một ngành ICB ở bất kỳ cấp nào, ngành con được tính luôn. Mã không có giá trị của trường bị bỏ qua và công cụ không lọc thêm điều kiện khác.
FinLens MCP có chạy được bộ lọc tôi đã lưu trên FinLens không?
Có. Sau khi đăng nhập FinLens qua OAuth, me_saved_screens liệt kê các bộ lọc đã lưu kèm id, điều kiện, các trường dùng và cờ runnable cho biết screener_run chạy được toàn bộ điều kiện hay không. Truyền saved_screen_id vào screener_run là chạy đúng bộ lọc đó trên dữ liệu phiên mới nhất. Bộ lọc có chứa tín hiệu kỹ thuật dạng sự kiện thì không chạy được ở đây vì các trường đó thuộc signals_screen; danh sách trường không hỗ trợ nằm ở unsupported_fields.
screener_run khác signals_screen ở điểm nào?
screener_run của FinLens MCP lọc theo trạng thái hiện tại của các trường trong catalog như giá, biến động, thanh khoản, khối ngoại, sở hữu, RS, Điểm tổng hợp và chỉ số cơ bản, với cây điều kiện tự do và không tính tín hiệu kỹ thuật dạng sự kiện. signals_screen quét sự kiện kỹ thuật như giá cắt đường trung bình, RSI hay MACD xuất hiện trong N phiên gần nhất kèm bộ lọc cơ bản đi cùng. Khi catalog của screener_list_fields liệt kê một trường trong not_supported_here thì trường đó là tín hiệu dạng sự kiện và cần dùng signals_screen.
Cập nhật lần cuối