"하이 리스크 하이 리턴"
이 업계에서 가장 기본이 되는 규칙이다.
높은 위험은 높은 수익으로 보상받을 수 있어야 한다.
즉, 기대 수익이 은행 이자보다 높아야 하고
그게 우리가 투자를 하는 이유이다.
만약 위험을 감수하고 공격적인 투자를 하기로 결정했다고 가정해보자.
테슬라와 비트코인이라는 선택지가 있다면 어디에 투자를 할 것인가?
선택에는 수많은 이유와 기준이 있겠지만
그중 "보상(Reward)"과 "위험도(Risk)"를 어떻게 수치화하는지에 대해 알아보자.
1. 보상과 위험도 측정하기
1-1. 보상과 위험도의 개념
모든 투자 관련 보고서에는 크게 두 가지 측면을 다룬다.
플러스된 수익을 뜻하는 보상(리턴)
수익의 변동성인 위험성(리스크)
투자자는 큰 수익을 기대하지만 그만큼 적은 위험을 선호하기 때문이다.
보상과 위험성을 측정하는 다양한 지표 중에 가장 대표적인 것들을 알아보자.
가장 잘 알려진 보상 지표 중 하나는 산술평균 수익률이다.
산술평균이란 우리가 흔히 말하는 평균값이다.
N개의 변수를 모두 합하고 N으로 나눈 값이다.
위험성과 변동성을 다루는 것은 지표로는 수익률의 표준편차가 있다.
편차를 제곱해서 합한 것이 분산이고, 표준편차는 분산의 제곱근이다.
쉽게 말해 평균에 대한 오차이다.
실제 값들이 평균으로부터 얼마나 떨어져 있는지를 파악할 수 있다.
이러한 용어와 계산은 통계의 시작이다.
복잡한 수준은 아니므로 한 번 검색해보면 쉽게 이해할 수 있다.
지금은 코드로 실제 데이터를 보면서 더 직관적으로 파악해보자.
1-2. 테슬라 가격 데이터 가져오기
import pandas as pd
import numpy as np
import yfinance as yf
import matplotlib.pyplot as plt
pd.options.display.float_format = '{:.4f}'.format
plt.style.use("seaborn")
# 가져올 데이터 기간
start = "2018-08-01"
end = "2022-08-01"
# 가져올 티커 심볼
symbol = ["TSLA", "BTC-USD"] # 추후 비교를 위해 비트코인 가격도 가져오기
# 데이터 가져오기
df = yf.download(symbol,start,end)
# 테슬라 종가 데이터만 가져오기
tsla = df.Close.TSLA.dropna().to_frame().copy()
# 컬럼명을 Price로 바꾸기
tsla.rename(columns={"TSLA":"Price"}, inplace=True)
# 수익률 계산해서 추가하기
tsla["Returns"] = tsla.Price.pct_change(periods=1)
tsla
# 결과
Price Returns
Date
2018-07-31 59.6280 NaN
2018-08-01 60.1680 0.0091
2018-08-02 69.9080 0.1619
2018-08-03 69.6340 -0.0039
2018-08-06 68.3980 -0.0177
... ... ...
2022-07-25 805.3000 -0.0140
2022-07-26 776.5800 -0.0357
2022-07-27 824.4600 0.0617
2022-07-28 842.7000 0.0221
2022-07-29 891.4500 0.0578
1007 rows × 2 columns
이처럼 yfinance로 테슬라의 가격 데이터를 가져오고
pct_change() 메서드를 활용하면 된다. (% 로 보고 싶다면 100을 곱해야 한다.)
자세한 방법은 아래 링크에서 확인할 수 있다.
위 데이터를 바탕으로 차트를 그려보자.
tsla.Price.plot(figsize = (15, 8), fontsize = 13)
plt.legend(fontsize = 13)
plt.show()
전반적으로 상승했다고 볼 순 있지만,
하락하는 구간이 분명히 존재하고 그때 투자를 시작하고 처분했다면 큰 손실을 볼 수도 있었다.
이는 모든 차트에 해당한다.
완벽한 직선이나 커브를 그리는 차트는 없으며 앞으로도 그럴 것이다.
1-3. 테슬라의 보상과 위험도 측정하기
# describe() 메서드로 통계 확인
tsla.describe()
count는 데이터의 수를 의미한다.
Returns의 첫 번째 행은 값이 없기 때문에 수가 다르다.
mean이 산술평균값이다. 보상에 대한 지표로 사용할 수 있다.
평균 가격은 411.3725이고, 하루 평균 수익률은 0.36% 이다.
평균 가격은 크게 의미 없고 중요한 건 일일 평균 수익률이다.
아래 코드로 더 자세히 계산할 수 있다.
# mean() 메서드로 평균 구하기
mu = tsla.Returns.mean()
mu
# 결과
0.0036112110410651834
다음으로 std가 표준편차이다. 위험성을 판단할 지표가 된다.
테슬라의 일일 수익률의 표준편차는 4.3% 인 것이다.
아래 코드로 더 자세한 값을 알 수 있다.
# std() 메서드로 표준편차 구하기
sigma = tsla.Returns.std()
sigma
# 결과
0.04297213396699627
다른 통계로는 min과 max가 있다.
일일 최저 수익률은 -21% 이고,
일일 최고 수익률은 19.89% 이다.
이것도 min(), max() 메서드를 이용해 자세히 값을 볼 수 있다.
주의할 점은
위 통계지표를 숫자 그대로 해석하면 안 된다.
"이거 밖에 안되나" 혹은 "이만큼이나 높나"라는 식의 판단은 금물이다.
이러한 지표는 여러 상품을 상대적으로 비교 분석하기 위해 사용한다.
직관이 아닌 데이터를 기반으로 판단을 내리는 것이 중요하다.
2. 비트코인과 테슬라 비교하기
2-1. 비트코인의 보상과 위험도 측정하기
# 맨 처음 테슬라 데이터와 함께 비트코인 데이터를 가져왔었다.
# 비트코인 종가 데이터 가져오기
btc = df.Close["BTC-USD"].dropna().to_frame().copy()
# 컬럼명을 Price로 바꾸기
btc.rename(columns={"BTC-USD":"Price"}, inplace=True)
# 수익률 계산해서 추가하기
btc["Returns"] = btc.Price.pct_change(periods=1)
btc
# 결과
Price Returns
Date
2018-07-31 7780.4399 NaN
2018-08-01 7624.9102 -0.0200
2018-08-02 7567.1499 -0.0076
2018-08-03 7434.3901 -0.0175
2018-08-04 7032.8501 -0.0540
... ... ...
2022-07-27 22930.5488 0.0796
2022-07-28 23843.8867 0.0398
2022-07-29 23804.6328 -0.0016
2022-07-30 23656.2070 -0.0062
2022-07-31 23336.8965 -0.0135
1462 rows × 2 columns
# 통계 수치 보기
btc.describe()
비트코인 통계 결과는 아래와 같다.
평균 수익률은 0.15%
수익률 표준편차는 3.79%
일일 최소 수익률은 -37.17%
일일 최대 수익률은 18.75%
2-2. 테슬라와 비트코인 비교하기
지금까지 계산한 통계 수치를 바탕으로 테슬라와 비트코인을 비교해보자.
참고로 모든 수치는 일일 수익률 기준이다.
구분 | 테슬라 | 비트코인 |
수익률 평균 | 0.36% | 0.15% |
수익률 표준편차 | 4.3% | 3.79% |
최소 수익률 | -21.06% | -37.17% |
최대 수익률 | 19.89% | 18.75% |
일일 기준으로 단순하게 본다면
보상의 지표인 평균 수익률은 테슬라가 비트코인의 두 배가 넘는다.
변동성과 위험성을 나타내는 표준편차는 테슬라가 더 높다.
비트코인보다 테슬라의 변동성이 더 크다는 것을 알 수 있다.
이를 통해 "비트코인의 변동성은 지나치게 크다"라는 통념에 대해 다시 생각해보게 된다.
일일 최소, 최대 수익률의 격차가 커서 그렇게 느낀 것일 수도 있고,
짧은 기간 내에 큰 변동성이 나타나서 그렇게 느낄 수 있는 것이다.
물론 이 통계는 완벽하지 않다.
가격의 데이터의 기간에 따라 값이 달라질 것이다.
위 결과는 18년 8월부터 22년 7월까지 데이터 기준이다.
하지만 테스트를 해본 결과,
기간을 극단적으로 바꾸지 않는 이상 통계 값이 크게 변하진 않았다.
그 외에도 수많은 변수가 있을 것이고 이걸 보고 투자 결정을 할 순 없다.
지금은 테슬라와 비트코인을 비교해서 투자 대상을 고르려는 게 아니다.
직관이 아닌 데이터를 바탕으로 분석을 시작한 점에 의미가 있다.
'개발로 돈 벌기 > 파이썬 금융 데이터 분석' 카테고리의 다른 글
테슬라 주식 날짜별 가격 변화와 수익률 계산하기 (0) | 2022.08.09 |
---|---|
파이썬으로 네이버와 카카오 주식차트 비교하기 (0) | 2022.08.04 |
금융 자산 데이터 시각화하기 (matplotlib) (0) | 2022.08.03 |
판다스로 주식, 암호화폐 데이터 다듬기 (0) | 2022.08.02 |
파이썬으로 야후 파이낸스(yfinance)에서 금융 데이터 가져오기 (0) | 2022.08.02 |
파이썬과 금융 데이터 분석을 시작하기 전에 (0) | 2022.07.30 |
댓글