cs

지난번 포스트 까지는 주가와 수익률 그래프를 그릴 수 있었습니다. 

 

그럼 이제 슬슬 퀀트 투자를 위한 지표들을 하나씩 만들어봅시다!

 

기본적인 import와 함께 카카오의 데이터를 불러들이는 걸로 시작!

setup

# 기본 import 
import pandas as pd 
import numpy as np
import matplotlib.pyplot as plt
import FinanceDataReader as fdr

#카카오
df = fdr.DataReader("035720", "2021", "2022")
df.shape
df.tail()

가장 최근 날짜의 데이터까지 잘 불러들여왔습니다.

 

볼린저 밴드  (Bollinger Band)

이름에서 나오듯이 볼린저씨가 개발한 주식에서 가장 기초적인 기술투자방식 중 하나가 아닐까 싶습니다.

 

볼린저 밴드는 특정 기간 동안의 평균 가격을 일정 범위 이상 벗어날 확률이 매우 낮다는 통계학적 성질을 활용하여 만들어진 기술적 지표입니다.

 

볼린저밴드는 중간 밴드, 위쪽 밴드 그리고 아래쪽 밴드의 3개 밴드로 구성되는데, 중간 밴드는 추세의 중심 역할을 하며, 20일 이평선을 주로 활용합니다. 위쪽 밴드는 중간 밴드에 표준편차 2배를 더한 값으로 나타내며, 아래쪽 밴드는 중간 밴드에 표준편차 2배를 차감한 값으로 나타냅니다.

 

볼린저밴드의 위쪽 밴드와 아래쪽 밴드는 각각 저항선 또는 지지선으로 작용될 수 있으며, 주가나 지수의 움직임이 큰 시기에는 밴드의 폭이 넓어지고 움직임이 작은 시기에는 밴드의 폭이 좁아지는 특성이 있습니다! 

 

카카오의 볼린저밴드와 주가 그래프_by 알파스퀘어 캡쳐

 

그럼 이 기본적인 기술 지표 볼린저 만들어봅시다. 

 

이동평균선, 상단 하단 추가하기

rolling이라는 함수를 통해 손쉽게 이동평균을 만들 수 있습니다..!

복잡하게 수식을 필요로 하지 않았기 때문에 손쉽게 구할 수 있습니다.

 

지난번 포스트를 통해 아주아주 간단하게 이동평균선을 다루긴 했었으니 이전 포스트를 보시고 오셔도 좋을 듯 합니다.

#종가 이평선
## rolling 
df["MA20"] = df["Close"].rolling(20).mean()

MA20이라는 것에 이평선을 넣어줬다면 다음으로는 상단과 하단을 위해 표준편차를 구하고 그에 값에 2를 곱해주어야 하는데, 역시 생각보다 간단합니다. 

#20일 이평 +/- 표준편차 *2 

df["std"] =df["Close"].rolling(20).std()
df["Upper"] = df["MA20"] + (df["std"]*2)
df["Lower"] = df["MA20"] - (df["std"]*2)

df.tail()

테이블을 불러와 보면, 오른쪽에 차례대로 이평선, 표준편차, 상단과 하단의 값까지 생긴 것을 확인할 수 있습니다.!!

 

 

볼린저밴드 그래프 그리기

그럼 간단히 plot을 통해서 라인그래프를 그려보자.

df[["Upper", "Close", "MA20", "Lower"]].plot()

모든 지표에 대해서 plot을 그리지 않고 주가와 볼린저 상단 하단, 그리고 이평선까지만 그려준 모습입니다.

조금 더 디테일 하게 보이기 위해 상단과 하단의 사이 부분의 색을 채워주면 좀 더 디테일해 보입니다! 

df[["Upper", "Close", "MA20", "Lower"]].plot()
plt.fill_between(df.index, df.Lower, df.Upper, alpha = 0.2)

조금씩 반등한다..

 

 

 

+ Recent posts