Quản lý rủi ro bằng mạng nơ-ron

Quản trị Rủi ro Định lượng với Python

Jamsheed Shorish

Computational Economist

Cập nhật danh mục theo thời gian thực

  • Quản lý rủi ro
    • Thước đo rủi ro đã xác định (VaR, CVaR)
    • Thước đo rủi ro được ước tính (tham số, lịch sử, Monte Carlo)
    • Danh mục tối ưu hóa (ví dụ: Lý thuyết Danh mục Hiện đại)
  • Thông tin thị trường mới => cập nhật tỷ trọng danh mục
    • Vấn đề: tối ưu danh mục tốn kém
    • Giải pháp: $\text{weights} = f(\text{prices})$
    • Tính $f$ theo thời gian thực
    • Chỉ cập nhật $f$ thỉnh thoảng
Quản trị Rủi ro Định lượng với Python

Mạng nơ-ron

  • Mạng nơ-ron: $\text{output} = f(\text{input})$
    • Nơ-ron: nút xử lý liên kết trong hàm
  • Phát triển ban đầu 1940–1950
  • Đầu những năm 2000: ứng dụng mạng nơ-ron cho “dữ liệu lớn”
    • Nhận dạng, xử lý ảnh
    • Dữ liệu tài chính
    • Dữ liệu công cụ tìm kiếm
  • Học sâu: mạng nơ-ron thuộc Máy học
    • 2015: Google phát hành thư viện học sâu mã nguồn mở TensorFlow cho Python
Quản trị Rủi ro Định lượng với Python

Cấu trúc mạng nơ-ron

  • Các tầng: nơ-ron xử lý kết nối
    • Tầng đầu vào

tầng đầu vào của mạng nơ-ron

Quản trị Rủi ro Định lượng với Python

Cấu trúc mạng nơ-ron

  • Cấu trúc mạng nơ-ron
    • Tầng đầu vào
    • Tầng ẩn

tầng ẩn của mạng nơ-ron

Quản trị Rủi ro Định lượng với Python

Cấu trúc mạng nơ-ron

  • Cấu trúc mạng nơ-ron
    • Tầng đầu vào
    • Tầng ẩn
    • Tầng đầu ra
  • Huấn luyện: học quan hệ giữa đầu vào và đầu ra

hình ảnh các tầng đầu vào, ẩn và đầu ra

Quản trị Rủi ro Định lượng với Python

Cấu trúc mạng nơ-ron

  • Cấu trúc mạng nơ-ron
    • Tầng đầu vào
    • Tầng ẩn
    • Tầng đầu ra
  • Huấn luyện: học quan hệ giữa đầu vào và đầu ra
    • Giá tài sản => Tầng đầu vào

hình ảnh giá tài sản đưa vào mạng nơ-ron

Quản trị Rủi ro Định lượng với Python

Cấu trúc mạng nơ-ron

  • Cấu trúc mạng nơ-ron
    • Tầng đầu vào
    • Tầng ẩn
    • Tầng đầu ra
  • Huấn luyện: học quan hệ giữa đầu vào và đầu ra
    • Giá tài sản => Tầng đầu vào
    • Xử lý qua tầng đầu vào + ẩn

hình ảnh các trọng số trong mạng nơ-ron

Quản trị Rủi ro Định lượng với Python

Cấu trúc mạng nơ-ron

  • Cấu trúc mạng nơ-ron
    • Tầng đầu vào
    • Tầng ẩn
    • Tầng đầu ra
  • Huấn luyện: học quan hệ giữa đầu vào và đầu ra
    • Giá tài sản => Tầng đầu vào
    • Xử lý qua tầng đầu vào + ẩn
    • Xử lý qua tầng ẩn + đầu ra

hình ảnh trọng số từ tầng ẩn đến đầu ra

Quản trị Rủi ro Định lượng với Python

Cấu trúc mạng nơ-ron

  • Cấu trúc mạng nơ-ron
    • Tầng đầu vào
    • Tầng ẩn
    • Tầng đầu ra
  • Huấn luyện: học quan hệ giữa đầu vào và đầu ra
    • Giá tài sản => Tầng đầu vào
    • Xử lý qua tầng đầu vào + ẩn
    • Xử lý qua tầng ẩn + đầu ra
    • Đầu ra => tỷ trọng danh mục

hình ảnh tầng đầu ra thể hiện tỷ trọng danh mục

Quản trị Rủi ro Định lượng với Python

Dùng mạng nơ-ron để tối ưu danh mục

  • Huấn luyện
    • So sánh đầu ra với tỷ trọng danh mục “tối ưu” đã có
    • Mục tiêu: giảm thiểu “sai số” giữa đầu ra và tỷ trọng
    • Sai số nhỏ => mạng được huấn luyện
  • Sử dụng
    • Đầu vào: giá tài sản mới, chưa thấy trước
    • Đầu ra: dự đoán tỷ trọng danh mục “tối ưu” cho giá mới
    • Tỷ trọng tối ưu = quản lý rủi ro
Quản trị Rủi ro Định lượng với Python

Tạo mạng nơ-ron trong Python

 

from tensorflow.keras.models import Sequential

from tensorflow.keras.layers import Dense
model = Sequential() model.add(Dense(10, input_dim=4, activation='sigmoid')) model.add(Dense(4))
Quản trị Rủi ro Định lượng với Python

Huấn luyện mạng trong Python

  • Giá tài sản lịch sử: ma trận training_input
  • Tỷ trọng danh mục lịch sử: vectơ training_output
  • Compile mô hình với:
    • hàm tối thiểu hóa sai số (“loss”)
    • thuật toán tối ưu (“optimizer”)
  • Fit mô hình với dữ liệu huấn luyện
    • epochs: số vòng lặp huấn luyện cập nhật tham số nội bộ
model.compile(loss='mean_squared_error', optimizer='rmsprop')

model.fit(training_input, training_output, epochs=100)
Quản trị Rủi ro Định lượng với Python

Quản lý rủi ro trong Python

  • Sử dụng: cung cấp dữ liệu giá tài sản mới (ví dụ: thời gian thực)
    • Vectơ mới new_asset_prices đưa vào tầng đầu vào
  • Đánh giá mạng bằng model.predict() trên giá mới
    • Kết quả: tỷ trọng danh mục predicted
  • Tích lũy đủ dữ liệu theo thời gian => tái huấn luyện mạng
    • Kiểm thử mạng trên dữ liệu quá khứ => backtesting
# new asset prices are in the vector new_asset_prices
predicted = model.predict(new_asset_prices)
Quản trị Rủi ro Định lượng với Python

Ayo berlatih!

Quản trị Rủi ro Định lượng với Python

Preparing Video For Download...