1

시나리오 : 다중 기간 시나리오에서 여러 제약 조건 (가중치, 위험, 위험 회피 등)을 사용하여 여러 포트폴리오 최적화를 수행하려고합니다.파이썬에서 다중 기간 포트폴리오 최적화

내가 이미 한 것 : cvxpy의 예에서 포트폴리오 구성의 자산에 대한 가중치 목록을 생성하는 비선형 2 차 수식 아래에서 포트폴리오를 최적화하는 방법을 찾았습니다. 내 문제는 월간 데이터가 15 년이지만 각기 다른 기간에 최적화하는 방법을 알지 못한다는 것입니다 (코드는 현재 양식에서 내 데이터의 전체 기간 동안 가장 좋은 구성을 산출합니다).

질문 1 : 다른 기간 동안 코드를 최적화 할 수 있습니까? 1, 3, 4, 6, 9, 12 개월 (이 경우 각각의 기간에 대해 다른 가중치를 산출 함)과 같은 경우 어떻게 그럴 수 있습니까?

질문 2 : 각 포트폴리오 구성의 자산 수를 제한 할 수 있습니까? 이를 달성하는 가장 좋은 방법은 무엇입니까? (현재 코드는 이들 모두를 사용하지만 애셋의 수가 제한되어있을 때 턴 오버 레벨을 제어하기 위해 테스트하고 싶습니다.)

코드 :

from cvxpy import * 
from cvxopt import * 
import pandas as pd 
import numpy as np 

prices = pd.DataFrame() 
logret = pd.DataFrame() 
normret = pd.DataFrame() 
returns = pd.DataFrame() 

prices = pd.read_excel(open('//folder//Dgms89//calculation v3.xlsx', 'rb'), sheetname='Prices Final') 
logret = pd.read_excel(open('//folder//Dgms89//calculation v3.xlsx', 'rb'), sheetname='Returns log') 
normret = pd.read_excel(open('//folder//Dgms89//calculation v3.xlsx', 'rb'), sheetname='Returns normal') 

returns = normret 

def calculate_portfolio(returns, selected_solver): 

    cov_mat = returns.cov() 
    Sigma = np.asarray(cov_mat.values) 
    w = Variable(len(cov_mat)) 
    gamma = quad_form(w, Sigma) 
    prob = Problem(Minimize(gamma), [sum_entries(w) == 1])  
    prob.solve(solver=selected_solver) 

    weights = [] 
    for weight in w.value: 
     weights.append(float(weight[0])) 

    return weights 

답변

1
  1. 표준 평균 - 분산 포트폴리오 모델은 정적 모델이다. 모델에 역학 관계가 없습니다. (시계열은 분산 - 공분산 행렬과 기대 수익을 추정하는 데에만 사용됩니다.) 어떤 관련 모델은 재조정 할시기 및 방법과 같은 질문에 대답 할 수 있습니다.
  2. 포트폴리오의 자산 수를 제한하면 카디널리티가 제한된 포트폴리오 문제가 발생합니다. 이것은 기본적으로 MIQP (Mixed-Integer 2 차 프로그래밍 문제)가됩니다.
+0

답변 해 주셔서 감사합니다. MATLAB에서 포트폴리오 최적화를위한 MIQP를 설명하는 방법에 대한 가이드를 찾았습니다. 그런 일이 파이썬에서 가능합니까? 이런 종류의 문제를 보여주는 문서가 있습니까? – DGMS89

+0

많은 솔버 (예 : Cplex, Gurobi)가 Python 환경에서 MIQP를 지원합니다. 문서가 있습니다. –