Vì Sao Cùng Một Phân Tích AI Cho Kết Quả Khác?
Bạn chạy lại cùng một nghiên cứu sau một tháng và nhận được kết quả khác. Đây chưa chắc là lỗi. Doanh nghiệp có thể công bố lại báo cáo, nguồn dữ liệu có thể sửa một trường, danh sách cổ phiếu trong chỉ số có thể thay đổi hoặc chương trình đã được cập nhật.
Vấn đề thật sự xuất hiện khi bạn không thể trả lời: điều gì đã thay đổi?
Đó là lý do một harness nghiên cứu cần bốn mảnh ghép thường được gọi bằng tiếng Anh: snapshot, config, log và provenance. Tên nghe kỹ thuật, nhưng có thể hiểu bằng những vật rất quen thuộc:
- snapshot là ảnh chụp đầu vào tại một thời điểm;
- config là tờ ghi giả định;
- log là nhật ký công việc;
- provenance là hồ sơ nguồn gốc và đường đi của dữ liệu.
Bốn mảnh này không nhằm biến người làm tài chính thành kỹ sư dữ liệu. Chúng giúp một kết quả do AI tạo ra có thể được giải thích, kiểm tra và — khi điều kiện cho phép — chạy lại.
Bài 6/7 — tuyến chính: Trước: 7 phép kiểm trước khi tin kết quả · Tiếp: Thực hành phân tích với AI và Vnstock
“Chạy lại được” có hai mức
Hai khái niệm gần nhau nhưng không hoàn toàn giống nhau.
Có thể truy vết nghĩa là bạn biết dữ liệu đến từ đâu, được lấy lúc nào, đã qua những bước nào và vì sao Agent đưa ra kết quả.
Có thể tái lập nghĩa là dùng cùng đầu vào, giả định và chương trình để tạo lại kết quả đủ giống lần trước.
Trong thực tế tài chính, tái lập tuyệt đối không phải lúc nào cũng khả thi. Một nguồn có thể chỉ trả dữ liệu mới nhất; dữ liệu cũ có thể bị điều chỉnh; điều kiện sử dụng có thể không cho phép lưu toàn bộ bản sao. Khi đó, mục tiêu tối thiểu là giữ dấu vết đủ rõ để giải thích sự khác biệt.
Nói cách khác: không lưu được mọi thứ không có nghĩa được phép không ghi lại gì.
Snapshot: ảnh chụp dữ liệu tại thời điểm nghiên cứu
Snapshot là bản dữ liệu đầu vào được giữ nguyên cho một lần nghiên cứu. Nó giống việc chụp lại bảng số liệu trước khi bắt đầu tính toán.
Giả sử ngày 15/09 bạn lấy tám quý báo cáo tài chính của FPT. Đến tháng sau, một kỳ được nguồn cập nhật lại. Nếu còn snapshot ngày 15/09, bạn có thể chạy chương trình với bản cũ để xem báo cáo ban đầu được tạo như thế nào, sau đó so với dữ liệu mới.
Một snapshot hữu ích cần đi kèm ít nhất:
- thời điểm truy xuất;
- đối tượng và khoảng thời gian;
- loại kỳ và đơn vị;
- tên nguồn hoặc kênh truy xuất;
- dấu nhận diện để biết tệp có bị thay đổi hay không.
Không phải dữ liệu nào cũng nên hoặc được phép lưu. Điều kiện sử dụng của nguồn, thông tin nhạy cảm và dung lượng lưu trữ đều phải được xem xét. Nếu không thể giữ toàn bộ bản dữ liệu, hãy lưu phần thông tin mô tả ở trên cùng câu lệnh hoặc tham số truy xuất. Khi đó bạn có khả năng truy vết, dù có thể không tái lập chính xác từng con số.
Config: tờ ghi những giả định đã chọn
Config là viết tắt của configuration, nghĩa là cấu hình. Có thể coi đây là tờ khai của nghiên cứu: mã nào, giai đoạn nào, công thức nào và quy tắc nào được dùng.
Với ví dụ biên lợi nhuận, config có thể ghi:
- mã chứng khoán: FPT;
- số kỳ: tám quý;
- loại báo cáo: hợp nhất;
- loại kỳ: riêng quý;
- đơn vị trình bày: tỷ đồng;
- công thức: lợi nhuận gộp chia doanh thu;
- cách xử lý kỳ thiếu: dừng và báo người dùng.
Nếu kết quả thay đổi sau khi bạn đổi từ báo cáo riêng quý sang lũy kế, đó không phải điều bí ẩn. Config cho thấy giả định đã đổi.
Giữ cấu hình riêng còn giúp Agent không phải đoán lại ý người dùng ở mỗi lần chạy. Một nghiên cứu có thể có nhiều cấu hình để trả lời các biến thể của cùng câu hỏi, trong khi phần chương trình chính vẫn được giữ nguyên.
Log: nhật ký ghi điều gì đã thực sự xảy ra
Config nói điều bạn muốn chương trình làm. Log ghi điều chương trình đã làm trong lần chạy cụ thể.
Một log dễ hiểu không cần chứa hàng nghìn dòng kỹ thuật. Nó có thể chỉ cần ghi:
- bắt đầu và kết thúc lúc nào;
- đã lấy được bao nhiêu kỳ;
- phép kiểm nào đã chạy;
- có cảnh báo hoặc lỗi nào;
- tệp kết quả được tạo ở đâu;
- Agent có phải thử lại hoặc đổi bước xử lý hay không.
Ví dụ:
09:00 - Bắt đầu nghiên cứu FPT, yêu cầu 8 quý
09:01 - Nhận 8 kỳ, loại kỳ: riêng quý, đơn vị nguồn: triệu đồng
09:01 - Không phát hiện kỳ trùng; không thiếu doanh thu và lợi nhuận gộp
09:02 - Quy đổi bảng trình bày sang tỷ đồng
09:02 - Tạo bảng và biểu đồ; hoàn thành với 1 lưu ý về dữ liệu nguồnNhật ký này không thay thế dữ liệu và code. Nó là mục lục của một lần chạy, giúp người đọc biết nên kiểm tra phần nào trước.
Provenance: hồ sơ nguồn gốc và đường đi của dữ liệu
Provenance thường được dịch là nguồn gốc hoặc phả hệ dữ liệu. Trong nghiên cứu, nó trả lời bốn câu:
- Dữ liệu ban đầu đến từ đâu?
- Người dùng truy cập dữ liệu đó qua công cụ nào?
- Dữ liệu đã được biến đổi ra sao?
- Bảng hoặc nhận xét cuối được tạo từ những trường nào?
Ví dụ, một dòng provenance có thể được diễn giải bằng tiếng Việt như sau:
Dữ liệu báo cáo tài chính từ nguồn bên thứ ba được người dùng tự kết nối qua Vnstock; Agent chọn các trường doanh thu và lợi nhuận gộp, xác định số riêng quý, quy đổi đơn vị trình bày rồi tính biên lợi nhuận gộp.
Thông tin này ngăn một hiểu lầm quan trọng: Vnstock là công cụ kết nối và chuẩn hoá, không phải bên bán hay sở hữu dữ liệu gốc. Nó cũng giúp tách lỗi theo từng lớp. Nếu số đầu vào khác, hãy kiểm tra nguồn hoặc thời điểm truy xuất. Nếu số đầu vào giống nhưng biên lợi nhuận khác, hãy kiểm tra phép biến đổi và công thức.
Ghép bốn mảnh vào một nghiên cứu
Hãy xem lại câu hỏi:
“Doanh thu và biên lợi nhuận gộp của FPT thay đổi thế nào trong tám quý gần nhất?”
| Mảnh ghép | Nó giữ lại điều gì? | Nếu thiếu thì khó trả lời câu nào? |
|---|---|---|
| Snapshot — ảnh chụp đầu vào | Bảng dữ liệu tại thời điểm đã lấy | “Con số lúc đó là bao nhiêu?” |
| Config — tờ giả định | Mã, số kỳ, loại báo cáo, loại kỳ, đơn vị và công thức | “Lần đó ta đã chọn cách hiểu nào?” |
| Log — nhật ký chạy | Các bước đã diễn ra, phép kiểm, cảnh báo và tệp đầu ra | “Chương trình có thật sự chạy hết không?” |
| Provenance — hồ sơ nguồn gốc | Nguồn, công cụ kết nối và đường biến đổi từ đầu vào tới kết quả | “Con số này đến từ đâu và đã bị thay đổi thế nào?” |
Khi đủ bốn mảnh, một chênh lệch ở lần chạy sau trở thành vấn đề có thể điều tra:
- snapshot khác nhưng config và code giống: dữ liệu nguồn có thể đã thay đổi;
- config khác: người dùng đã đổi giả định;
- snapshot và config giống nhưng kết quả khác: chương trình hoặc thư viện có thể đã đổi;
- mọi thứ giống nhưng log có cảnh báo: lần chạy có thể chưa hoàn tất đúng điều kiện.
Đây là giá trị thực tế của tái lập nghiên cứu: không phải để đóng băng thị trường, mà để phân biệt thị trường thay đổi với cách nghiên cứu thay đổi.
Vì sao dữ liệu tài chính đặc biệt cần những dấu vết này?
Báo cáo có thể được cập nhật hoặc trình bày lại
Một số con số tài chính có thể thay đổi sau lần công bố đầu tiên. Nếu chỉ giữ báo cáo cuối, bạn khó biết nhận xét cũ được xây trên phiên bản nào.
Giá có thể được điều chỉnh
Cổ tức, chia tách, phát hành hoặc các sự kiện khác có thể làm chuỗi giá điều chỉnh khác chuỗi giá giao dịch ban đầu. Hai nghiên cứu cùng nói “giá đóng cửa” nhưng dùng quy ước khác sẽ cho kết quả khác.
Thành phần của một chỉ số thay đổi theo thời gian
Nếu lấy danh sách thành phần hiện tại để thử một chiến lược trong quá khứ, nghiên cứu có thể vô tình loại bỏ những doanh nghiệp đã rời chỉ số. Snapshot của danh sách thành phần giúp phát hiện sai lệch này.
Ngày kết thúc kỳ không phải ngày thị trường biết thông tin
Báo cáo quý kết thúc ngày 30/06 nhưng được công bố sau đó. Một phép thử dùng số liệu từ ngày 30/06 có thể đã nhìn thấy thông tin tương lai. Config và provenance cần phân biệt ngày của kỳ báo cáo với ngày dữ liệu thực sự có thể được sử dụng.
Cùng tên chỉ tiêu có thể khác cách hiểu
“Lợi nhuận quý” có thể là riêng quý hoặc lũy kế từ đầu năm. “Tăng trưởng” có thể so với quý trước hoặc cùng kỳ năm trước. Ghi lại định nghĩa giúp người đọc không chỉ thấy công thức đúng, mà còn biết công thức có trả lời đúng câu hỏi hay không.
Một “hộ chiếu nghiên cứu” gói gọn mọi thứ
Người mới không cần đọc toàn bộ log và code trong mỗi lần xem kết quả. Harness có thể tạo một trang tóm tắt gọi là hộ chiếu nghiên cứu.
| Mục | Nội dung nên có |
|---|---|
| Câu hỏi | Nghiên cứu muốn tìm hiểu điều gì |
| Thời điểm | Dữ liệu được truy xuất và chương trình được chạy khi nào |
| Phạm vi | Mã, giai đoạn, loại kỳ và đơn vị |
| Nguồn | Dữ liệu đến từ nguồn bên thứ ba nào và được truy cập qua công cụ nào |
| Giả định | Công thức, mốc so sánh và cách xử lý ngoại lệ |
| Phiên bản | Phiên bản chương trình, thư viện hoặc tệp cấu hình |
| Phép kiểm | Những điều đã kiểm tra và cảnh báo còn lại |
| Kết quả | Đường dẫn tới bảng, biểu đồ và báo cáo |
| Khả năng tái lập | Có snapshot đầy đủ hay chỉ đủ thông tin để truy vết |
Trang này giúp người duyệt hiểu nhanh chất lượng của nghiên cứu trước khi đi sâu. Nó cũng giúp người làm một mình quay lại sau vài tháng mà không phải đọc lại toàn bộ cuộc trò chuyện với AI.
Có thể giao phần này cho Agent tới đâu?
AI Agent có thể tự động:
- tạo tên cho mỗi lần chạy;
- lưu snapshot khi điều kiện nguồn cho phép;
- chép cấu hình dùng trong lần chạy;
- ghi log và các cảnh báo;
- lập hộ chiếu nghiên cứu;
- so sánh hai lần chạy để chỉ ra phần đã thay đổi.
Người dùng vẫn phải xác nhận:
- dữ liệu có được phép lưu hay không;
- định nghĩa chỉ tiêu có phù hợp với câu hỏi;
- ngày thông tin có sẵn được hiểu đúng chưa;
- thay đổi nào là sửa lỗi, thay đổi nào phản ánh thực tế mới;
- nghiên cứu đủ độ tin cậy cho mục đích dự kiến hay chưa.
Đây chính là mối quan hệ giữa Agent và harness: Agent làm phần ghi chép đều đặn; harness buộc việc ghi chép xảy ra; con người đọc ý nghĩa của những gì được ghi.
Mức tối thiểu nên giữ sau mỗi lần chạy
Nếu muốn bắt đầu gọn nhất, hãy yêu cầu Agent giữ tám thông tin:
- câu hỏi nghiên cứu;
- ngày giờ truy xuất;
- mã và khoảng thời gian;
- nguồn dữ liệu bên thứ ba;
- loại kỳ, đơn vị và công thức;
- phiên bản chương trình và thư viện;
- cảnh báo hoặc dữ liệu thiếu;
- vị trí của bảng và báo cáo kết quả.
Nếu được phép, hãy giữ thêm snapshot. Nếu không, ghi rõ trong hộ chiếu rằng kết quả chỉ có thể truy vết chứ chưa chắc tái lập chính xác.
Bạn có thể thêm yêu cầu này vào prompt ở bài Xây harness tối thiểu cho AI phân tích chứng khoán bằng Python:
“Sau mỗi lần chạy, hãy tạo hộ chiếu nghiên cứu ghi thời điểm, nguồn, cấu hình, phiên bản, phép kiểm, cảnh báo và đường dẫn kết quả. Nếu không được phép lưu snapshot, hãy nói rõ giới hạn tái lập thay vì bỏ qua.”
Tái lập không biến kết quả thành chân lý
Một nghiên cứu có thể chạy lại hoàn hảo mà vẫn dùng giả định sai. Snapshot giúp biết đầu vào, không chứng minh đầu vào đúng. Config giúp thấy công thức, không chứng minh công thức phù hợp. Log cho biết chương trình đã chạy, không bảo đảm nhận xét cuối hợp lý.
Tái lập là điều kiện để kiểm tra và tranh luận có căn cứ. Nó không thay thế hiểu biết tài chính, đánh giá nguồn hoặc trách nhiệm của người sử dụng kết quả.
Vnstock giúp người dùng đưa dữ liệu từ nguồn bên thứ ba vào quy trình Python do chính họ kiểm soát. Agent Guide và Agent Skills giúp trợ lý AI làm việc theo hướng dẫn. Harness dùng snapshot, config, log và provenance để giữ lại đường đi từ câu hỏi tới báo cáo. Mỗi lớp giải quyết một phần khác nhau; không lớp nào tự bảo đảm một quyết định đầu tư đúng.
Bài tiếp theo ghép các phần đã học thành một bài thực hành dùng AI và Vnstock phân tích báo cáo tài chính.
Bạn có thể bắt đầu với bản Cộng đồng để làm quen quy trình nền tảng. Nếu cần các thư viện và hướng dẫn thuộc bản Mở rộng, hãy xem các gói quyền sử dụng Vnstock. Gói tài trợ cấp quyền sử dụng phần mềm trong thời hạn áp dụng, không phải quyền sở hữu dữ liệu từ nguồn bên thứ ba.
Câu hỏi thường gặp
Snapshot có phải bản sao lưu không?
Snapshot là bản dữ liệu được giữ cho một thời điểm nghiên cứu cụ thể. Bản sao lưu phục vụ khôi phục dữ liệu nói chung. Một snapshot có thể được sao lưu, nhưng mục đích chính của nó là giúp đối chiếu lần chạy.
Có snapshot thì chắc chắn chạy lại giống hệt không?
Chưa chắc. Bạn còn cần cùng cấu hình, chương trình, phiên bản thư viện và môi trường tương thích. Ngay cả khi đó, một số phép tính hoặc dịch vụ bên ngoài vẫn có thể thay đổi.
Log có chứa toàn bộ suy nghĩ của AI không?
Không cần. Log nên ghi hành động, tham số, kết quả kiểm tra, cảnh báo và tệp được tạo. Điều cần lưu là dấu vết có thể kiểm tra, không phải mọi câu chữ nội bộ của mô hình.
Provenance có phải chỉ là ghi tên nguồn không?
Không. Tên nguồn chỉ là điểm bắt đầu. Provenance còn ghi công cụ truy cập, các bước chuẩn hoá, phép tính và mối liên hệ giữa dữ liệu đầu vào với kết quả cuối.
Nếu nguồn không cho lưu dữ liệu thì nghiên cứu có vô nghĩa không?
Không. Bạn vẫn có thể giữ tham số, thời điểm, nguồn, phiên bản, log và kết quả được phép lưu. Cần nói rõ rằng khả năng truy vết còn nhưng khả năng tái lập chính xác có thể bị giới hạn.
—
Vnstock là hệ sinh thái năm phần mềm chạy trên hạ tầng của bạn. Công ty cấp quyền sử dụng từng phần mềm; riêng nội dung được kết nối qua vnstock hoặc vnstock_news vẫn chịu điều kiện, tính sẵn sàng và độ chính xác của nguồn. Nội dung phục vụ nghiên cứu
và tham khảo, không phải khuyến nghị đầu tư.
Mã nguồn: github.com/vnstock-hq · Tài liệu: vnstocks.com
