Cách sử dụng Chuỗi Markov để giành chiến thắng trong mọi giao dịch (Khung định lượng)

Cách sử dụng Chuỗi Markov để giành chiến thắng trong mọi giao dịch (Khung định lượng)

@RohOnChain
TIẾNG ANH4 ngày trước · 12 thg 5, 2026

AI features

3.3M
1.6K
242
49
5.5K

TL;DR

Hướng dẫn toàn diện này giải thích cách xây dựng các mô hình Chuỗi Markov cho giao dịch, bao gồm ma trận chuyển đổi, xác suất đa bước và Mô hình Markov ẩn để phát hiện các trạng thái thị trường ẩn.

Tôi sẽ phân tích cách các quỹ phòng hộ sử dụng Chuỗi Markov để tìm ra các giao dịch có xác suất thắng cao một cách nhất quán & chia sẻ khuôn khổ chính xác mà bạn có thể bắt đầu xây dựng ngay hôm nay.

Hãy đi thẳng vào vấn đề.

Đánh dấu bài viết này - Tôi là Roan, một lập trình viên backend chuyên về thiết kế hệ thống, thực thi theo phong cách HFT và hệ thống giao dịch định lượng. Công việc của tôi tập trung vào cách các thị trường dự đoán thực sự hoạt động dưới tải. Mọi góp ý, hợp tác có suy nghĩ, quan hệ đối tác đều có thể nhắn tin trực tiếp cho tôi.

Hầu hết các nhà giao dịch nhìn vào biểu đồ và thấy giá cả.

Các nhà định lượng nhìn vào cùng một biểu đồ và thấy một thứ hoàn toàn khác. Họ thấy một chuỗi các trạng thái. Tăng. Giảm. Đi ngang. Mỗi trạng thái mang xác suất riêng của nó về việc duy trì hoặc chuyển sang trạng thái tiếp theo. Mỗi sự chuyển đổi được chi phối bởi toán học đã được sử dụng để mô hình hóa mọi thứ từ vỡ nợ cho vay đến trình tự DNA cho đến thuật toán PageRank ban đầu của Google.

Khuôn khổ này được gọi là Chuỗi Markov. Và nó là một trong những công cụ linh hoạt nhất và ít được sử dụng nhất trong giao dịch có hệ thống.

Trong khi hầu hết các nhà giao dịch bán lẻ đang vẽ các đường hỗ trợ và theo dõi RSI, các nhóm nghiên cứu định lượng tại các công ty như Citadel và Two Sigma đang xây dựng các mô hình chuyển đổi chế độ (regime-switching) không chỉ hiểu thị trường đang ở đâu, mà còn hiểu nó có khả năng đi tiếp theo đâu dựa trên nơi nó đã từng đến. Toán học đằng sau những mô hình đó bắt đầu chính xác từ đây.

Tôi đã viết toàn bộ khuôn khổ triển khai mạng nơ-ron để xây dựng các tín hiệu giao dịch học máy. Bài viết đó là người bạn đồng hành hợp lý tiếp theo của bài viết này.

Đến cuối bài viết này, bạn sẽ hiểu chính xác Chuỗi Markov là gì và tại sao nó ánh xạ hành vi thị trường tốt hơn bất kỳ chỉ báo đơn lẻ nào, cách xây dựng một mô hình chuyển đổi trạng thái hoàn chỉnh từ dữ liệu thị trường thực, cách tính xác suất của bất kỳ trạng thái thị trường tương lai nào chỉ bằng phép nhân ma trận, toàn bộ quy trình triển khai từ dữ liệu giá thô đến tín hiệu giao dịch trực tiếp, và những sai lầm chính xác khiến hầu hết các mô hình Chuỗi Markov thất bại trên thị trường thực.

Lưu ý: Bài viết này cố tình dài. Mỗi phần đều xây dựng dựa trên phần trước đó. Nếu bạn nghiêm túc về việc thêm một lợi thế định lượng thực sự vào giao dịch của mình, hãy đọc từng chữ một. Nếu bạn đang tìm kiếm một lối tắt, bài viết này không dành cho bạn.

Phần 1: Tại sao Tính Độc lập Thất bại và Nơi Chuỗi Markov Bắt đầu

Trước khi bạn có thể xây dựng bất cứ điều gì với Chuỗi Markov, bạn cần hiểu vấn đề cơ bản mà chúng được thiết kế để giải quyết.

Hầu hết các mô hình xác suất cơ bản đều giả định tính độc lập. Mỗi sự kiện được coi như không có mối liên hệ với những gì xảy ra trước đó. Tung một con xúc xắc. Kết quả của lần tung thứ 100 không liên quan gì đến lần tung thứ 99. Mỗi lần tung hoàn toàn độc lập.

Thị trường không hoạt động theo cách này.

Hãy tưởng tượng bạn đang mô hình hóa một danh mục các khoản vay. Mỗi khoản vay tại bất kỳ thời điểm nào có thể ở một trong bốn trạng thái: hiện tại, chậm 30 đến 59 ngày, chậm 60 đến 89 ngày, hoặc chậm 90 ngày trở lên. Bạn muốn mô hình hóa cách danh mục này phát triển theo thời gian. Vì vậy, bạn thử cách tiếp cận đơn giản nhất. Bạn mô hình hóa từng tháng một cách độc lập. Bạn rút ra từ phân phối lịch sử của mỗi trạng thái.

Một tháng sau, mô hình của bạn nói rằng một số khoản vay hiện tại vào tháng trước hiện đã quá hạn 90 ngày.

Điều đó là bất khả thi về mặt toán học. Một khoản vay không thể nhảy từ trạng thái hiện tại sang quá hạn 90 ngày trong một khoảng thời gian 30 ngày duy nhất. Giả định độc lập ngây thơ đã tạo ra một mô hình vi phạm thực tế.

Đây chính xác là vấn đề mà Chuỗi Markov giải quyết. Thay vì giả định mỗi bước độc lập với mọi thứ xảy ra trước đó, Chuỗi Markov đưa ra sự phụ thuộc có điều kiện cục bộ. Trạng thái tiếp theo phụ thuộc vào trạng thái hiện tại. Không phải vào mọi thứ đã xảy ra mười bước trước. Chỉ phụ thuộc vào nơi bạn đang ở ngay bây giờ.

Về mặt hình thức, một chuỗi các biến ngẫu nhiên X₀, X₁, X₂, ... là một Chuỗi Markov nếu nó thỏa mãn tính chất Markov:

P(Xₙ₊₁ = s | X₀, X₁, ..., Xₙ) = P(Xₙ₊₁ = s | Xₙ)

Xác suất của trạng thái tiếp theo chỉ phụ thuộc vào trạng thái hiện tại, không phụ thuộc vào toàn bộ lịch sử. Tính chất đơn lẻ này là điều làm cho Chuỗi Markov vừa dễ xử lý vừa mạnh mẽ. Chúng nắm bắt cấu trúc phụ thuộc thiết yếu của một quy trình mà không yêu cầu bạn theo dõi toàn bộ lịch sử.

Đối với thị trường tài chính, điều này chuyển trực tiếp. Xác suất thị trường sẽ ở trong chế độ tăng vào tháng tới phụ thuộc vào việc nó đang ở chế độ tăng, giảm hay đi ngang trong tháng này. Không phụ thuộc vào những gì đã xảy ra hai năm trước. Trạng thái hiện tại mang tất cả thông tin liên quan bạn cần để dự báo trạng thái tiếp theo.

Roan - inline image

Đây không phải là một sự đơn giản hóa được thực hiện vì sự tiện lợi. Đó là một giả định có nguyên tắc toán học, khi được áp dụng đúng cách, tạo ra các mô hình chính xác hơn đáng kể so với tính độc lập ngây thơ trong khi vẫn có thể tính toán được.

Phần 2: Xây dựng Không gian Trạng thái và Ma trận Chuyển đổi

Bước thực tế đầu tiên trong việc xây dựng mô hình giao dịch Chuỗi Markov là xác định các trạng thái của bạn. Điều này quan trọng hơn hầu hết các học viên nhận ra.

Đối với thị trường tài chính, các định nghĩa trạng thái phổ biến bao gồm:

Chế độ biến động: Biến động thấp, biến động trung bình, biến động cao được xác định bởi các ngưỡng biến động thực tế trượt.

Chế độ xu hướng: Tăng, giảm, đi ngang được xác định bởi vị trí của giá so với các đường trung bình động hoặc bởi dấu hiệu và độ lớn của lợi nhuận gần đây.

Chế độ thanh khoản: Thanh khoản cao, thanh khoản thấp được xác định bởi chênh lệch giá mua-bán hoặc độ sâu sổ lệnh.

Chế độ tín dụng: Chấp nhận rủi ro, tránh rủi ro được xác định bởi chênh lệch tín dụng hoặc tương quan giữa các tài sản.

Đối với một triển khai bắt đầu cụ thể, mô hình chế độ thị trường ba trạng thái hoạt động tốt. Xác định:

Trạng thái 0 là Tăng: lợi nhuận 20 ngày ở trên một ngưỡng dương. Trạng thái 1 là Giảm: lợi nhuận 20 ngày ở dưới một ngưỡng âm. Trạng thái 2 là Đi ngang: mọi thứ ở giữa.

Yêu cầu chính là các trạng thái của bạn phải loại trừ lẫn nhau và bao phủ toàn bộ. Mọi quan sát phải rơi vào chính xác một trạng thái tại bất kỳ thời điểm nào. Không có khoảng trống và không có chồng chéo.

Khi bạn đã xác định các trạng thái của mình, bạn cần ước tính xác suất chuyển đổi giữa chúng. Đây là ma trận chuyển đổi. Mỗi mục P(i,j) đại diện cho xác suất di chuyển từ trạng thái i sang trạng thái j trong một bước thời gian.

Ma trận chuyển đổi cho mô hình ba trạng thái trông như thế này:

P = | P(0,0) P(0,1) P(0,2) | | P(1,0) P(1,1) P(1,2) | | P(2,0) P(2,1) P(2,2) |

Mỗi hàng phải có tổng chính xác bằng 1.0 vì từ bất kỳ trạng thái nhất định nào, hệ thống phải chuyển sang một trạng thái nào đó trong bước tiếp theo, bao gồm cả việc ở lại trạng thái cũ.

Công cụ ước tính khả năng tối đa cho mỗi xác suất chuyển đổi rất đơn giản một cách đẹp đẽ. Đếm số lần hệ thống chuyển từ trạng thái i sang trạng thái j. Chia cho tổng số lần chuyển đổi ra khỏi trạng thái i:

P̂(i,j) = Số lần(i → j) / Số lần(i → bất kỳ trạng thái nào)

Đây chính xác là cách bạn sẽ ước tính xác suất một cách trực quan. Nó cũng là những gì mà việc suy luận đầy đủ của công cụ ước tính khả năng tối đa tạo ra khi bạn tối đa hóa hàm log-likelihood cho dữ liệu Chuỗi Markov. Câu trả lời trực quan và câu trả lời chặt chẽ về mặt toán học là giống nhau.

Đây là triển khai Python hoàn chỉnh:

<code-segment id="0" lang="text">

import numpy as np

import pandas as pd

def estimate_transition_matrix(states, num_states=3):

"""

Estimate the transition matrix from a sequence of state labels.

Parameters:

states: array-like of state labels (0, 1, 2, ...)

num_states: number of distinct states

Returns:

P: num_states x num_states transition matrix

"""

P = np.zeros((num_states, num_states))

for t in range(len(states) - 1):

i = states[t]

j = states[t + 1]

P[i, j] += 1

Normalize rows to sum to 1

row_sums = P.sum(axis=1, keepdims=True)

Avoid division by zero for states that never occur

row_sums[row_sums == 0] = 1

P = P / row_sums

return P

def label_regimes(prices, window=20, bull_threshold=0.05, bear_threshold=-0.05):

"""

Label each day as Bull (0), Bear (1), or Sideways (2)

based on rolling window returns.

"""

returns = prices.pct_change(window)

states = pd.Series(index=prices.index, dtype=int)

states[returns >= bull_threshold] = 0 # Bull

states[returns <= bear_threshold] = 1 # Bear

states[(returns > bear_threshold) & (returns < bull_threshold)] = 2 # Sideways

return states.dropna().astype(int).values

Example usage

prices = pd.read_csv('price_data.csv', index_col=0, parse_dates=True)['Close']

states = label_regimes(prices)

P = estimate_transition_matrix(states)

</code-segment>

Ma trận chuyển đổi bạn tạo ra từ quy trình này là bản đồ thị trường của bạn. Mỗi mục nhập cho bạn biết xác suất di chuyển giữa hai chế độ cụ thể. Nó là nền tảng của mọi thứ tiếp theo.

Phần 3: Tính toán Xác suất Chuyển đổi Nhiều Bước

Đây là nơi Chuỗi Markov trở nên thực sự mạnh mẽ như một công cụ giao dịch.

Bây giờ bạn đã có ma trận chuyển đổi một bước P. Nhưng những gì bạn thực sự muốn biết với tư cách là một nhà giao dịch không chỉ là điều gì xảy ra vào tháng tới. Bạn muốn biết thị trường có khả năng sẽ như thế nào trong ba tháng, sáu tháng, mười hai tháng tới. Bạn muốn biết xác suất bắt đầu ở chế độ tăng hôm nay và kết thúc ở chế độ giảm sau mười hai lần chuyển đổi.

Đây là lúc phương trình Chapman-Kolmogorov xuất hiện. Nó phát biểu rằng xác suất chuyển đổi n bước từ trạng thái i sang trạng thái j là mục (i,j) của ma trận P lũy thừa n:

P^(n)(i,j) = [Pⁿ]ᵢⱼ

Chỉ có vậy. Để tính xác suất chuyển đổi từ bất kỳ trạng thái nào sang bất kỳ trạng thái nào khác trong n bước, bạn chỉ cần nhân ma trận chuyển đổi với chính nó n lần và đọc mục nhập tương ứng.

Đây là một kết quả cực kỳ thanh lịch. Tất cả sự phức tạp toán học của việc tính toán các đường đi qua một không gian trạng thái qua nhiều bước được rút gọn thành một lũy thừa ma trận duy nhất.

Điều này cho bạn biết với tư cách là một nhà giao dịch là cụ thể và có thể hành động. Nếu bạn hiện đang ở trong chế độ tăng, giờ đây bạn có thể định lượng xác suất bạn sẽ vẫn ở trong chế độ tăng trong 12 tháng tới so với việc đã chuyển sang chế độ giảm hoặc đi ngang. Xác suất đó thông báo cho việc xác định quy mô vị thế, quyết định phòng ngừa rủi ro và phân bổ chiến lược của bạn.

Có một đầu ra quan trọng khác từ khuôn khổ này: phân phối dừng. Khi n trở nên rất lớn, phân phối trên các trạng thái hội tụ về một vectơ cố định π bất kể trạng thái bắt đầu:

π = π × P

Phân phối dừng cho bạn biết tỷ lệ thời gian dài hạn thị trường dành cho mỗi chế độ. Trong thực tế, bạn giải cho π bằng cách sử dụng:

<code-segment id="1" lang="text">

def stationary_distribution(P):

"""

Compute the stationary distribution of a transition matrix.

Solves π = πP subject to sum(π) = 1.

"""

n = P.shape[0]

(P.T - I)π = 0, with constraint sum(π) = 1

A = np.vstack([P.T - np.eye(n), np.ones(n)])

b = np.zeros(n + 1)

b[-1] = 1

π, _, _, _ = np.linalg.lstsq(A, b, rcond=None)

return π

</code-segment>

Phân phối dừng là đường cơ sở dài hạn của bạn. Bất kỳ chiến lược nào đặt cược nặng vào một chế độ mà phân phối dừng cho bạn biết là hiếm đều đang chấp nhận rủi ro đuôi đáng kể. Biết tỷ lệ chế độ dài hạn là điều cần thiết cho việc thiết kế chiến lược.

Roan - inline image

Phần 4: Từ Mô hình Chế độ đến Tín hiệu Giao dịch

Có một mô hình chế độ không phải là một chiến lược giao dịch. Chuyển đổi nó thành một chiến lược đòi hỏi phải kết nối xác suất chế độ với các quyết định vị thế cụ thể.

Hiểu biết cốt lõi là thế này: Chuỗi Markov cung cấp cho bạn một phân phối xác suất trên các trạng thái tương lai tại mỗi thời điểm. Tín hiệu giao dịch của bạn là một hàm của phân phối đó.

Cách tiếp cận đơn giản nhất là phân bổ dựa trên chế độ trực tiếp. Khi mô hình nói rằng bạn đang ở trong chế độ tăng, hãy mua. Khi giảm, hãy bán khống hoặc đứng ngoài. Khi đi ngang, hãy giảm quy mô vị thế.

Một cách tiếp cận tinh vi hơn sử dụng vectơ xác suất đầy đủ làm đầu vào cho việc xác định quy mô vị thế. Vectơ phân phối trạng thái hiện tại π_t đại diện cho phân bổ xác suất của bạn trên các chế độ tại thời điểm t. Bạn có thể xây dựng một vị thế tỷ lệ thuận với mức độ tin cậy của bạn vào mỗi chế độ:

<code-segment id="2" lang="text">

def markov_signal(P, current_state, n_steps=1):

"""

Generate a trading signal from the Markov Chain model.

Returns a vector of probabilities for each state n_steps ahead.

"""

P_n = np.linalg.matrix_power(P, n_steps)

return P_n[current_state]

def position_from_signal(prob_vector):

"""

Convert probability vector to position size.

Simple: Bull prob - Bear prob, scaled by confidence.

"""

bull_prob = prob_vector[0]

bear_prob = prob_vector[1]

return bull_prob - bear_prob # Range: [-1, 1]

Walk-forward backtest

def walk_forward_backtest(prices, window=252, re_estimate_freq=63):

"""

Walk-forward backtest of the Markov Chain trading strategy.

Re-estimates the transition matrix every re_estimate_freq days.

"""

states = label_regimes(prices)

positions = []

for t in range(window, len(prices), re_estimate_freq):

Estimate transition matrix from recent data

recent_states = states[t - window:t]

P = estimate_transition_matrix(recent_states)

Generate signals for the next re_estimate_freq days

for i in range(re_estimate_freq):

if t + i < len(states):

current = states[t + i]

prob = markov_signal(P, current)

pos = position_from_signal(prob)

positions.append(pos)

return pd.Series(positions, index=prices.index[window:window + len(positions)])

</code-segment>

Cấu trúc walk-forward trong backtest ở trên là rất quan trọng. Bạn ước tính lại ma trận chuyển đổi tại mỗi bước chỉ sử dụng dữ liệu lịch sử có sẵn tại thời điểm đó. Bạn không bao giờ sử dụng thông tin tương lai để ước tính xác suất trong quá khứ. Đây là sự khác biệt giữa một backtest thực tế và một backtest chắc chắn sẽ gây thất vọng trong giao dịch trực tiếp.

Roan - inline image

Phần 5: Quy trình Triển khai Hoàn chỉnh và Các Hạn chế Quan trọng

Phần này tập hợp mọi thứ thành một hệ thống giao dịch Chuỗi Markov sẵn sàng cho sản xuất và giải quyết các giả định sẽ quyết định liệu mô hình của bạn có sống sót khi tiếp xúc với thị trường thực hay không.

Triển khai hệ thống hoàn chỉnh:

<code-segment id="3" lang="text">

import numpy as np

import pandas as pd

class MarkovTradingSystem:

def __init__(self, window=252, re_estimate_freq=63,

bull_threshold=0.05, bear_threshold=-0.05):

self.window = window

self.re_estimate_freq = re_estimate_freq

self.bull_threshold = bull_threshold

self.bear_threshold = bear_threshold

self.P = None

self.states = None

def fit(self, prices):

"""Fit the model to historical price data."""

self.states = self._label_regimes(prices)

self.P = estimate_transition_matrix(self.states[-self.window:])

return self

def predict(self, n_steps=1):

"""Predict state probabilities n_steps ahead."""

if self.P is None:

raise ValueError("Model must be fitted before prediction.")

current_state = self.states[-1]

P_n = np.linalg.matrix_power(self.P, n_steps)

return P_n[current_state]

def generate_signal(self):

"""Generate current trading signal."""

prob = self.predict(n_steps=1)

return position_from_signal(prob)

def _label_regimes(self, prices):

returns = prices.pct_change(self.window)

states = pd.Series(index=prices.index, dtype=int)

states[returns >= self.bull_threshold] = 0

states[returns <= self.bear_threshold] = 1

states[(returns > self.bear_threshold) &

(returns < self.bull_threshold)] = 2

return states.dropna().astype(int).values

Usage

system = MarkovTradingSystem()

system.fit(prices)

signal = system.generate_signal()

</code-segment>

Ba giả định bạn phải hiểu trước khi triển khai:

Đầu tiên là chính tính chất Markov. Mô hình giả định rằng trạng thái tiếp theo chỉ phụ thuộc vào trạng thái hiện tại, không phụ thuộc vào lịch sử dài hơn. Trong thực tế, thị trường đôi khi thể hiện các phụ thuộc phạm vi dài hơn. Một xu hướng đã kéo dài sáu tháng có thể có xác suất chuyển đổi khác với một xu hướng mới bắt đầu. Bạn có thể giải quyết một phần điều này bằng cách mở rộng không gian trạng thái của mình để bao gồm thông tin thời gian, mặc dù điều này làm tăng độ phức tạp đáng kể.

Thứ hai là tính đồng nhất thời gian. Mô hình giả định xác suất chuyển đổi là không đổi theo thời gian. Chúng không phải vậy. Xác suất một chế độ tăng chuyển sang giảm rất khác nhau vào năm 2008 so với năm 2021. Biện pháp giảm thiểu tiêu chuẩn là ước tính lại cửa sổ trượt, mà bạn đã thấy trong backtest walk-forward ở trên. Cửa sổ ngắn hơn thích ứng nhanh hơn nhưng tạo ra các ước tính nhiễu hơn. Cửa sổ dài hơn tạo ra các ước tính ổn định hơn nhưng chậm hơn so với các thay đổi chế độ.

Thứ ba là đủ dữ liệu để ước tính đáng tin cậy. Công cụ ước tính khả năng tối đa hội tụ về xác suất chuyển đổi thực khi bạn quan sát nhiều chuyển đổi hơn. Với ít quan sát, đặc biệt là đối với các chuyển đổi hiếm, các ước tính của bạn sẽ bị nhiễu và không đáng tin cậy. Luôn kiểm tra rằng mọi ô trong ma trận chuyển đổi của bạn đã được ước tính từ ít nhất 20 đến 30 lần chuyển đổi được quan sát. Nếu không, hãy xem xét hợp nhất các trạng thái hoặc mở rộng lịch sử dữ liệu của bạn.

Phần 6: Mô hình Markov Ẩn - Đưa Khuôn khổ Đi Xa Hơn

Mọi giả định trong mô hình cho đến nay đều có một điểm chung. Bạn giả định rằng bạn có thể nhìn thấy chế độ.

Bạn đã gắn nhãn mỗi ngày là Tăng, Giảm hoặc Đi ngang bằng cách sử dụng lợi nhuận trượt. Nhưng chế độ không bao giờ có thể quan sát trực tiếp. Bạn đã thiết kế ngược nó từ giá. Điều đó không giống nhau. Một chế độ giảm chưa xuất hiện trong giá vì định vị thể chế đang âm thầm thay đổi bên dưới bề mặt là hoàn toàn vô hình đối với các nhãn trạng thái của bạn.

Đây là hạn chế cốt lõi của Chuỗi Markov có thể quan sát. Mô hình Markov Ẩn (HMM) khắc phục điều đó.

Roan - inline image

Trong HMM, chế độ thực sự là một trạng thái ẩn mà bạn không thể quan sát. Những gì bạn có thể quan sát là chuỗi lợi nhuận. Mỗi trạng thái ẩn tạo ra lợi nhuận từ phân phối riêng của nó. Chế độ tăng tạo ra lợi nhuận với giá trị trung bình dương và phương sai thấp. Chế độ giảm tạo ra lợi nhuận với giá trị trung bình âm và phương sai cao. Mô hình học cả chuyển đổi chế độ và phân phối lợi nhuận cùng một lúc, chỉ từ dữ liệu giá, mà không bao giờ bạn phải gắn nhãn một ngày nào bằng tay.

Có hai thuật toán làm cho điều này hoạt động.

Đầu tiên là Baum-Welch. Đây là thuật toán ước tính tất cả các tham số mô hình từ chuỗi lợi nhuận có thể quan sát. Bạn cung cấp lợi nhuận. Nó học ma trận chuyển đổi, phân phối lợi nhuận cho mỗi chế độ và xác suất bắt đầu, tất cả mà không cần dữ liệu được gắn nhãn. Nó chạy tiến qua chuỗi tính toán xác suất, sau đó chạy lùi để tinh chỉnh chúng, lặp lại cho đến khi hội tụ.

Thứ hai là Viterbi. Khi bạn đã có một mô hình phù hợp, Viterbi giải mã chuỗi chế độ ẩn có khả năng nhất đã tạo ra lợi nhuận quan sát được của bạn. Nó không cung cấp cho bạn xác suất mềm. Nó cung cấp cho bạn một đường đi duy nhất tốt nhất qua không gian trạng thái ẩn.

Việc tạo tín hiệu giống hệt với Phần 4. Tại mỗi bước, bạn tính xác suất ở trong mỗi chế độ ngay bây giờ. Bạn nhân vectơ đó với ma trận chuyển đổi để có được dự báo một bước tiếp theo. Xác suất tăng trừ xác suất giảm cho bạn vị thế của bạn.

Hai điều cần ghi nhớ trước khi bạn triển khai điều này.

Baum-Welch tìm ra một cực đại cục bộ, không phải cực đại toàn cục. Luôn chạy nó từ nhiều điểm khởi tạo ngẫu nhiên và giữ mô hình có log likelihood cao nhất. Việc khởi tạo đơn lẻ mặc định thường xuyên tạo ra các phân bổ chế độ dưới mức tối ưu.

Các biến phát xạ bạn chọn quan trọng hơn bất kỳ quyết định thiết kế nào khác. Chỉ riêng lợi nhuận mang thông tin hạn chế về chế độ kinh tế thực sự. Lợi nhuận kết hợp với biến động thực tế, chênh lệch tín dụng và cấu trúc kỳ hạn VIX cung cấp cho mô hình một tín hiệu phong phú hơn nhiều. Sự lựa chọn về những gì cung cấp làm quan sát là nơi kiến thức lĩnh vực kết hợp với toán học.

Chuỗi Markov có thể quan sát đã cho bạn một bản đồ chế độ. Mô hình Markov Ẩn xây dựng bản đồ đó trong thời gian thực từ các tín hiệu nhiễu, mà không yêu cầu một điểm dữ liệu được gắn nhãn thủ công nào. Đó là hướng mà các mô hình chuyển đổi chế độ của các tổ chức đã đi. Bây giờ bạn đã có khuôn khổ hoàn chỉnh để xây dựng một mô hình.

Tổng kết

Chuỗi Markov không dự đoán tương lai. Điều chúng làm là một điều hữu ích hơn. Chúng định lượng xác suất của mọi trạng thái tương lai có thể xảy ra dựa trên trạng thái hiện tại. Chúng cung cấp cho bạn một bản đồ toán học về các chế độ thị trường và khả năng chuyển đổi giữa chúng.

Khuôn khổ này hoàn toàn có thể triển khai trong một ngày cuối tuần. Ma trận chuyển đổi được ước tính từ dữ liệu lịch sử trong một vài dòng Python. Phương trình Chapman-Kolmogorov cung cấp cho bạn các dự báo n bước thông qua một lũy thừa ma trận duy nhất. Phân phối dừng cho bạn biết đường cơ sở dài hạn. Và backtest walk-forward cho bạn biết liệu mô hình của bạn có sức mạnh dự đoán thực sự hay chỉ đang khớp nhiễu.

Các giả định là có thật và chúng quan trọng. Tính đồng nhất thời gian bị vi phạm. Tính chất Markov là một sự xấp xỉ. Sai số ước tính luôn hiện hữu. Nhưng như một mô hình bước đầu và như một khối xây dựng cho các phần mở rộng Mô hình Markov Ẩn tinh vi hơn, khuôn khổ này đã được triển khai trong sản xuất tại các công ty thực sự và đã tạo ra lợi thế thực sự.

Bây giờ bạn đã có triển khai hoàn chỉnh. Mã nguồn có trong bài viết này. Toán học được giải thích từ các nguyên tắc đầu tiên. Các hạn chế quan trọng được ghi lại để bạn biết chính xác nơi mô hình có thể thất bại và cách giảm thiểu những thất bại đó.

Đây là câu hỏi tôi muốn bạn suy ngẫm.

Mô hình Chuỗi Markov xác định các chế độ dựa trên hành vi giá có thể quan sát. Nhưng các chế độ thị trường quan trọng nhất, những chế độ mà các nhà giao dịch tổ chức thực sự giao dịch xung quanh, thường được thúc đẩy bởi các yếu tố tiềm ẩn như điều kiện tín dụng, lập trường chính sách tiền tệ và khẩu vị rủi ro mà không thể nhìn thấy trực tiếp trong dữ liệu giá một mình. Nếu bạn đang thiết kế một Mô hình Markov Ẩn cho thị trường, bạn sẽ sử dụng những tín hiệu có thể quan sát nào làm biến phát xạ của mình và tại sao?

Hãy để lại câu trả lời của bạn trong phần bình luận.

Không có câu trả lời sai nhưng có những câu trả lời rất tiết lộ.

More patterns to decode

Recent viral articles

Explore more viral articles

Được xây dựng cho nhà sáng tạo.

Tìm ý tưởng từ các bài viết viral trên 𝕏, giải mã vì sao chúng hiệu quả và biến pattern đó thành góc nội dung tiếp theo của bạn.