Trong thế giới tài chính định lượng, 波动率曲面 (Volatility Surface) là công cụ không thể thiếu để định giá quyền chọn và quản lý rủi ro. Bài viết này sẽ hướng dẫn bạn xây dựng volatility surface cho các cặp tiền mã hóa phổ biến từ đầu, sử dụng dữ liệu lịch sử từ Tardis và kỹ thuật nội suy với Scipy.
So sánh các phương án tiếp cận dữ liệu
Trước khi đi vào chi tiết kỹ thuật, hãy cùng xem bảng so sánh giữa các nhà cung cấp API phổ biến để bạn có cái nhìn tổng quan:
| Tiêu chí | HolySheep AI | API chính thức (OpenAI/Anthropic) | Dịch vụ Relay khác |
|---|---|---|---|
| Giá GPT-4o | $8/MTok | $15/MTok | $10-12/MTok |
| Giá Claude Sonnet | $15/MTok | $18/MTok | $15-16/MTok |
| Độ trễ trung bình | <50ms | 100-300ms | 80-200ms |
| Thanh toán | WeChat/Alipay, USD | Chỉ USD (thẻ quốc tế) | Hạn chế |
| Tín dụng miễn phí | Có khi đăng ký | Không | Ít khi |
| Tỷ giá | ¥1 = $1 (tiết kiệm 85%+) | Tỷ giá thị trường | Tùy nhà cung cấp |
| Use case cho Volatility Surface | ✅ Tối ưu cho backtesting ML | ✅ Đầy đủ nhưng đắt | ⚠️ Cần tối ưu chi phí |
波动率曲面 là gì và tại sao quan trọng?
波动率曲面 là biểu diễn 3 chiều của implied volatility (IV) theo:
- Strike Price (K) - Giá thực hiện
- Time to Maturity (T) - Thời gian đến hạn
- Moneyness - Mức độ trong/tiền
Trong thị trường tiền mã hóa, volatility surface có đặc điểm riêng:
- Volatility skew dốc hơn nhiều so với cổ phiếu truyền thống
- Hệ số gamma cao hơn do biến động lớn
- Dữ liệu options thường thưa thớt và không đồng nhất
Cài đặt môi trường và import thư viện
# Cài đặt các thư viện cần thiết
!pip install tardis-dev pandas numpy scipy matplotlib requests
Import các thư viện
import pandas as pd
import numpy as np
from scipy.interpolate import griddata, RBFInterpolator
from scipy.optimize import brentq
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import requests
import warnings
warnings.filterwarnings('ignore')
print("✅ Import thư viện thành công!")
print(f"NumPy: {np.__version__}")
print(f"SciPy: {__import__('scipy').__version__}")
Kết nối Tardis API lấy dữ liệu quyền chọn
Tardis cung cấp dữ liệu thị trường tiền mã hóa chất lượng cao với độ trễ thấp. Để lấy dữ liệu quyền chọn BTC từ các sàn như Deribit:
import requests
import pandas as pd
from datetime import datetime
Cấu hình Tardis API
TARDIS_API_KEY = "your_tardis_api_key" # Thay bằng API key của bạn
EXCHANGE = "deribit"
INSTRUMENT_TYPE = "option"
BASE_CURRENCY = "BTC"
Endpoint lấy dữ liệu quyền chọn
url = f"https://api.tardis.dev/v1/derivatives/{EXCHANGE}"
headers = {"Authorization": f"Bearer {TARDIS_API_KEY}"}
Lấy danh sách instruments
response = requests.get(url, headers=headers)
instruments = response.json()
Lọc các quyền chọn BTC
btc_options = [
inst for inst in instruments
if inst.get('base_currency') == BASE_CURRENCY
and inst.get('instrument_type') == INSTRUMENT_TYPE
]
print(f"📊 Tìm thấy {len(btc_options)} quyền chọn BTC trên Deribit")
print(f"Mẫu 5 instruments đầu tiên:")
for opt in btc_options[:5]:
print(f" - {opt['instrument_name']}: Strike ${opt.get('strike', 'N/A')}")