본문 바로가기

문송충의 코딩하기67

S&P 500 50일 이동평균선을 활용한 SPY, SH 전략 백테스팅 with Python https://www.youtube.com/watch?v=HNP3B2fn-XQ 내가 평소 애청하는 강환국 CFA님이 S&P 500을 기준으로 한 단순 전략을 소개해줘서 파이썬으로 한번 테스트해보고자 한다. 전략은 다음과 같다. - S&P500 지수가 50일 이동평균선 위일 경우 SPY 매수 - S&P500 지수가 50일 이동평균선 아래일 경우 SH 매수 (SH는 지수 반대에 베팅하는 인버스 ETF다.) - 강환국 유튜버께서는 매매 타이밍을 소개해주지 않아서 그냥 단순하게 종가 매수 후 익일 종가에 매도하는 기준으로 백테스팅해보겠다. 1. SPY, SH ETF 2010년 ~ 현재까지의 주가 데이터 가져오기 import FinanceDataReader as fdr import pandas as pd spy .. 2022. 2. 20.
[동퀀트] VAA(Vigilant Asset Allocation) 동적자산배분 파이썬으로 백테스팅 강환국 유튜버께서 소개한 복리 18% 전략 VAA에 흥미가 생겨서 한번 백테스트를 해보고자 한다. 파이썬 실력이 너무 부족해서 백테스트를 하는데 굉장히 힘들었다.(이게 정말로 이렇게 하는 것인지도 잘 모르겠다.) VAA 전략 소개 공격 자산: SPY, VEA, VWO, AGG 수비 자산: SHV, GOVT(원래는 IEF이지만 출시한 지 얼마 되지 않아서 교체), LQD 1. 위 7개 자산의 모멘텀 스코어 계산 (스코어 계산 공식: 최근 1개월 수익률 * 12 + 최근 3개월 수익률 * 4 + 최근 6개월 수익률 *2 + 최근 12개월 수익률 * 1) 2. 자산 매수 공격 자산 4개 모멘텀 스코어가 0 이상일 경우 4개 자산 중 가장 모멘텀 스코어가 높은 자산 매수 공격 자산 4개 자산 중 하나라도 모멘텀.. 2022. 2. 2.
MSFT 마이크로소프트 지난 5년간 주당배당금 연간 복리 성장률을 구해보자 1. 배당 히스토리 가져오기 종목 배당 이력 데이터를 가져오는 방식은 많지만 여기서는 Yahoo Finance 데이터를 가져올 수 있게 해주는 yahoo_fin 라이브러리를 활용하도록 하겠다. 해당 라이브러리는 아래 코드로 쉽게 설치할 수 있다. pip install yahoo_fin 아래와 같이 get_dividends 함수를 사용하면 지난 모든 마이크로소프트의 배당 이력을 확인할 수 있다. import yahoo_fin.stock_info as yf yf.get_dividends("MSFT") 2. 배당 성장률 구하기 import yahoo_fin.stock_info as yf import pandas as pd import datetime def get_div_growth(ticker): if le.. 2022. 1. 25.
파이썬으로 라오어 무한매수법 백테스팅, 이렇게 하는게 맞나? 최근에 읽은 "라오어 무한매수법"이라는 책이 굉장히 인상 깊어서 파이썬으로 이러한 전략이 실제로 통하는지 백테스팅을 해보고자 한다. 우선 밑밥부터 깔자면 나는 문과생 출신으로 파이썬을 그렇게 잘하지 않고, 백테스팅은 이번이 처음이라 더더욱 익숙지 않다. 처음 연습 삼아서 하는 것으로 참고만 해주셨으면 한다. 계속 공부하고 있어 다음에는 이것보다 훨씬 정교하게 만들어보겠다. 우선 분석에 필요한 라이브러리를 가져오도록 하겠다. import pandas as pd import yfinance as yf import numpy as np import matplotlib.pyplot as plt 다음으로는 무한매수법에 가장 많이 활용되는 3배 레버리지 ETF TQQQ 가격을 가져오도록 하겠다. 라오어 무한매수법을.. 2022. 1. 14.
파이썬으로 포트폴리오 자산별 상관관계 구하기 퀀트 투자를 위한 기초를 계속 쌓고 있는 중이다. 오늘은 올웨더 자산배분에 많이 활용되는 주요 ETF 자산들을 가져와서 자산별 상관관계를 구하도록 하겠다. 아래 코드와 같이 yfinance라는 야후 파이낸스 라이브러리를 활용하면 자산별 히스토리 가격을 쉽게 가져올 수 있다. 여기서는 2010년 이후 데이터를 가져오도록 하겠다. import pandas as pd import yfinance as yf import matplotlib.pyplot as plt import seaborn as sns spy=yf.download('SPY',start = '2010-01-01')['Adj Close'] qqq=yf.download('QQQ',start='2010-01-01')['Adj Close'] vea=yf.. 2022. 1. 14.
파이썬으로 업비트 내 자산 잔고 조회하기 with pyupbit 지난 포스팅에 이어서 업비트 라이브러리 pyupbit 활용해서 업비트에 있는 내 암호화폐 자산을 조회하도록 하겠다. pyupbit가 잘되어 있어서 코드는 굉장히 쉽다. import pyupbit import pandas as pd access = "~" # 본인 값으로 변경 secret = "~" # 본인 값으로 변경 upbit = pyupbit.Upbit(access, secret) 업비트 Api 사용하기 위해서는 access, secret 값을 받아야 하는데, 아래 링크에서 쉽게 받을 수 있다. https://upbit.com/service_center/open_api_guide pd.DataFrame(upbit.get_balances()) 아래와 같이 내 자산을 조회할 수 있을 것이다. 2022. 1. 13.
업비트에서 지난 4년치 비트코인, 이더리움, 에이다 가격 가져오기 with Python 오늘부터 파이썬을 활용한 퀀트 투자에 입문하도록 하겠다. 첫 시작은 업비트에서 주요 코인 가격을 가져와 코인 간 상관관계를 구해보도록 하겠다. 업비트에서 데이터를 가져오기 위해서는 우선 업비트 라이브러리 pyupbit를 설치해야 한다. -> pip install pyupbit 설치가 완료되면 아래 코드를 통해 원화로 거래할 수 있는 코인 리스트를 확인할 수 있을 것이다. import pyupbit tickers = pyupbit.get_tickers(fiat="KRW") print(tickers) 다음으로는 가장 대표적인 암호화폐 비트코인, 이더리움, 에이다의 지난 4년간 가격 데이터를 가져오도록 하겠다. import pandas as pd df = pyupbit.get_ohlcv("KRW-BTC", c.. 2022. 1. 12.
2021년 11월 서울 아파트 평균 평당(㎡) 거래 매매가 with python 공공데이터 국토교통부에서 제공하고 있는 아파트 매매 실거래 데이터를 활용해서 2021년 11월 서울 아파트 평당 평균 매매가를 구해보고 이 수치를 전년도 11월과 비교해보도록 하겠다. https://www.data.go.kr/data/15057511/openapi.do 국토교통부_아파트매매 실거래 상세 자료 부동산 거래신고에 관한 법률에 따라 신고된 주택의 실거래 자료를 제공 www.data.go.kr 우선 데이터를 뽑기 위해서는 서울 지역구별 법정코드가 필요하다. 그래서 아래 코드를 통해서 서울 법정코드를 크롤링해오도록 하겠다. 아래 코드가 문제없이 돌아간다면 25개 서울 지역구 법정코드를 가져올 수 있을 것이다. import pandas as pd import requests url='https://.. 2021. 12. 28.
2021년 5월 ~ 11월 서울 강서구 오피스텔 매매가 데이터 가져오기(공공데이터) with Python 지난 6개월(21년 5월 ~ 11월) 서울 강서구 내 오피스텔 매매가 데이터를 가져오도록 하겠다. 데이터는 공공데이터에서 파이썬으로 가져오도록 하겠다. 데이터 설명은 아래 링크에서 확인할 수 있다. https://www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15058452 국토교통부_오피스텔 매매 신고 조회 서비스 부동산 거래신고에 관한 법률에 따라 신고된 주택의 실거래 자료를 제공 www.data.go.kr from urllib.request import urlopen from urllib.parse import urlencode, unquote, quote_plus import urllib import requests import p.. 2021. 12. 27.
KODEX 은행, TIGER 은행 지난 5년간 주가 그래프 파이썬으로 그리기 오늘은 간단하게 내가 최근에 관심 있게 지켜보고 있는 국내 은행주 ETF 주가 차트를 파이썬으로 그려보도록 하겠다. 국내 증시에는 삼성자산운용의 KODEX 은행과 미래에셋자산운용의 TIGER 은행 두 개의 ETF가 있다. 파이썬으로 하나하나 만드는 과정을 간략히 설명하도록 하겠다. 1. 네이버 크롤링 우선 네이버 증권 사이트에서 전체 ETF 종목을 가져온 다음 ETF 종목 이름 중에서 "은행"이라는 단어가 포함된 종목만 추출하도록 하겠다. import requests import json from pandas.io.json import json_normalize url = 'https://finance.naver.com/api/sise/etfItemList.nhn' json_data = json.load.. 2021. 3. 22.
공공데이터 Open API를 통해 국내 주요 은행 현황 분석#1 with Python data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15061304 공공데이터 포털 국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase www.data.go.kr 공공데이터 Open API에서 위 링크와 같이 국내 은행과 관련된 데이터를 제공하고 있어 오늘 포스팅을 시작으로 해서 국내 메이저 은행에 대해 분석해보고자 한다. 신한지주에 상당한 돈이 들어간 주주 입장으로서 이번 분석이 꽤 재미있을 것 같아서 시작해보았다. 오늘은 간단하게 국내 은행들의 임직원 수를 알아보도록 하겠다. from urllib.reque.. 2021. 3. 20.
네이버에서 국내 ETF 종목 정보 가져와서 분석 with Python 네이버 증권 페이지에서는 국내 ETF 종목 정보를 제공해주고 있다. 그래서 오늘은 파이썬으로 ETF 종목을 긁어와서 간략히 분석해보도록 하겠다. 아래와 같이 파이썬 몇 줄로 모든 ETF 종목을 가지고 올 수 있다. import requests import json from pandas.io.json import json_normalize url = 'https://finance.naver.com/api/sise/etfItemList.nhn' json_data = json.loads(requests.get(url).text) df = json_normalize(json_data['result']['etfItemList']) df를 출력하면 아래와 같이 증시에 있는 총 474개의 ETF 종목을 확인할 수 있.. 2021. 3. 20.