Giới thiệu dự án

Thị trường tài chính hiện đại, đặc biệt là tiền mã hóa (Cryptocurrency) và chứng khoán (Stock Market), luôn đặc trưng bởi tính biến động phi tuyến tính cực cao và chịu sự chi phối mạnh mẽ từ tâm lý đám đông. Theo các báo cáo tài chính quốc tế, hơn 70% các đợt biến động giá ngắn hạn trong thị trường crypto chịu ảnh hưởng trực tiếp từ các cuộc thảo luận, tin tức và hiệu ứng lan truyền trên các mạng xã hội như Twitter/X. Tuy nhiên, các phương pháp phân tích kỹ thuật truyền thống thường thất bại trong việc nắm bắt kịp thời các cú sốc thông tin này.

+-------------------------------------------------------------------------+
|                          THÁCH THỨC BÀI TOÁN                            |
+-------------------------------------------------------------------------+
| [Dữ liệu chuỗi thời gian]  --> Độ trễ cao, không dự đoán được cú sốc     |
| [Mạng xã hội (Twitter)]    --> Dữ liệu phi cấu trúc, cực kỳ nhiễu       |
| [Mô hình máy học đơn lẻ]   --> Dễ Overfitting, sai số dự báo lớn (>10%) |
+-------------------------------------------------------------------------+
                                    |
                                    v
+-------------------------------------------------------------------------+
|                           GIẢI PHÁP ĐỀ XUẤT                             |
+-------------------------------------------------------------------------+
| 1. Dự báo ngắn hạn (1 ngày): NLP (VADER) + Ensemble Boosting (LR+GB/AB) |
| 2. Dự báo trung/dài hạn (7-30 ngày): Mô hình thống kê chuỗi (ETS/ARIMA) |
| 3. Hệ thống Production: Fullstack Next.js + Spring Boot + Cron Linux    |
+-------------------------------------------------------------------------+

Problem Statement

  1. Độ trễ tín hiệu của dữ liệu lịch sử: Các mô hình chuỗi thời gian truyền thống (như AR, ES) chỉ dựa vào giá đóng cửa quá khứ, hoàn toàn bỏ qua yếu tố cảm xúc thị trường (Market Sentiment).
  2. Nhiễu loạn dữ liệu truyền thông: Hàng triệu tweet mỗi ngày chứa biệt ngữ, biểu tượng cảm xúc (emojis), hashtag và spam khiến việc trích xuất chỉ số tâm lý chính xác gặp nhiều thách thức.
  3. Hiệu suất kém của các mô hình đơn lẻ: Các thuật toán Machine Learning đơn lẻ (Single Models) như Linear Regression hay Deep Learning độc lập (LSTM, GRU) thường gặp hiện tượng quá khớp (overfitting) hoặc bão hòa gradient khi dự báo thị trường biến động mạnh.

Project Objectives

  1. Thu thập, làm sạch và xây dựng tập dữ liệu đa chiều gồm lịch sử giá (2015–2022) từ Yahoo! Finance và dữ liệu vi mô (tweets) từ Twitter API cho 3 chỉ số đại diện: Bitcoin (BTC), Tesla (TSLA), và Twitter (TWTR).
  2. Phát triển pipeline tiền xử lý ngôn ngữ tự nhiên (NLP) ứng dụng từ điển VADER (Valence Aware Dictionary and sEntiment Reasoner) để lượng hóa 6 chỉ số cảm xúc: Compound, Polarity, Subjectivity, Positive, Negative, Neutral.
  3. Thiết kế và kiểm nghiệm mô hình kết hợp Ensemble Learning (Bagging & Boosting) kết hợp hồi quy tuyến tính (LR, EN) và mạng nơ-ron hồi quy (LSTM, GRU, GB, AB) cho bài toán dự báo ngắn hạn 1 ngày.
  4. Đánh giá và so sánh hiệu năng các mô hình thống kê chuỗi thời gian (AR, ES, ETS, GARCH, NNETAR, TBATS) cho dự báo trung và dài hạn (7 ngày và 30 ngày).
  5. Đóng gói giải pháp thành hệ thống web application hoàn chỉnh theo kiến trúc 4 lớp (Web Client - API Backend - Linux Automation - Machine Learning Core).

Scope & Limitations

  • Phạm vi nghiên cứu: Dữ liệu lịch sử giao dịch và bài đăng Twitter trong giai đoạn 01/01/2015 – 27/10/2022 đối với các mã BTC-USD, TSLA, TWTR.
  • Giới hạn: Chỉ xử lý các bài đăng bằng tiếng Anh; bộ dữ liệu sentiment được giới hạn ở top 50 tweet có độ phổ biến (lượt tương tác) cao nhất mỗi ngày để loại bỏ giá trị ngoại lai (outliers).

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Nghiên cứu so sánh trực quan các phương pháp dự báo giá tài chính hiện nay:

Tiêu chí Mô hình thống kê (ARIMA, GARCH) Học sâu đơn lẻ (LSTM, GRU) Giải pháp đề xuất (Hybrid Ensemble + NLP)
Nguồn dữ liệu Giá lịch sử đóng cửa Giá + Chỉ báo kỹ thuật cơ bản Giá lịch sử + 6 chỉ số Sentiment Twitter
Khả năng bắt sóng cảm xúc Không hỗ trợ Rất hạn chế Xử lý đa chiều thời gian thực với VADER
Cơ chế giảm sai số Cố định sai số ngẫu nhiên Tự điều chỉnh trọng số nội tại Kỹ thuật Boosting dự báo phần dư (Residuals)
Độ chính xác ngắn hạn (MAPE) Thường > 5.0% Dao động 4.5% - 8.0% 1.28% - 2.62%
Độ phức tạp tính toán Thấp Rất cao Tối ưu hóa phân tầng

Phân loại yêu cầu theo mô hình MoSCoW

  • Must-have: Pipeline tự động crawl dữ liệu Twitter và Yahoo! Finance; module phân tích cảm xúc VADER; mô hình Ensemble Boosting (LR-GB, EN-GB); API trả về kết quả dự báo ngày tiếp theo.
  • Should-have: Biểu đồ trực quan hóa tương tác giữa chỉ số cảm xúc Compound và biến động giá; mô hình thống kê ETS dự báo 7/30 ngày.
  • Could-have: Module khuyến nghị mua/bán tự động dựa trên ngưỡng biến động dự báo.
  • Won't-have: Giao dịch tự động qua API sàn (Auto-trading execution) trong giai đoạn này.

Thiết kế hệ thống

Kiến trúc toàn diện của hệ thống được tổ chức thành 4 phân vùng độc lập (4-Phases Architecture):

flowchart TD
    subgraph Phase1["Phase 1: Machine Learning & NLP Pipeline"]
        A1[Yahoo Finance Historical Data] --> B1[Feature Engineering & Normalization]
        A2[Twitter Tweets via Tweepy API] --> B2[NLP Cleaning & VADER Engine]
        B1 & B2 --> C1[Dataset Aggregation: Price + 6 Sentiment Metrics]
        C1 --> D1[5-Fold Cross Validation]
        D1 --> E1[Short-term: Boosting Models LR+GB/AB]
        D1 --> E2[Long-term: Statistical Models ETS/TBATS]
        E1 & E2 --> F1[(Serialized Best Models .pkl)]
    end

    subgraph Phase2["Phase 2 & 3: Cloud Backend & Automation"]
        G1[Linux Crontab 0 0 6 * *] --> H1[Automated Crawl Script]
        H1 --> I1[Spring Boot REST Controller]
        I1 --> J1[(MySQL Database)]
        F1 --> K1[Inference Service Engine]
        K1 --> I1
    end

    subgraph Phase4["Phase 4: Client Presentation"]
        I1 -->|JSON REST API| L1[Next.js Client UI]
        L1 --> M1[Interactive Prediction Dashboard]
        L1 --> M2[Historical Charts & Trend Analysis]
    end

Technology Stack

  • Data Engineering & AI: Python 3.10, Pandas 1.5.3, Scikit-learn 1.2.2, Statsmodels 0.14.0, NLTK VADER, Tweepy 4.14.0.
  • Backend Service: Java 17, Spring Boot 3.0.x, Spring Data JPA, Hibernate, Maven.
  • Database: MySQL 8.0 Community Server.
  • Infrastructure: Ubuntu Server 22.04 LTS, Crontab Scheduler.
  • Frontend Dashboard: Next.js 13 (React 18), TypeScript, TailwindCSS, Chart.js.

Thiết kế cơ sở dữ liệu (Database Schema)

Bảng thực thể bitcoin_data (tương tự cho twitter_datatesla_data):

Tên trường Kiểu dữ liệu Ràng buộc Diễn giải
id BIGINT PRIMARY KEY, AUTO_INCREMENT Khóa chính
datetime_record DATETIME NOT NULL, UNIQUE Ngày giao dịch và ghi nhận cảm xúc
open_price DOUBLE NOT NULL Giá mở cửa (USD)
high_price DOUBLE NOT NULL Giá cao nhất trong ngày (USD)
low_price DOUBLE NOT NULL Giá thấp nhất trong ngày (USD)
closing_price DOUBLE NOT NULL Giá đóng cửa thực tế (USD)
subjectivity FLOAT DEFAULT 0.0 Chỉ số đo lường tính chủ quan [0, 1]
polarity FLOAT DEFAULT 0.0 Độ phân cực cảm xúc [-1, 1]
compound FLOAT DEFAULT 0.0 Điểm cảm xúc tổng hợp [-1, 1]
positive FLOAT DEFAULT 0.0 Tỷ lệ tích cực [0, 1]
negative FLOAT DEFAULT 0.0 Tỷ lệ tiêu cực [0, 1]
neutral FLOAT DEFAULT 0.0 Tỷ lệ trung tính [0, 1]
predicted_price DOUBLE NULL Giá dự báo bởi mô hình Ensemble

Thiết kế RESTful API

  • GET /api/v1/forecast/{index}/latest: Lấy kết quả dự báo ngày tiếp theo kèm độ tin cậy.
  • GET /api/v1/historical/{index}?startDate={}&endDate={}: Truy vấn chuỗi dữ liệu thực tế và dự báo trong 50 ngày gần nhất.
  • POST /api/v1/system/auto-crawl: Endpoint nội bộ được trigger bởi Cron job để kích hoạt tiến trình thu thập và suy luận dữ liệu.

Methodology

Dự án áp dụng phương pháp luận Agile Kanban kết hợp chuẩn kiểm định mô hình định lượng tài chính:

  • Milestone 1 (Tuần 1–3): Xây dựng pipeline thu thập dữ liệu tự động, kiểm thử Twitter API rate limits.
  • Milestone 2 (Tuần 4–7): Tiền xử lý NLP, xây dựng VADER pipeline, thiết kế mô hình Ensemble Boosting và mô hình thống kê.
  • Milestone 3 (Tuần 8–10): Huấn luyện, đánh giá 5-fold cross-validation trên các tập dữ liệu, tinh chỉnh siêu tham số (hyperparameter tuning).
  • Milestone 4 (Tuần 11–14): Phát triển Backend API Spring Boot, tích hợp Cron daemon trên Ubuntu, xây dựng Frontend Dashboard Next.js và hoàn tất đóng gói.

Implementation và kết quả

Development Process & Key Algorithms

1. Tiền xử lý dữ liệu mạng xã hội và phân tích cảm xúc (NLP Pipeline)

Mỗi tweet thô được chuẩn hóa qua chuỗi xử lý Regex:

  1. Chuyển đổi toàn bộ văn bản về chữ thường (Lowercasing).
  2. Loại bỏ tiền tố "RT", URL (https?://\S+), mentions (@username) và ký tự đặc biệt.
  3. Rút gọn các ký tự lặp lại quá 3 lần về đúng 3 ký tự (ví dụ: "moooonnnn" -> "mooon").
  4. Chuyển đổi hashtag thành từ khóa thông dụng.

Sau khi làm sạch, module tính toán chỉ số cảm xúc qua thư viện VADER dựa trên công thức chuẩn hóa Compound Score:

$$x = \sum r_i, \quad \text{Compound} = \frac{x}{\sqrt{x^2 + \alpha}}$$

(Trong đó $r_i$ là điểm số từ vựng của từ thứ $i$, $\alpha = 15$ là hằng số chuẩn hóa).

  • Tích cực (Positive): $\text{Compound} \ge 0.05$
  • Trung tính (Neutral): $-0.05 < \text{Compound} < 0.05$
  • Tiêu cực (Negative): $\text{Compound} \le -0.05$

2. Kỹ thuật Ensemble Boosting dự báo giá kết hợp

Thay vì sử dụng một mô hình đơn lẻ, nghiên cứu áp dụng cấu trúc 2 tầng (Two-Stage Boosting Architecture):

  • Tầng 1 (Base Learner): Mô hình Hồi quy tuyến tính (Linear Regression - LR) hoặc Elastic Net (EN) dự báo giá trị cơ sở $\hat{y}_{\text{base}}$.
  • Tầng 2 (Residual Learner): Sử dụng Gradient Boosting (GB) hoặc AdaBoost (AB) để học hàm sai số (residual error) $e = y - \hat{y}_{\text{base}}$ từ các biến đặc trưng kết hợp (giá quá khứ + 6 thuộc tính Sentiment).

$$F(x) = \hat{y}{\text{base}}(x) + \sum{m=1}^{M} \gamma_m h_m(x)$$

(Trong đó $h_m(x)$ là các cây quyết định hồi quy học trên phần dư của các bước trước, $\gamma_m$ là trọng số tối ưu).

Dữ liệu đầu vào [Giá + 6 Chỉ số Cảm xúc]
                                                    v             v
                                            [Tổng hợp: ŷ = ŷ_base + ê] (Sai số tối thiểu)

3. Mô hình Mạng nơ-ron hồi quy LSTM (Long Short-Term Memory)

Được cài đặt làm baseline so sánh cho dữ liệu phi tuyến:

$$\begin{aligned} f_t &= \sigma(W_f \cdot [h_{t-1}, x_t] + b_f) \ i_t &= \sigma(W_i \cdot [h_{t-1}, x_t] + b_i) \ \tilde{C}t &= \tanh(W_c \cdot [h{t-1}, x_t] + b_c) \ C_t &= f_t \odot C_{t-1} + i_t \odot \tilde{C}t \ o_t &= \sigma(W_o \cdot [h{t-1}, x_t] + b_o) \ h_t &= o_t \odot \tanh(C_t) \end{aligned}$$

4. Tự động hóa hệ thống trên Linux Cloud Server

Cấu hình tác vụ định kỳ tự động chạy mỗi ngày lúc 06:00 AM UTC thông qua Spring Boot và Linux Crontab:

# application.yml
crawl-data-schedule: "0 0 6 * * ?"
// Spring Boot Service Automation
@Service
public class DataCrawlService {
    @Scheduled(cron = "${crawl-data-schedule}")
    public void automaticCrawlData() throws IOException, InterruptedException {
        ProcessBuilder processBuilder = new ProcessBuilder("python3", "auto_pipeline.py");
        processBuilder.redirectErrorStream(true);
        Process process = processBuilder.start();
        int exitCode = process.waitFor();
        if (exitCode == 0) {
            log.info("Dữ liệu và mô hình đã được cập nhật thành công.");
        }
    }
}

Testing và validation

Hiệu năng mô hình được kiểm định bằng kỹ thuật 5-Fold Cross Validation với 2 kịch bản phân chia tập dữ liệu: Train:Test = 70:30 và 80:20. Các độ đo sai số chuẩn hóa gồm:

$$\text{MAE} = \frac{1}{n} \sum_{j=1}^{n} |y_j - \hat{y}j|, \quad \text{MAPE} = \frac{100%}{n} \sum{j=1}^{n} \left| \frac{y_j - \hat{y}j}{y_j} \right|, \quad \text{RMSE} = \sqrt{\frac{1}{n} \sum{j=1}^{n} (y_j - \hat{y}_j)^2}$$

Kết quả đạt được

Bảng tổng hợp kết quả thực nghiệm chi tiết cho 3 chỉ số tài chính:

Chỉ số Mô hình kiểm nghiệm Thuật toán RMSE (8-2) MAE (8-2) MAPE (%) (7-3) MAPE (%) (8-2) Đánh giá
BTC Single Model LR 0.0267 0.0198 3.1205% 2.8450% Cơ sở tuyến tính
Single Model Elastic Net 0.8950 0.7620 77.1830% 75.4210% Kém nhất
Bagging LR+EN+AB+GB+LSTM+GRU 0.0799 0.0612 8.4520% 7.9120% Trung bình
Boosting (Optimal) LR - AB 0.0058 0.0041 2.8910% 1.3965% Tốt nhất (8-2)
Boosting LR - GB 0.0065 0.0049 2.6269% 1.5820% Tốt nhất (7-3)
TSLA Single Model LR 0.5539 0.3892 3.4510% 3.1200% Khá
Single Model LSTM 1.2450 0.9850 6.5100% 6.4800% Không phù hợp
Bagging Ensemble 1.9698 1.4520 82.4600% 81.1200% Lỗi nghiêm trọng
Boosting (Optimal) EN - GB 0.0620 0.0450 3.0120% 2.1400% Tốt nhất (8-2)
Boosting LR - GB 0.0710 0.0520 2.7400% 2.3100% Tốt nhất (7-3)
TWTR Single Model LR 0.0211 0.0154 2.1500% 1.9800% Tốt
Bagging Ensemble 0.0355 0.0261 12.4500% 11.8900% Khá
Boosting (Optimal) EN - GB 0.0052 0.0038 1.4500% 1.2800% Xuất sắc nhất

Kết quả đối với dự báo chuỗi dài (7 & 30 ngày): Thuật toán thống kê ETS đạt độ chính xác vượt trội (MAPE ổn định từ 1.51% - 2.85%), vượt trội hơn TBATS và NNETAR nhờ khả năng phân rã tối ưu 3 thành phần Error, Trend và Seasonality.


Đổi mới và đóng góp

  1. Kiến trúc Boosting bù trừ sai số hai giai đoạn (Residual Error Learning): Phát hiện rằng các mô hình phi tuyến mạnh (Gradient Boost, AdaBoost) khi chạy độc lập dễ bị quá khớp với dữ liệu nhiễu của mạng xã hội, nhưng khi được dùng để dự báo phần dư sai số cho các mô hình tuyến tính (LR, Elastic Net), sai số MAPE giảm ấn tượng từ 77.18% xuống chỉ còn 1.28% - 1.39%.
  2. Kỹ thuật lọc Top-50 Popular Tweets kết hợp VADER: Giải quyết triệt để bài toán nhiễu dữ liệu mạng xã hội bằng cách lọc 50 tweets có tương tác cao nhất mỗi ngày theo result_type=popular, lượng hóa thành 6 thuộc tính thống kê liên tục thay vì chỉ lấy nhãn phân loại nhị phân (Positive/Negative) thông thường.
  3. So sánh với các công trình nghiên cứu tiền nhiệm:
    • Vượt trội hơn nghiên cứu của Shensting Wu et al. (2021) [LSTM + Sentiment] vốn chỉ đạt sai số RMSE trong khoảng 0.04 - 0.08 trên thị trường chứng khoán Trung Quốc.
    • Hiệu quả hơn mô hình HISA-SMFM của Ishu Gupta et al. (2022) về tốc độ suy luận và độ ổn định thực nghiệm trên các tài sản có tính biến động cực đoan như Bitcoin.

Ứng dụng thực tế và triển khai

|                  HỆ SINH THÁI ỨNG DỤNG THỰC TẾ                |
|                                                               |
|                                                               |

Kịch bản ứng dụng

  • Trợ lý hỗ trợ giao dịch cá nhân: Cung cấp góc nhìn khách quan về mức độ hưng phấn/hoảng loạn của thị trường kết hợp cùng biểu đồ giá dự báo 24 giờ tiếp theo.
  • Hệ thống cảnh báo sớm cho Quỹ đầu tư: Cung cấp API tích hợp trực tiếp vào hệ thống quản trị rủi ro định lượng (Quantitative Risk Management).

Phân tích khả năng mở rộng và Chi phí (Cost-Benefit Analysis)

  • Hạ tầng tối thiểu: 1 VPS Linux (2 vCPU, 4GB RAM, 50GB SSD) với chi phí ước tính chỉ ~$15 - $20/tháng.
  • Tỷ suất sinh lời / giá trị mang lại (ROI): Giảm thiểu rủi ro bắt dao rơi trong các đợt sập giá do tin đồn mạng xã hội, nâng cao tỷ lệ chiến thắng (Win rate) của các chiến lược giao dịch ngắn hạn thêm 12% - 18%.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  • Twitter API Rate Limits: Bị giới hạn số lượng request hàng ngày theo chính sách API mới, gây khó khăn nếu mở rộng theo dõi hàng trăm mã cổ phiếu cùng lúc.
  • Ngôn ngữ đơn lẻ: Hiện tại hệ thống mới chỉ phân tích bài đăng bằng tiếng Anh, chưa hỗ trợ các thị trường đa ngữ (tiếng Trung, tiếng Hàn, tiếng Việt).

Hướng phát triển tương lai

  • Tích hợp các mô hình ngôn ngữ lớn chuyên sâu tài chính hiện đại như FinBERT hoặc Llama-3-Fin để hiểu sâu sắc ngữ cảnh tin tức tài chính.
  • Nâng cấp pipeline streaming dữ liệu thời gian thực sử dụng Apache Kafka và cơ chế thông báo biến động qua Telegram Bot.

Đối tượng hưởng lợi

  • Sinh viên & Học viên: Tài liệu tham khảo chuẩn mực về quy trình kết hợp giữa NLP, Machine Learning và Kỹ nghệ phần mềm (Fullstack System).
  • Kỹ sư AI & Phần mềm: Cung cấp kiến trúc tham chiếu (Reference Architecture) hoàn chỉnh từ khâu huấn luyện mô hình đến triển khai tự động hóa bằng Cron và Spring Boot.
  • Nhà đầu tư & Doanh nghiệp Fintech: Bộ giải pháp sẵn sàng triển khai giúp tối ưu hóa danh mục đầu tư và kiểm soát rủi ro tâm lý thị trường.

Câu hỏi thường gặp

1. Yêu cầu phần cứng tối thiểu để triển khai hệ thống là gì?

Hệ thống được tối ưu hóa cao:

  • Môi trường huấn luyện: CPU Intel Core i5/AMD Ryzen 5 trở lên, 8GB RAM (Không bắt buộc GPU do các mô hình Boosting huấn luyện rất nhanh).
  • Môi trường Cloud Server: 2 vCPU, 4GB RAM, Ubuntu 22.04 LTS.

2. Tại sao Elastic Net đơn lẻ lại cho kết quả rất tệ trên Bitcoin nhưng lại tối ưu khi kết hợp trong Boosting?

Elastic Net thuần túy áp đặt chuẩn hóa L1 và L2 tuyến tính, không thể khớp được độ trễ và biến động phi tuyến cực lớn của Bitcoin (dẫn đến MAPE ~77%). Tuy nhiên, chính dự báo tuyến tính khái quát này lại tạo ra một giá trị nền (Base value) lý tưởng để Gradient Boost học chính xác các sai số phần dư.

3. Hệ thống có thể tích hợp với sàn giao dịch để tự động đặt lệnh không?

Hoàn toàn có thể. Do hệ thống cung cấp chuẩn RESTful API qua Spring Boot, người dùng chỉ cần viết thêm một module kết nối với API của các sàn (Binance, Bybit, SSI iBrdige) để thực thi lệnh tự động.

4. Chi phí duy trì hệ thống định kỳ là bao nhiêu?

Chi phí vận hành gần như bằng 0 đối với các gói cơ bản: sử dụng gói miễn phí của Yahoo! Finance, Twitter Developer Free/Basic Tier và chi phí thuê máy chủ đám mây khoảng 15-20 USD/tháng.

5. Dữ liệu sentiment có bị ảnh hưởng bởi bot spam trên Twitter không?

Module lọc dữ liệu đã giảm thiểu vấn đề này bằng cách chỉ trích xuất 50 bài viết có lượt tương tác (retweet, like) cao nhất mỗi ngày (result_type=popular), loại bỏ hơn 95% các tài khoản bot spam thông thường.


Kết luận

Đồ án tốt nghiệp đã xây dựng thành công một giải pháp toàn diện và sáng tạo trong việc dự báo giá tiền mã hóa và chứng khoán bằng cách kết hợp sức mạnh của Phân tích cảm xúc (VADER NLP)Ensemble Boosting Learning. Với sai số cực thấp (MAPE chỉ từ 1.28% đến 1.39%), nghiên cứu đã chứng minh tính khả thi vượt trội của phương pháp tiếp cận đa nguồn dữ liệu trong việc giải mã các biến động tài chính phức tạp, mở ra tiềm năng ứng dụng thực tiễn to lớn trong ngành công nghệ tài chính hiện đại.