ai-creator

[책][파이썬] 파이썬 증권 데이터 분석 본문

기술서적

[책][파이썬] 파이썬 증권 데이터 분석

ai-creator 2022. 4. 24. 12:33
반응형

 

[한줄평] 

이 책은
주식데이터를 크롤링하고, 분석기법을 적용하여 자동매매까지 학습하는 책이다. 

[키워드]
- 주식 + 파이썬
- 자동매매

ㅁ 깃허브_소스코드

https://github.com/Investar/StockAnalysisInPython

 

GitHub - INVESTAR/StockAnalysisInPython

Contribute to INVESTAR/StockAnalysisInPython development by creating an account on GitHub.

github.com

ㅁ 목차

더보기

1부. 파이썬 데이터 분석 기본

 

_1장. 증권 데이터 분석에 앞서

증권 투자에 앞서 증권 관련 배경지식을 알아본다. 주식회사가 우리나라에 들어오기까지의 과정부터 가치 투자, 서브프라임 금융 위기, 퀀트 투자를 간단히 짚어본다.

 

_2장. 파이썬 프로그래밍

파이썬 설치부터 파이썬 문법 및 외부 라이브러리 사용법을 설명한다. 파이썬을 잘하려면 리스트 자료형를 자유자재로 다룰 수 있어야 한다.

 

_3장. 팬더스를 활용한 데이터 분석

데이터 분석에 필수 라이브러리인 팬더스를 설명한다. 데이터프레임 자료형은 라이브러리 간의 데이터 교환을 담당하는 허브 역할을 하므로 중요하다.

 

_4장. 웹 스크레이핑 데이터 분석

한국거래소에서 제공하는 상장법인 목록 엑셀 파일을 다운로드하고, 네이버에서 제공하는 주식 일별 시세 페이지를 스크레이핑하는 방법을 설명한다. 웹 스크레이핑 라이브러리 뷰티풀 수프를 설명한다.

 

2부. 파이썬 데이터 분석 응용

 

_5장. 시세 DB 구축 및 시세 조회 API 개발

네이버 주식 시세를 웹 페이지에서 읽어 마리아디비에 저장해 나만의 시세 데이터베이스를 구축한다. 이어서 저장된 주식 시세를 조회하는 시세 조회 API를 구현한다.

 

_6장. 트레이딩 전략과 구현

현대 포트폴리오 이론, 볼린저 밴드, 삼중창 매매 시스템, 듀얼 모멘텀 등 전설적인 트레이딩 전략의 핵심을 이해하고 파이썬으로 구현한다.

 

_7장. 장고 웹 서버 구축 및 자동화

파이썬 기반 웹 프레임워크인 장고로 주식 잔고를 확인하는 웹 시스템을 구현한다. 백트레이더를 이용한 백테스팅 방법과 슬랙을 이용한 메시지 전송 방법도 소개한다.

 

_8장. 변동성 돌파 전략과 자동매매

래리 윌리엄스의 변동성 돌파 전략을 국내 증권사 API를 이용하여 구현하고, 거래세 부담이 적은 ETF 종목을 자동으로 매매하는 시스템을 구축한다.

 

_9장. 딥러닝을 이용한 주가 예측

구글 텐서플로로 구현한 딥러닝 기술로 내일 주가를 예상한다. 딥러닝 기본 개념도 익힌다.

ㅁ 내용 요약

4장. 웹 스크레이핑 데이터 분석

- 일별 시세를 직접 스크레핑하여 원하는 정보를 추출하는 코드를 제공하고 있다. 

 

본 예제는 셀트리온을 스크래핑한 소스코드를 발췌하였다. 

import pandas as pd
from urllib.request import urlopen
from bs4 import BeautifulSoup
import mplfinance as mpf

url = 'https://finance.naver.com/item/sise_day.nhn?code=068270&page=1'
with urlopen(url) as doc:
    html = BeautifulSoup(doc, 'lxml') 
    pgrr = html.find('td', class_='pgRR')
    s = str(pgrr.a['href']).split('=')
    last_page = s[-1]  

df = pd.DataFrame()
sise_url = 'https://finance.naver.com/item/sise_day.nhn?code=068270'  
for page in range(1, int(last_page)+1): 
    page_url = '{}&page={}'.format(sise_url, page)  
    df = df.append(pd.read_html(page_url, header=0)[0])

df = df.dropna()
df = df.iloc[0:30]
df = df.rename(columns={'날짜':'Date', '시가':'Open', '고가':'High', '저가':'Low', '종가':'Close', '거래량':'Volume'})
df = df.sort_values(by='Date')
df.index = pd.to_datetime(df.Date)
df = df[['Open', 'High', 'Low', 'Close', 'Volume']]

mpf.plot(df, title='Celltrion candle chart', type='candle')

mpf.plot(df, title='Celltrion ohlc chart', type='ohlc')

kwargs = dict(title='Celltrion customized chart', type='candle',
    mav=(2, 4, 6), volume=True, ylabel='ohlc candles')
mc = mpf.make_marketcolors(up='r', down='b', inherit=True)
s  = mpf.make_mpf_style(marketcolors=mc)
mpf.plot(df, **kwargs, style=s)

6장. 트레이딩 전략과 구현

- 샤프지수, 볼린저 밴드, 모멘텀 등의 기법을 학습해본다. 

 

본 예제는 볼린저 밴드를 이용한 추세 추정 매매기법에 대한 소스코드를 발췌하였다. 

import matplotlib.pyplot as plt
from Investar import Analyzer

mk = Analyzer.MarketDB()
df = mk.get_daily_price('NAVER', '2019-01-02')
  
df['MA20'] = df['close'].rolling(window=20).mean() 
df['stddev'] = df['close'].rolling(window=20).std() 
df['upper'] = df['MA20'] + (df['stddev'] * 2)
df['lower'] = df['MA20'] - (df['stddev'] * 2)
df['PB'] = (df['close'] - df['lower']) / (df['upper'] - df['lower'])  # ①
df = df[19:]

plt.figure(figsize=(9, 8))
plt.subplot(2, 1, 1)  # ②
plt.plot(df.index, df['close'], color='#0000ff', label='Close')
plt.plot(df.index, df['upper'], 'r--', label = 'Upper band')
plt.plot(df.index, df['MA20'], 'k--', label='Moving average 20')
plt.plot(df.index, df['lower'], 'c--', label = 'Lower band')
plt.fill_between(df.index, df['upper'], df['lower'], color='0.9')
plt.title('NAVER Bollinger Band(20 day, 2 std)')
plt.legend(loc='best')

plt.subplot(2, 1, 2)  # ③
plt.plot(df.index, df['PB'], color='b', label='%B')  # ④
plt.grid(True)
plt.legend(loc='best')
plt.show()

 

8장. 변동성 돌파 전략과 자동 매매

- 랠 윌리엄스의 변동성 돌파 전략으로 자동 매매를 하는 방법을 학습한다.

 

본 예제는 매수/매도 주문확정 로직을 작성 후 윈도우즈에서 작업 스케쥴을 등록하는 방법이다.

 


"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

 

반응형
Comments