파이썬 증권 데이터 분석 - 6.트레이딩 전략과 구현 (6.1~6.4)

iamchaeeon·2024년 11월 11일
0

6.1 현대 포트폴리오 이론

💸 평균-분산 최적화
예상 수익률과 리스크의 상관 관계를 활용해 포트폴리오 최적화하는 기법.

6.1.1 수익률의 표준편차

💸
자산 가격이 평균값에서 벗어나는 정도, 즉 리스크를 측정하는 방법이다.
주식 시장에서의 리스크는 흔히 주가의 변동성을 의미한다.

  • 정규분포 그래프에서 예상 수익률은 평균값인 μ\mu로 나타내고, 리스크는 표준편차인 σ\sigma로 나타낸다.
  • 어떤 값이 평균에서 떨어진 정도 == 편차
  • (편차^2)의 합의 평균 == 분산
  • 분산의 제곱근 == 표준편차

표준편차![](https://velog.velcdn.com/images/yeochaeeon/post/d852af6d-a1a1-44e9-8d1a-09bc3d632330/image.png)

6.1.2 효율적 투자선

💸
투자자가 인내할 수 있는 리스크 수준에서 최상의 기대 수익률을 제공하는 포트폴리오들의 집합.

효율적_투자선

  • X 축은 리스크 ( 표준편차 )
  • Y축은 예상 수익률 ( 평균 )
  • 빨간 점은 개별 포트폴리오
  • 효율적 투자선 위에 위치한 포트폴리오는 주어진 리스크에서 최대 수익을 낸다.
  • 효율적 투자선 위에 위치한 포트폴리오에 따라 자산을 배분하는 것이 현명하다.

시총 상위 4 종목으로 효율적 투자선 구하기

먼저 일간 수익률, 연간 수익률, 일간 리스크, 연간 리스크를 구해야한다.

daily_ret = df.pct_change() 
annual_ret = daily_ret.mean() * 252
daily_cov = daily_ret.cov() 
annual_cov = daily_cov * 252
  1. daily_ret 은 일간 수익률이다
  2. annual_ret : daily_ret의 평균에 1년 평균 개장일을 곱하여 연간수익률을 계산한다.
  3. daily_cov : 일간 변동률의 공분산으로 일간 리스크값을 구한다.
  4. annual_cov : 일간 공분산에 개장일을 곱해 연간 공분산을 구한다

몬테카를로 시뮬레이션

  1. 4종목으로 구성된 포트폴리오를 20,000개 만든다.
  2. 각각의 포트폴리오별로 수익률, 리스크, 종목비중을 데이터 프레임으로 만들어보자.
  3. 만든 df를 산점도로 출력해 효율적 투자선을 확인해보자.

6.2 샤프 지수와 포트폴리오 최적화

6.2.1 샤프지수

💸
측정된 위험 단위당 수익률을 계산함.

포트폴리오 예상 수익률무위험률수익률의 표준편차\frac{포트폴리오\ 예상\ 수익률 - 무위험률}{수익률의\ 표준편차}

6.2.2 포트폴리오 최적화

  • Sharpe 지수를 이용하여 측정된 위험 단위당 수익이 제일 높은 포트폴리오를 구할 수 있다.
  • 위험 단위당 수익률이 가장 높은 포트폴리오는 Sharpe 값이 높은 행을 찾고,
  • 가장 안정적인 포트폴리오는 Risk 값이 가장 낮은 행을 찾으면 된다.

⭐ : 샤프지수가 가장 높은 포트폴리오
❌ : Risk 가 가장 낮은 포트폴리오

6.3 볼린저 밴드 지표

💸
볼린저 밴드는 주가의 변동이 표준 정규 분포를 따른다는 가정에서 주가의 위아래에 밴드를 표시함으로써 주가의 상대적인 높낮이를 알려준다.

6.3.1 볼린저 밴드 구하기

  • 볼린저 밴드는 주가의 20일 이동 평균선을 기준으로, 상대적인 고점을 나타내는 상단 밴드와 상대적인 저점을 나타내는 하단 밴드로 구성된다.

📈 표준 볼린저 밴드 공식

  • 상단 볼린저 밴드 = 중간 볼린저 밴드 + (2 x 표준편차)
  • 중단 볼린저 밴드 = 종가의 20일 이동평균
  • 하단 볼린저 밴드 = 중간 볼린저 밴드 - (2 x 표준편차)

6.3.2 볼린저 밴드 지표 1 - %b

  • 주가가 볼린저 밴드 어디에 위치하는지를 나타내는 지표
    • 주가가 상단 밴드에 있으면 1, 중간에 있으면 0.5, 하단에 있으면 0 이다.
종가하단 볼린저 밴드상단 볼린저 밴드하단 볼린저 밴드\frac {종가 - 하단\ 볼린저 \ 밴드}{상단\ 볼린저\ 밴드 - 하단 \ 볼린저 \ 밴드}

6.3.3 볼린저 밴드 지표 2 - 밴드폭

  • 상단과 하단 볼린저 밴드 사이의 폭
  • 스퀴즈를 확인하는데 유용하다
    • 스퀴즈란 변동성이 극히 낮은 수준까지 떨어져 곧이어 변동성 증가가 발생할 것으로 예상되는 상황.
상단 볼린저 밴드하단 볼린저 밴드중간 볼린저 밴드\frac{상단\ 볼린저\ 밴드 - 하단\ 볼린저\ 밴드 }{중간\ 볼린저\ 밴드}

6.4 볼린저 밴드 매매기법

볼린저 밴드에 관한 잘못된 통념 ⇒ 상단 밴드에서 매도하고, 하단 밴드에서 매수하기.

  • 밴드 태그가 일어났다고 해서 그 자체로 매수 신호나 매도 신호가 되는 것은 아니다.
  • 존 볼린저가 제시한 ‘변동성 돌파’, ‘추세 추종’, ‘반전’이라는 세 가지 매매기법 중에서 뒤의 두가지만 살펴본다.
    • 변동성 돌파 매매기법의 ‘공매도’ 는 우리나라에서 일반인이 흔히 하기 쉽지 않기 때문.

6.4.1 볼린저 밴드를 이용한 추세 추종 매매기법

상승 추세에 매수하고 하락 추세에 매도하는 기법

  • 단순의 %b 지표만 이용해서 주가가 볼린저 상/하단 밴드에 태그했는지 여부로만 판단하지 않음.
  • 현금흐름지표(MFI)일중강도 같은 거래량 관련 지표를 함께 이용해서 확증이 이루어진 경우에만 매수/매도에 들어간다.

📈 매수
주가가 상단 밴드에 접근하며, 지표가 강세를 확증할 때만 매수
(%b가 0.8 보다 크고, MFI 가 80보다 클 때)
📉 매도
주가가 하단 밴드에 접근하며, 지표가 약세를 확증할 때만 매수
(%b가 0.2 보다 작고, MFI 가 20보다 클 때)

MFI ( 현금흐름지표, Money Flow Index )

  • 일반적으로 주가를 나타낼 때 종가를 사용하지만 중심 가격을 사용하면 트레이딩이 집중적으로 발생하는 주가 지점을 더 잘 나타낼 수 있다.

📈
중심 가격 = (일정기간의 고가 + 저가 + 종가) / 3
현금 흐름 = 중심 가격 * 거래량

  • 다른 지표들이 보통 가격 한 가지만 분석하는 데 반해, MFI는 가격과 거래량을 동시에 분석하므로 상대적으로 신뢰도가 더 높다고 볼 수 있다.

6.4.2 볼린저 밴드를 이용한 반전 매매기법

주가가 반전하는 지점을 찾아내 매수 또는 매도하는 기법이다.

  • 주가가 하단 밴드를 여러 차례 태그하는 과정에서 강세 지표가 발생하면 → 매수
  • 주가가 상단 밴드를 여러 차례 태그하는 과정에서 약세 지표가 발생하면 → 매도

📈 매수
주가가 하단 밴드 부근에서 W형 패턴을 나타내고, 강세 지표가 확증할 때만 매수
(%b가 0.05 보다 작고, ll%가 0보다 클 때)
📉 매도
상단 밴드 근처에서 일련의 주가 태그가 일어나며, 약세 지표가 확증할 때만 매수
(%b가 0.95 보다 크고, ll%가 0보다 작을 때)

일중 강도율 (ll%)

거래 범위에서 종가의 위치를 토대로 주식 종목의 자금 흐름을 설명한다.

  • 거래 범위에서 종가의 위치를 토대로 주식 종목의 자금 흐름이 II 인데, 21일 간의 II 을 거래량으로 가중평균 낸 것이 일중 강도율이다.
일중강도=2종가고가저가고가저가거래량일중 강도 = \frac {2 * 종가 - 고가 - 저가}{고가-저가} * 거래량
일중강도율=일중강도의 21일 합거래량의21일 합100일중 강도율 = \frac{일중강도의\ 21일\ 합}{거래량의 21일 \ 합} * 100

0개의 댓글