Марковская модель переключения для тактического распределения активов - PullRequest
0 голосов
/ 31 марта 2019

Итак, я хочу реализовать марковскую модель переключения для тактических блоков распределения активов и хотел бы протестировать некоторые торговые стратегии вне выборки.Например, допустим, у меня есть два состояния: высокая инфляция и низкая инфляция.В режиме с высоким уровнем инфляции я инвестирую в безрисковый актив, а в режим с низким уровнем инфляции я вкладываю в рыночный портфель.

Чтобы сделать это, мне нужна вероятность быть в каждом состоянии в t + 1 и чем распределить соответственно.Являются ли сглаженные предельные вероятности вероятностями на один шаг вперед, которые я мог бы использовать для тестирования вне выборки?Т.е. предположим, что я запускаю модель переключения до периода t, и сглаженная вероятность оказаться в режиме высокого уровня инфляции в t + 1 составляет 98% -> выделить для безрискового актива.

Правильно ли это истолковано или я что-то упустил?Если нет, то как тактическое упражнение по распределению активов может выглядеть как применение моделей переключения Маркова?

Ниже вы найдете мой Код для оценки режима инфляции.

import numpy as np
import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt
import requests
from io import BytesIO
import pandas_datareader as pdr
from pandas_datareader.data import DataReader
from datetime import datetime
import pandas_datareader.data as web
from openpyxl import load_workbook
from pandas import ExcelWriter
from pandas_datareader.famafrench import get_available_datasets

# CPI

# Get data from FRED
cpi = DataReader('CPIAUCSL', 'fred', start="1950-01-01", end="2016-10-01").resample("QS").mean()
cpi = np.log(cpi["CPIAUCSL"]).diff().iloc[1:]*100 # log difference
cpi = cpi.dropna()

res_cpi = sm.tsa.MarkovRegression(cpi, k_regimes=3,  switching_variance=False)
res_cpi = res_cpi.fit(maxiter=200)     
print(res_cpi.summary())
print(res_cpi.expected_durations)

# Plot the results
fig, axs = plt.subplots(2)
axs[0].plot(cpi)
axs[0].set(title='US Consumer Price Index (CPI)')
# axs[1].plot(res_cpi.smoothed_marginal_probabilities[0])
# axs[1].set(title='Low Inflation')
# axs[2].plot(res_cpi.smoothed_marginal_probabilities[1])
# axs[2].set(title='Medium Inflation')
axs[1].plot(res_cpi.smoothed_marginal_probabilities[2])
axs[1].set(title='Smoothed Probability High Inflation Regime')
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...