파이썬 포트폴리오 최적화를 위한 다양한 시장 수익률 모델링

서론

투자자들은 자신의 포트폴리오를 최적화하기 위해 다양한 방법을 사용합니다. 이 중 하나는 시장 수익률을 모델링하여 효율적인 자산 배분을 찾는 것입니다. 파이썬은 효과적인 시장 모델링을 위한 강력한 도구로 알려져 있습니다. 이번 블로그 포스트에서는 파이썬을 사용하여 시장 수익률을 모델링하는 다양한 방법을 살펴보겠습니다.

시장 수익률 모델링 방법

1. 기하 브라운 운동 모형(Geometric Brownian Motion)

기하 브라운 운동은 임의의 시간 간격에 따른 연속적인 확률 변수로 시장 수익률을 모델링합니다. 이 모델은 주식 시장에서 가장 일반적으로 사용되는 모델 중 하나입니다. 파이썬의 NumPy와 matplotlib 라이브러리를 사용하여 기하 브라운 운동 모형을 구현할 수 있습니다. 다음은 예시 코드입니다.

import numpy as np
import matplotlib.pyplot as plt

# Parameters
mu = 0.1  # 평균 수익률
sigma = 0.2  # 변동성
T = 1.0  # 시간 기간
N = 100  # 시간 단계 수
dt = T / N  # 시간 간격

# 초기값 설정
S0 = 100  # 초기 주가

# 랜덤 숫자 생성
np.random.seed(0)
z = np.random.standard_normal(N)

# 주가 경로 생성
S = np.zeros(N)
S[0] = S0
for t in range(1, N):
    S[t] = S[t-1] * np.exp((mu - 0.5 * sigma**2) * dt + sigma * np.sqrt(dt) * z[t])

# 그래프 플로팅
plt.plot(np.arange(0, T, dt), S)
plt.xlabel('Time')
plt.ylabel('Price')
plt.show()

2. 평균-분산 포트폴리오 모델(Mean-Variance Portfolio Model)

평균-분산 포트폴리오 모델은 포트폴리오의 평균 수익률과 분산을 최적화하여 효율적인 자산 배분을 찾는 모델입니다. 파이썬의 SciPy 라이브러리를 사용하여 평균-분산 포트폴리오 모델을 구현할 수 있습니다. 다음은 예시 코드입니다.

import numpy as np
from scipy.optimize import minimize

# 수익률과 공분산 행렬 설정
returns = np.array([0.1, 0.2, 0.15])  # 각 자산의 평균 수익률
covariance = np.array([[0.05, 0.03, 0.02],
                       [0.03, 0.06, 0.04],
                       [0.02, 0.04, 0.08]])  # 자산 간의 공분산

# 목적 함수 설정
def objective(weights):
    return np.dot(weights.T, np.dot(covariance, weights))

# 제약 조건 설정
def constraint(weights):
    return np.sum(weights) - 1

# 초기 추정치 설정
initial_guess = np.array([1/3, 1/3, 1/3])  # 동일 비중으로 시작

# 최적화
bounds = [(0, 1)] * len(returns)  # 각 가중치의 범위
constraints = [{'type': 'eq', 'fun': constraint}]
result = minimize(objective, initial_guess,
                  method='SLSQP', bounds=bounds, constraints=constraints)

# 최적 포트폴리오 결과 출력
weights = result.x
print("Optimal Weights:", weights)
print("Expected Return:", np.dot(weights, returns))
print("Portfolio Variance:", objective(weights))

결론

파이썬을 사용하여 시장 수익률을 모델링하는 다양한 방법을 살펴보았습니다. 기하 브라운 운동 모형을 사용하면 주식 시장의 랜덤 워크를 시뮬레이션 할 수 있으며, 평균-분산 포트폴리오 모델을 사용하면 효율적인 자산 배분을 찾을 수 있습니다. 이러한 모델링 기법은 투자자들이 포트폴리오를 최적화하는 데 도움을 줄 수 있습니다.

참고문헌:

#파이썬 #포트폴리오 #모델링