| Phân tích cổ phiếu kiểu Quant bằng Python | Stooq, Sharpe, CAGR

Được viết bởi Đặng Trí Thanh vào ngày 08/08/2026 lúc 23:39 | 19 lượt xem

Mục lục

  1. Quant phân tích cổ phiếu là gì?
  2. Dữ liệu giá từ Stooq — không cần API key
  3. Lợi nhuận từng phiên và tổng lợi nhuận
  4. CAGR — tăng trưởng kép hàng năm
  5. Biến động và Sharpe ratio
  6. Max drawdown — đo “cơn đau” tối đa
  7. MA20 và MA50 — tín hiệu xu hướng
  8. Script Ngày 49 — từng khối code
  9. Fallback Binance khi Stooq lỗi
  10. Bài tập mở rộng và checklist
  11. Câu hỏi thường gặp (FAQ)
  12. Kết luận

1. Quant phân tích cổ phiếu là gì?

Quant phân tích cổ phiếu (quantitative stock analysis) là cách đánh giá một mã chứng khoán bằng số liệu lịch sửcông thức lặp lại được, thay vì chỉ dựa vào cảm tính hay tin tức ngắn hạn. Analyst quant thường hỏi: mã này tăng bao nhiêu phần trăm trong giai đoạn quan sát, biến động mạnh đến mức nào, lợi nhuận có “xứng đáng” với rủi ro không, và xu hướng gần đây đang nghiêng về phía nào.

Trong Ngày 49 của chuỗi Python 365 ngày trên kênh Hướng Nghiệp Dữ Liệu, bạn viết script Day 49_Phan tich co phieu Quant.py để tự động hóa một báo cáo mini giống tinh thần phòng nghiên cứu: tải giá, tính metric, in kết quả ra terminal. Đây là bài giáo dục — không phải khuyến nghị mua bán, không cam kết lợi nhuận.

Vì sao Python phù hợp?

Python có sẵn urllib, csv, statistics, math — đủ để làm pipeline fetch → transform → report mà không cần cài thêm gói. Sau này bạn có thể thêm pandas hoặc matplotlib, nhưng học thuần thư viện chuẩn giúp hiểu từng bước dữ liệu đi qua đâu.

Liên hệ Ngày 48

Ngày 48, bạn đã dùng MA20 cho bot paper trên crypto. Ngày 49 mở rộng sang cổ phiếu (mặc định aapl.us) và bổ sung bộ metric quant: CAGR, Sharpe, drawdown. Cùng một ý tưởng đường trung bình, nhưng báo cáo sâu hơn — đúng hướng định vị quant mà fanpage QuantTrade · Master Quantitative Trading giới thiệu song song khóa thực hành PyNhiQuaiBot.


2. Dữ liệu giá từ Stooq — không cần API key

Stooq cung cấp file CSV lịch sử giá qua URL dạng:

https://stooq.pl/q/d/l/?s={TICKER}&i=d

Trong script, TICKER = "aapl.us" — quy ước mã chữ thường, hậu tố .us cho Mỹ. Bạn có thể thử vnm.vn, tsla.us tùy mục tiêu học tập.

TICKER = "aapl.us"
URL = f"https://stooq.pl/q/d/l/?s={TICKER}&i=d"
HEADERS = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) PythonDay49"}

Hàm fetch_closes() gửi GET với urllib.request.Request, đọc text CSV, parse bằng csv.DictReader, lấy cột Close thành list số thực — phiên cũ ở đầu, mới nhất ở cuối.

User-Agent và timeout

Nhiều server từ chối request không có User-Agent. Script đặt header giống trình duyệt và timeout=15 để tránh treo vô hạn. Đây là thói quen professional khi scrape hoặc gọi API miễn phí.

Chất lượng dữ liệu

Trước khi tin metric, hãy in len(closes), giá đầu/cuối, và mắt thường so với biểu đồ công khai. Dữ liệu miễn phí có thể trễ, thiếu phiên, hoặc điều chỉnh cổ tức tách cổ phiếu — với mục đích học Python, điều quan trọng là quy trình, không phải con số tuyệt đối cho quyết định đầu tư thật.


3. Lợi nhuận từng phiên và tổng lợi nhuận

Daily return (lợi nhuận ngày) đo biến động tương đối giữa hai giá đóng cửa liên tiếp:

[
r_t = frac{P_t – P_{t-1}}{P_{t-1}}
]

Trong code:

def daily_returns(closes: list) -> list:
    return [(closes[i] - closes[i - 1]) / closes[i - 1]
            for i in range(1, len(closes))]

Tổng lợi nhuận trên cả mẫu: closes[-1] / closes[0] - 1. Đây là tỷ lệ tăng/giảm thuần túy từ điểm đầu đến cuối chuỗi bạn tải về — không tính phí, thuế, hay tái đầu tư cổ tức trừ khi nguồn dữ liệu đã điều chỉnh.

Hiểu returns là nền cho Sharpe và volatility. Nếu bạn nhầm log-return vs simple-return, các metric sau sẽ lệch — trong bài này ta dùng simple return cho dễ đọc.


4. CAGR — tăng trưởng kép hàng năm

CAGR (Compound Annual Growth Rate) trả lời: “Nếu tăng trưởng đều đặn mỗi năm, tỷ lệ năm là bao nhiêu để đi từ giá đầu đến giá cuối?” Script giả định 252 phiên giao dịch/năm (thị trường Mỹ):

def cagr(closes: list) -> float:
    n = len(closes) - 1
    if n == 0:
        return 0.0
    total_return = closes[-1] / closes[0]
    return total_return ** (252 / n) - 1

CAGR hữu ích khi so sánh hai mã trên cùng độ dài mẫu. Nó không dự báo tương lai — chỉ chuẩn hóa quá khứ. Kết hợp CAGR với drawdown để thấy “tăng đẹp” nhưng có thể đi kèm các đợt sụt sâu.


5. Biến động và Sharpe ratio

Annualized volatility ước lượng độ rung của lợi nhuận ngày, scale lên năm bằng (sqrt{252}):

def annual_volatility(returns: list) -> float:
    return statistics.stdev(returns) * math.sqrt(252)

Sharpe ratio (đơn giản, lãi suất phi rủi ro rf=0) so sánh lợi nhuận trung bình với độ lệch chuẩn, cũng annualized:

def sharpe_ratio(returns: list, rf: float = 0.0) -> float:
    mean_daily = statistics.mean(returns)
    std_daily = statistics.stdev(returns)
    if std_daily == 0:
        return 0.0
    return (mean_daily - rf / 252) / std_daily * math.sqrt(252)

Script gợi ý: Sharpe > 1 thường được xem là “khá tốt trong học thuật demo”, nhưng con số phụ thuộc giai đoạn, thị trường, và rf. Đừng dùng một ngưỡng magic để vào lệnh thật.

Metric Ý nghĩa trực quan Cảnh báo khi học
Volatility Giá “nhảy” mạnh hay êm Cao không có nghĩa xấu nếu bạn chấp nhận rủi ro
Sharpe Lợi nhuận / rủi ro (đơn giản) Mẫu ngắn → Sharpe không ổn định
Tổng return Tăng/giảm thuần Một đợt bull kéo dài làm đẹp số

6. Max drawdown — đo cơn đau tối đa

Maximum drawdown (MDD) là mức sụt lớn nhất từ đỉnh cục bộ xuống đáy trên đường giá:

def max_drawdown(closes: list) -> float:
    peak = closes[0]
    mdd = 0.0
    for p in closes:
        peak = max(peak, p)
        drawdown = (peak - p) / peak
        mdd = max(mdd, drawdown)
    return mdd

MDD trả lời câu hỏi tâm lý: “Tệ nhất tôi từng thấy portfolio giảm bao nhiêu % từ đỉnh?” Trong giáo dục bot và hedging (lộ trình PyNhiQuaiBot), hiểu drawdown giúp thiết kế cắt lỗ paper, giới hạn size, hoặc chiến lược hedge — vẫn trong môi trường demo, không hứa hẹn lợi nhuận.


7. MA20 và MA50 — tín hiệu xu hướng

SMA (simple moving average) là trung bình window giá gần nhất. Hàm sma trả list có None ở các vị trí chưa đủ dữ liệu:

def sma(values: list, window: int) -> list:
    out = [None] * len(values)
    for i in range(window - 1, len(values)):
        out[i] = sum(values[i - window + 1: i + 1]) / window
    return out

trend_signal so MA20MA50 tại phiên cuối: MA20 > MA50 → nhãn TĂNG, ngược lại GIẢM. Đây là quy tắc demo kinh điển (golden cross / death cross đơn giản hóa), không phải tín hiệu giao dịch được khuyến nghị.

Bạn đã gặp MA20 ở bot Ngày 48; Ngày 49 thêm MA50 để lọc nhiễu — xu hướng dài hơn. Khi viết bot sau này, hãy log cả hai giá trị MA để debug.


8. Script Ngày 49 — từng khối code

Chạy trong folder ngày:

python "Day 49_Phan tich co phieu Quant.py"

Hàm main() in báo cáo: số phiên, giá đầu/cuối, tổng lợi nhuận %, CAGR %, volatility %, Sharpe, MDD %, và dòng xu hướng MA. Toàn bộ file dùng thư viện chuẩn — phù hợp máy mới cài Python.

Pipeline tách rõ:

  1. fetch_closes — chỉ lo tải list giá.
  2. daily_returns, cagr, … — pure functions, dễ unit test.
  3. main — orchestration và in human-readable.

Refactor tip: sau khi chạy ổn, thử ghi kết quả ra report_49.json với json.dump để tái sử dụng trên web Docusaurus hoặc dashboard nội bộ.


9. Fallback Binance khi Stooq lỗi

Mạng hoặc Stooq đôi khi trả HTTP lỗi. Script bắt urllib.error.HTTPError và gọi fetch_closes_binance("BTCUSDT", limit=252) — API công khai /api/v3/klines, lấy giá đóng cửa nến 1d (index 4).

Điều này giữ bài học không gãy khi demo trên lớp hoặc quay video. Rõ ràng in dòng nhắc: đang dùng crypto làm ví dụ quant, không lẫn lộn với phân tích Apple ban đầu. Trong báo cáo thật, bạn không nên trộn ticker cổ phiếu với BTC — ở đây là fallback giáo dục.


10. Bài tập mở rộng và checklist

Bài tập 1: Đổi TICKER sang vnm.vn, chạy lại, ghi nhận Sharpe và MDD khác US tech thế nào.

Bài tập 2: Viết hàm summary_report(ticker) trả dict tất cả metric; in bảng markdown.

Bài tập 3: Lưu CSV Stooq vào data/stooq_aapl.csv một lần, viết load_closes_from_file để học offline.

Bài tập 4: Thêm tham số rf=0.04 (4%/năm) vào Sharpe — thảo luận Sharpe giảm ra sao.

Bài tập 5: Vẽ ASCII sparkline giá (optional) bằng vòng lặp, không cần matplotlib.

Checklist trước khi chia sẻ báo cáo: nguồn Stooq/Binance, ticker, số phiên, disclaimer không cam kết lợi nhuận, không gọi đây là “tín hiệu mua”.

Checklist code: timeout, User-Agent, try/except khi fetch, không hard-code đường dẫn tuyệt đối.

Hub Python Hedging nếu bạn muốn nối tiếp sang bot: https://www.huongnghiepdulieu.com/lap-trinh-python-nang-cao-hedging-tu-dong-hoa/


11. Câu hỏi thường gặp (FAQ)

Q1: Stooq có cần đăng ký không?
A: Không cho bài CSV daily này. Vẫn nên đọc điều khoản Stooq và không spam request.

Q2: Sharpe 1.5 có nghĩa nên mua không?
A: Không. Đó chỉ là số trên quá khứ trong demo. Không cam kết lợi nhuận tương lai.

Q3: 252 phiên có áp dụng cho VN không?
A: Thị trường VN ~250 phiên/năm. Để học, bạn có thể đổi hằng số trong cagr — ghi chú trong README.

Q4: MA20/50 báo TĂNG nhưng tôi thấy giá giảm tuần này?
A: MA là trễ so với giá. Tín hiệu mô tả xu hướng trung hạn, không dự báo một tuần.

Q5: Tại sao không dùng pandas?
A: Python 365 Ngày 49 cố ý dùng stdlib. Pandas sẽ xuất hiện ở các ngày sau — nắm công thức trước khi gọi .mean().

Q6: Liên quan PyNhiQuaiBot thế nào?
A: Cùng pipeline dữ liệu → metric → quyết định tự động. Khóa PyNhiQuaiBot đi sâu hedging và vận hành bot; QuantTrade là cách giới thiệu trên fanpage quant — một khóa, hai tên hiển thị.


12. Kết luận

Ngày 49 giúp bạn:

  • Tải lịch sử giá Stooq bằng Python thuần.
  • Tính returns, CAGR, volatility, Sharpe, max drawdown.
  • Đọc MA20/MA50 như tín hiệu xu hướng demo.
  • fallback Binance khi nguồn cổ phiếu lỗi.

Tiếp theo Ngày 50 đi sâu gọi API JSON (CoinGecko, jsonplaceholder) — kỹ năng then chốt trước khi ghép metric vào bot. Xem playlist: https://www.youtube.com/playlist?list=PLlvatcRiI_TLt4teIBQgtXBlGLAerk9Ce

📌 Theo dõi #Python365 — hẹn Ngày 50!


Cầu nối khóa PyNhiQuaiBot · QuantTrade

Cùng tư duy đọc dữ liệu → xử lý bằng Python → tự động hóa, khóa PyNhiQuaiBot (định vị quant trên fanpage: QuantTrade · Master Quantitative Trading) là lộ trình thực chiến bot hedging và tự động hóa nâng cao. Đăng ký tại hub: https://www.huongnghiepdulieu.com/lap-trinh-python-nang-cao-hedging-tu-dong-hoa/

QuantTrade là cách giới thiệu khóa PyNhiQuaiBot cho audience quant finance — cùng một khóa, không phải khóa riêng.


Xem thêm trên chuỗi Python 365

Theo dõi playlist Python 365 ngày trên kênh Hướng Nghiệp Dữ Liệu để học mỗi ngày một chủ đề: https://www.youtube.com/playlist?list=PLlvatcRiI_TLt4teIBQgtXBlGLAerk9Ce

Hashtag gợi ý: #Python365 · #HướngNghiệpDữ Liệu · #Python · #DataPass · #QuantTrade

Ghi chú thực hành (1)

Khi so sánh hai mã cổ phiếu bằng Sharpe trên Stooq, hãy dùng cùng số phiên và cùng hằng số 252. Một mã có Sharpe cao hơn trên 3 năm có thể có MDD sâu hơn — in cả hai cột trong bảng so sánh của bạn.

Ghi chú thực hành (2)

Thử tính rolling Sharpe 63 phiên (một quý) bằng vòng lặp slice returns[i-63:i] — bạn sẽ thấy metric nhảy theo regime thị trường, minh họa vì sao quant không tin một con số tĩnh.

Ghi chú thực hành (3)

Ghi log mỗi lần chạy script: timestamp, ticker, nguồn Stooq hay Binance fallback. Audit trail giúp bạn giải thích con số khi đồng nghiệp hỏi lại sau một tuần.

Ghi chú thực hành (4)

Đọc thêm về dividend-adjusted close trên tài liệu Stooq. Nếu CAGR lệch so với Yahoo Finance, thường do điều chỉnh cổ tức — ghi chú trong README tránh hiểu nhầm.

Ghi chú thực hành (5)

Kết hợp MA20/50 với volume (khi có cột Volume trong CSV) là bước nâng cao: chỉ tin tín hiệu TĂNG khi volume phiên breakout cao hơn trung bình 20 phiên — vẫn chỉ bài tập, không phải chiến lược live.

Ghi chú thực hành (6)

Export báo cáo Ngày 49 sang HTML đơn giản: một template f-string với bảng metric — luyện kỹ năng trình bày cho stakeholder nội bộ (không phải tư vấn đầu tư).

Ghi chú thực hành (7)

Nếu dạy lớp, in sẵn worksheet: học viên điền tay CAGR và đối chiếu Python — retrieval practice hiệu quả hơn chỉ xem video.

Ghi chú thực hành (8)

QuantTrade trên fanpage DNT Quant dùng cùng ngôn ngữ metric với Ngày 49; PyNhiQuaiBot đi tiếp sang vận hành bot hedging — hai tên, một lộ trình học.

Ghi chú thực hành (9)

Thử ticker msft.usgoog.us song song aapl.us — viết loop và sort theo Sharpe descending để thấy ranking thay đổi theo giai đoạn bear/bull.

Ghi chú thực hành (10)

Ghi chú thực hành (11)

Khi so sánh hai mã cổ phiếu bằng Sharpe trên Stooq, hãy dùng cùng số phiên và cùng hằng số 252. Một mã có Sharpe cao hơn trên 3 năm có thể có MDD sâu hơn — in cả hai cột trong bảng so sánh của bạn.

Ghi chú thực hành (12)

Thử tính rolling Sharpe 63 phiên (một quý) bằng vòng lặp slice returns[i-63:i] — bạn sẽ thấy metric nhảy theo regime thị trường, minh họa vì sao quant không tin một con số tĩnh.

Ghi chú thực hành (13)

Ghi log mỗi lần chạy script: timestamp, ticker, nguồn Stooq hay Binance fallback. Audit trail giúp bạn giải thích con số khi đồng nghiệp hỏi lại sau một tuần.

Ghi chú thực hành (14)

Đọc thêm về dividend-adjusted close trên tài liệu Stooq. Nếu CAGR lệch so với Yahoo Finance, thường do điều chỉnh cổ tức — ghi chú trong README tránh hiểu nhầm.

Ghi chú thực hành (15)

Kết hợp MA20/50 với volume (khi có cột Volume trong CSV) là bước nâng cao: chỉ tin tín hiệu TĂNG khi volume phiên breakout cao hơn trung bình 20 phiên — vẫn chỉ bài tập, không phải chiến lược live.

Ghi chú thực hành (16)

Export báo cáo Ngày 49 sang HTML đơn giản: một template f-string với bảng metric — luyện kỹ năng trình bày cho stakeholder nội bộ (không phải tư vấn đầu tư).

Ghi chú thực hành (17)

Nếu dạy lớp, in sẵn worksheet: học viên điền tay CAGR và đối chiếu Python — retrieval practice hiệu quả hơn chỉ xem video.

Ghi chú thực hành (18)

QuantTrade trên fanpage DNT Quant dùng cùng ngôn ngữ metric với Ngày 49; PyNhiQuaiBot đi tiếp sang vận hành bot hedging — hai tên, một lộ trình học.

Ghi chú thực hành (19)

Thử ticker msft.usgoog.us song song aapl.us — viết loop và sort theo Sharpe descending để thấy ranking thay đổi theo giai đoạn bear/bull.

Ghi chú thực hành (20)

Ghi chú thực hành (21)

Khi so sánh hai mã cổ phiếu bằng Sharpe trên Stooq, hãy dùng cùng số phiên và cùng hằng số 252. Một mã có Sharpe cao hơn trên 3 năm có thể có MDD sâu hơn — in cả hai cột trong bảng so sánh của bạn.

Ghi chú thực hành (22)

Thử tính rolling Sharpe 63 phiên (một quý) bằng vòng lặp slice returns[i-63:i] — bạn sẽ thấy metric nhảy theo regime thị trường, minh họa vì sao quant không tin một con số tĩnh.

Ghi chú thực hành (23)

Ghi log mỗi lần chạy script: timestamp, ticker, nguồn Stooq hay Binance fallback. Audit trail giúp bạn giải thích con số khi đồng nghiệp hỏi lại sau một tuần.

Ghi chú thực hành (24)

Đọc thêm về dividend-adjusted close trên tài liệu Stooq. Nếu CAGR lệch so với Yahoo Finance, thường do điều chỉnh cổ tức — ghi chú trong README tránh hiểu nhầm.

Ghi chú thực hành (25)

Kết hợp MA20/50 với volume (khi có cột Volume trong CSV) là bước nâng cao: chỉ tin tín hiệu TĂNG khi volume phiên breakout cao hơn trung bình 20 phiên — vẫn chỉ bài tập, không phải chiến lược live.

Ghi chú thực hành (26)

Export báo cáo Ngày 49 sang HTML đơn giản: một template f-string với bảng metric — luyện kỹ năng trình bày cho stakeholder nội bộ (không phải tư vấn đầu tư).

Ghi chú thực hành (27)

Nếu dạy lớp, in sẵn worksheet: học viên điền tay CAGR và đối chiếu Python — retrieval practice hiệu quả hơn chỉ xem video.

Ghi chú thực hành (28)

QuantTrade trên fanpage DNT Quant dùng cùng ngôn ngữ metric với Ngày 49; PyNhiQuaiBot đi tiếp sang vận hành bot hedging — hai tên, một lộ trình học.

Ghi chú thực hành (29)

Thử ticker msft.usgoog.us song song aapl.us — viết loop và sort theo Sharpe descending để thấy ranking thay đổi theo giai đoạn bear/bull.

Ghi chú thực hành (30)

Ghi chú thực hành (31)

Khi so sánh hai mã cổ phiếu bằng Sharpe trên Stooq, hãy dùng cùng số phiên và cùng hằng số 252. Một mã có Sharpe cao hơn trên 3 năm có thể có MDD sâu hơn — in cả hai cột trong bảng so sánh của bạn.

Ghi chú thực hành (32)

Thử tính rolling Sharpe 63 phiên (một quý) bằng vòng lặp slice returns[i-63:i] — bạn sẽ thấy metric nhảy theo regime thị trường, minh họa vì sao quant không tin một con số tĩnh.

Ghi chú thực hành (33)

Ghi log mỗi lần chạy script: timestamp, ticker, nguồn Stooq hay Binance fallback. Audit trail giúp bạn giải thích con số khi đồng nghiệp hỏi lại sau một tuần.

Ghi chú thực hành (34)

Đọc thêm về dividend-adjusted close trên tài liệu Stooq. Nếu CAGR lệch so với Yahoo Finance, thường do điều chỉnh cổ tức — ghi chú trong README tránh hiểu nhầm.

Ghi chú thực hành (35)

Kết hợp MA20/50 với volume (khi có cột Volume trong CSV) là bước nâng cao: chỉ tin tín hiệu TĂNG khi volume phiên breakout cao hơn trung bình 20 phiên — vẫn chỉ bài tập, không phải chiến lược live.

Ghi chú thực hành (36)

Export báo cáo Ngày 49 sang HTML đơn giản: một template f-string với bảng metric — luyện kỹ năng trình bày cho stakeholder nội bộ (không phải tư vấn đầu tư).

Ghi chú thực hành (37)

Nếu dạy lớp, in sẵn worksheet: học viên điền tay CAGR và đối chiếu Python — retrieval practice hiệu quả hơn chỉ xem video.

Ghi chú thực hành (38)

QuantTrade trên fanpage DNT Quant dùng cùng ngôn ngữ metric với Ngày 49; PyNhiQuaiBot đi tiếp sang vận hành bot hedging — hai tên, một lộ trình học.

Ghi chú thực hành (39)

Thử ticker msft.usgoog.us song song aapl.us — viết loop và sort theo Sharpe descending để thấy ranking thay đổi theo giai đoạn bear/bull.

Ghi chú thực hành (40)

Ghi chú thực hành (41)

Khi so sánh hai mã cổ phiếu bằng Sharpe trên Stooq, hãy dùng cùng số phiên và cùng hằng số 252. Một mã có Sharpe cao hơn trên 3 năm có thể có MDD sâu hơn — in cả hai cột trong bảng so sánh của bạn.

Ghi chú thực hành (42)

Thử tính rolling Sharpe 63 phiên (một quý) bằng vòng lặp slice returns[i-63:i] — bạn sẽ thấy metric nhảy theo regime thị trường, minh họa vì sao quant không tin một con số tĩnh.

Ghi chú thực hành (43)

Ghi log mỗi lần chạy script: timestamp, ticker, nguồn Stooq hay Binance fallback. Audit trail giúp bạn giải thích con số khi đồng nghiệp hỏi lại sau một tuần.

Ghi chú thực hành (44)

Đọc thêm về dividend-adjusted close trên tài liệu Stooq. Nếu CAGR lệch so với Yahoo Finance, thường do điều chỉnh cổ tức — ghi chú trong README tránh hiểu nhầm.

Ghi chú thực hành (45)

Kết hợp MA20/50 với volume (khi có cột Volume trong CSV) là bước nâng cao: chỉ tin tín hiệu TĂNG khi volume phiên breakout cao hơn trung bình 20 phiên — vẫn chỉ bài tập, không phải chiến lược live.

Ghi chú thực hành (46)

Export báo cáo Ngày 49 sang HTML đơn giản: một template f-string với bảng metric — luyện kỹ năng trình bày cho stakeholder nội bộ (không phải tư vấn đầu tư).

Ghi chú thực hành (47)

Nếu dạy lớp, in sẵn worksheet: học viên điền tay CAGR và đối chiếu Python — retrieval practice hiệu quả hơn chỉ xem video.

Ghi chú thực hành (48)

QuantTrade trên fanpage DNT Quant dùng cùng ngôn ngữ metric với Ngày 49; PyNhiQuaiBot đi tiếp sang vận hành bot hedging — hai tên, một lộ trình học.

Ghi chú thực hành (49)

Thử ticker msft.usgoog.us song song aapl.us — viết loop và sort theo Sharpe descending để thấy ranking thay đổi theo giai đoạn bear/bull.

Ghi chú thực hành (50)

Python 365 ngày · Ngày 49Xem Short trên YouTube · Playlist Python 365 Ngày
Python cơ bản HNDL · PyNhiQuaiBot · Python Hedging

Đặng Trí Thanh

Đặng Trí Thanh

Giám đốc Công nghệ · DNT Digital · Giảng viên HNDL
845 Bài viết
15.4k Người theo dõi
120k+ Lượt đọc

Đặng Trí Thanh — Founder & CTO · Hướng Nghiệp Dữ Liệu - DNT Digital. Chuyên đào tạo và triển khai thực chiến Python, MT5 và hệ thống bot auto trading / IB cho học viên và doanh nghiệp.