Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 마크 미너비니
- 추세추종 2%룰
- 파이어족
- 데이비드 라이언
- AWS
- tensorflow
- 신의 시간술
- 제시 리버모어
- eclipse
- 퀀트 트레이딩
- 니콜라스 다바스
- 통계적 유의성
- H는 통계를 모른다.
- 데이빗 라이언
- 마크미너비니
- 파이어족 저축
- 아웃풋 트레이닝
- 퀀터스 하지 마세요
- GIT
- 김프
- 파이어족 포트폴리오
- 이클립스
- 연금저축계좌
- python
- mark minervini
- 자산배분
- 2%룰
- 파이어족 자산
- 에드워드 소프
- 파이어족 자산증식
Archives
- Today
- Total
머신러닝과 기술적 분석
한국주식과 달러환율의 상관관계분석 (python 코드) 본문
728x90
지난 포스트 달러와 주요자산군과의 상관관계 에서 달러의 헤지 역할에 대해서 실험해보았다.
이번에는 한국 주식(코스피지수로 계산)과 원/달러 환율의 상관계수를 구해보았다.
# 테스트 기간: 1995-01-01 ~ 2021-07-31
USD/KRW KS11
USD/KRW 1.000000 -0.221569
KS11 -0.221569 1.000000
먼저 상관계수는 -0.221569이다. (예상했던대로 음의 방향이지만 솔직히 더 낮게 나올줄 알았다.)
시계열 변화를 그림으로 띄워보면 아래와 같다.

위기의 순간마다 환율이 뛰는 것을 볼 수 있다. 한국주식에 투자하는 경우 달러자산을 가지고 있으면 확실하게 헤지역할을 하는 것으로 보인다. 달러자산 보유는 필수!
(관련 python 코드 첨부)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import pandas as pd | |
import matplotlib.pyplot as plt | |
import FinanceDataReader as fdr | |
TICKERS = ['USD/KRW', "KS11"] | |
if __name__ == "__main__": | |
# 1. 날짜별 index 생성 | |
s = "1995-01-01" | |
e = "2021-07-31" | |
# dates = pd.date_range(s, e) # : 일단위 상관계수 계산 | |
dates = pd.date_range(s, e, freq='BM') # : 월종가단위 상관계수 계산 | |
# 2. DataFrame 만들기 | |
df = pd.DataFrame(index=dates) | |
# 3. Ticker 별로 수정종가 데이터를 추가 | |
for ticker in TICKERS: | |
# df_tmp = data.get_data_yahoo(ticker, s) | |
df_tmp = fdr.DataReader(ticker) | |
# df_tmp = fdr2backtrader(df_tmp) | |
df_tmp = df_tmp[["Close"]] | |
df_tmp = df_tmp.rename(columns={"Close": ticker}) | |
df = df.join(df_tmp) | |
df = df.dropna() | |
# 4. 가격데이터 정규화 : 시작 가격으로 나누어서 시작을 1.0으로 맞추는 과정 | |
df = df / df.iloc[0] | |
# 5. 월별 변화량 구하기 | |
daily_returns = df.copy() | |
daily_returns[1:] = (df[1:] / df[:-1].values) - 1 | |
daily_returns.iloc[0] = 0 | |
# 6. 상관계수 출력 | |
print(daily_returns.corr(method="pearson")) | |
# 7. 시각화 | |
df.plot() | |
plt.show() |
728x90
반응형
'백테스트' 카테고리의 다른 글
backtrader 에서 eps등의 재무 데이터를 추가하는 방법 (0) | 2021.07.31 |
---|---|
시장의 마법사들 - 래리 하이트의 백테스트 방법 (0) | 2021.07.13 |
Backtrader로 캔들차트 띄우기 (1) | 2021.07.08 |
SPY 몰빵 전략 python 백테스트 (1) | 2021.07.06 |
달러와 주요자산군과의 상관관계 (0) | 2021.02.05 |