주가가 20일 이동평균선을 기준으로 볼린저 밴드의 어느 위치에 있는지(%b)와
밴드폭(Band Width)에 대한 내용이다. 

 

어렵지 않게 내용을 보고, 코딩하여 결과를 그래프로 확인 하면
어렵지 않게 이해 했다.

 

'삼성전자'와 '삼성전자우' 그래프를 봤는데, 예전 지인에게
삼성전자의 주가가 꺽이기 전에 차익 실현과 이벤트가 없어 주가가
떨어진다고 얘기 했던 기억이 있다. 시기가 결과로 나타난 비슷했다 --.--

코딩하면서 코드를 조금 수정해야 할 부분이 생겼다. '삼성전자' 종목은 잇는데,
'삼성전자우'로 했을 때 문제가 생겼다. krx에서 받아온 데이터가 회사에 대한
종목코드만 있어, 주식 거래가 되는 종목들 전부는 아니였다.
이 부분만 개선하면 될거 같다.

 

youtu.be/XtZ74Cfpkwg

 

 

6.3 볼린저 밴드 지표
.

.

.

6.3.2 볼린저 밴드 지표 | :%b
6.3.3 볼린저 밴드 지표 II : 밴드폭

.

.

.

 

이전글 - 2021/02/25 - [책들] - [파이썬 증권 데이터 분석] 6.1.2 효율적 투자선 267P

다음글 - 작성중

블로그 이미지

두리뭉실 두리뭉실:해피파인더그룹

컴퓨터 코치 두리뭉실

댓글을 달아 주세요

Mean-Variance Optimization는 예상 수익률과 리스크의 상관관계를 활용해
포트폴리오를 최적화 하는 기법이다.

 

책에서는 시총 상위 4종목 비중을 다르게 해 포트폴리오 20,000개를 생성해
수익률, 리스크, 샤프 지수를 이용하여 위험에 대한 보상이 큰(샤프 지수가 큰)
포트폴리오와 리스크가 작은 포트폴리오를 구한다.

 

역시나 이번에도 오타와 복사 붙여 넣기로 인해 오류가
났지만, 한번 더 다시 보는(?) 시간이 됐다.

 

youtu.be/3FIj9eqtuyU

 

CHAPTER 6 트레이딩 전략과 구현
6.1 현대 포트폴리오 이론
6.1.1 수익률의 표준편차
6.1.2 효율적 투자선
6.2 샤프 지수와 포트폴리오 최적화 
6.2.1 샤프 지수
6.2.2 포트폴리오 최적화 

 

이전글 - 2021/02/17 - [책들] - [파이썬 증권 데이터 분석] 5. 시세 DB 구축 및 시세 조회 API 개발 251p

다음글 - 2021/02/25 - [책들] - [파이썬 증권 데이터 분석] 6.1.2 효율적 투자선 267P

블로그 이미지

두리뭉실 두리뭉실:해피파인더그룹

컴퓨터 코치 두리뭉실

댓글을 달아 주세요

네이버 금융 데이터

웹 스크레이핑

DB에 저장

DB에서 내가 원하는 자료 찾기

 

마리아디비 설치는 책에 설명한 방법이 아닌 도커를 이용 했다. 예전에 도커를
사용해 봤지만, 만족할 만큼은 아니여서 걱정이 됐다. 하지만 예전과 다르게
별다른 문제 없이 원하는 대로 도커도 잘 설치 됐고, 마리아디비 이미지도
잘 받아졌으며, 설정도 잘 됐다. 책에 있는 시세 조회 API 개발 코드를 보고 만드는데도
오타 때문에 고생 좀 했다. 실습 영상에도 적나라 하게 나온다.

 

docker container run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -v /Users/Shared/data/mariadb:/var/lib/mysql --name mariadb_local mariadb

-d 데몬으로 실행한다. 
-p 포트포워딩 해준다. 로컬이라 3306 3306 했다
-e MYSQL_ROOT_PASSWORD root 패스워드 설정한다.
-v 디비 데이터 저장할 폴더이다
--name 컨테이너 이름이다

 

docker run --name mariadb -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=mariadb mariadb
docker exec -it mariadb /bin/bash

 

youtu.be/uipdLntAbII

 

 

CHAPTER 5 시세 DB 구축 및 시세 조회 API 개발
5.1 야후 파이낸스와 네이버 금융 비교하기

5.1.1 야후 파이낸스 데이터의 문제점
5.1.2 네이버 금융 데이터로 시세 데이터베이스 구축하기

 

5.2 마리아디비 설치 후 접속 확인
5.2.1 마리아디비 설치
5.2.2 마이에스큐엘 클라이언트로 접속 확인
5.2.3 헤이디에스큐엘
5.2.4 파이마이에스큐엘로 버전 정보 확인하기

 

5.3 주식 시세를 매일 DB로 업데이트하기
5.3.1 DBUpdater 클래스 구조
5.3.2 헤이디에스큐엘로 테이블 생성하기
5.3.3 복합 기본키
5.3.4 파이마이에스큐엘로 테이블 생성하기
5.3.5 종목코드 구하기 
5.3.6 종목코드를 DB에 업데이트하기
5.3.7 주식 시세 데이터 읽어오기
5.3.8 일별 시세 데이터를 DB에 저장하기
5.3.9 json을 이용한 업데이트 페이지 수 설정
5.3.10 마리아디비 자동 연결 해제 방지

5.3.11 DBUpdater.py  전체 소스 코드

5.3.12 Run 레지스트리 등록해 자동 실행하기

 

5.4 일별 시세 조회 API
5.4.1 클래스 구조 
5.4.2 생성자와 소멸자로 DB 연결 관리
5.4.3 일별 시세 조회 API
5.4.4 기본 인숫값 처리
5.4.5 정규표현식으로 연 월 일 분리하기
5.4.6 회사명으로 종목코드 조회하기

5.4.7 Analyzer.py 전체 소스 코드

5.5 핵심 요약

 

이전글 - 2021/02/07 - [책들] - [파이썬 증권 데이터 분석] 4.5 OHLC 캔들 차트 203p

다음글 - 2021/02/25 - [책들] - [파이썬 증권 데이터 분석] 6.1.2 효율적 투자선 267P

 

 

블로그 이미지

두리뭉실 두리뭉실:해피파인더그룹

컴퓨터 코치 두리뭉실

댓글을 달아 주세요

mplfinance 라이브러리를 이용하면 쉽게 OHLC 관련 차트를 그릴 수 있다. 

mplfinance에 맞게 data들을 가공해 주면 된다.

 

책에 있는 소스

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)

'User Agent' 추가한 코드

'''
셀트리온 캔들 차트 신버전
'''

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

opener = urllib.build_opener()
opener.addheaders = [("User-Agent" , "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36")]

# 4.4.3 맨 뒤 페이지 숫자 구하기
sise_url = 'https://finance.naver.com/item/sise_day.nhn?code=068270'
with opener.open(sise_url) as doc:
    html = BeautifulSoup(doc, 'lxml')
    pgrr = html.find('td', class_ = 'pgRR')
    s = str(pgrr.a['href']).split('=')
    last_page = s[-1]

# 4.4.4 전체 페이지 읽어오기
df = pd.DataFrame()
for page in range(1, int(last_page) + 1):
    print('.', end = '')
    page_url = '{}&page={}'.format(sise_url, page)
    df = df.append(pd.read_html(opener.open(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')


 

'User Agent'가 추가된 url 객체를 돌려주는 함수를 하나
만들어서 앞으로 편안하게 써야 겠다.

 

실습 동영상

 

 

 

 

matplotlib/mplfinance

New mplfinance package (replacement for mpl-finance). - matplotlib/mplfinance

github.com

 

CHAPTER 4 웹 스크레이핑을 사용한 데이터 분석

4.5 OHLC와 캔들 차트
4.5.1 OHLC 차트와 캔들 차트의 비교
4.5.2 셀트리온 종가 차트
4.4.3 셀트리온 캔들 차트
4.6 핵심 요약 

 

이전글 - 2021/02/07 - [책들] - [파이썬 증권 데이터 분석] 4. 웹 스크레이핑을 사용한 데이터 분석 191p

다음글 -

블로그 이미지

두리뭉실 두리뭉실:해피파인더그룹

컴퓨터 코치 두리뭉실

댓글을 달아 주세요

녹화한 실습 동영상을 보니 꽤 플레이 타임이 길다.
오래 걸린 이유는 고질병인 '오타'!
그리고 그리고 '유저 에이전트'

 

'유저 에이전트' 정보 없이 웹페이지를 읽을 경우
원하는 데이터를 얻을 수 없다.

import pandas as pd
import urllib.request as urllib

sise_url = 'https://finance.naver.com/item/sise_day.nhn?code=068270'

opener = urllib.build_opener()
opener.addheaders = [("User-Agent" , "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36")]

df = pd.DataFrame()
last_page = 385

print('wait......')
for page in range(1, int(last_page) + 1):
    print('.', end = '')
    page_url = '{}&page={}'.format(sise_url, page)
    df = df.append(pd.read_html(opener.open(page_url), header = 0)[0])

df = df.dropna()

셀트리온 데이터를 읽어 오는 코드다. 책에 있는 내용에
'유저 에이전트' 부분을 추가한 코드.

크롬 개발자 모드 콘솔에서 'navigator.userAgent'로 확인

 

실습 동영상

 

Web Scraping 관련 동영상 자료 - 한 번쯤 보면 좋은 동영상

 

CHAPTER 4 웹 스크레이핑을 사용한 데이터 분석
4.1 팬더스로 상장법인 목록 읽기
4.1.1 엑셀 파일 내용 확인하기
4.1.2 read_html() 함수로 파일 읽기 

4.2 HTML 익히기 ....
4.2.1 HTML 기본 구조
4.2.2 HTML 주요 태그
4.2.3 HTML 예시 ...

4.3 웹에서 일별 시세 구하기
4.3.1 네이버 금융 일별 시세 분석하기
4.3.2 소스 코드에서 링크 주소 검색하기

4.4 뷰티풀 수프로 일별 시세 읽어오기
4.4.1 파서별 장단점
4.4.2 find_al() 함수와 find() 함수 비교
4.4.3 맨 뒤 페이지 숫자 구하기
4.4.4 전체 페이지 읽어오기 

 

이전글 - 2021/02/02 - [책들] - 파이썬 증권 데이터 분석 3.6 회귀 분석과 상관관계 ~ 171p

이후글 - 2021/02/07 - [책들] - [파이썬 증권 데이터 분석] 4.5 OHLC 캔들 차트 203p

 

블로그 이미지

두리뭉실 두리뭉실:해피파인더그룹

컴퓨터 코치 두리뭉실

댓글을 달아 주세요

포트폴리오의 전반적인 위험을 줄일 수 있는 방법으로 상관관계가
낮은 자산으로 포트폴리오를 구성한다. 회귀 분석을 통하여
상관관계를 분석하여 상관계수를 구한다.

 

이번 예제 실습 중 미국 국채와(TLT) KOSPI(^KS11)의 회귀 분석이
있는데 TLT의 자료가 책에 그려진 그래프와는 다른 거 같다.
그렇지만 상관 계수는 얼추 비슷하게 나왔다.

 

해당 자산을 지수화 ->
사이파이를 이용하여 선형 회귀 분석 ->
상관 계수 구하기(데이터프레임, 시리즈로)->

결정 계수 구하기

 

코드로 작성하는 건 어렵지 않다.
단어에 대한 이해가 필요한 부분이다.
앞으로도 더욱 더 이해가 많이 필요할 거 같다.

3.6 회귀 분석과 상관관계
3.6.1 KOSPI와 다우존스 지수 비교 
3.6.2 지수화 비교
3.6.3 산점도 분석
3.6.4 사이파이 선형 회귀 분석 .....
3.6.5 선형 회귀 분석

3.7 상관계수에 따른 리스크 완화
3.7.1 데이터프레임으로 상관계수 구하기
3.7.2 시리즈로 상관계수 구하기
3.7.3 결정계수 구하기
3.7.4 다우존스 자수와 KOSPI의 회귀 분석
3.7.5 상관계수에 따른 리스크 완화

 

이전글 - 2021/02/01 - [책들] - 파이썬 증권 데이터 분석 3.4 주식비교하기 ~ 153p

이후글 - 2021/02/07 - [책들] - [파이썬 증권 데이터 분석] 4. 웹 스크레이핑을 사용한 데이터 분석 191p

블로그 이미지

두리뭉실 두리뭉실:해피파인더그룹

컴퓨터 코치 두리뭉실

댓글을 달아 주세요

일정 기간의 시세를 기본으로 일간 변동률과 누적 수익률을 구한다.
야후 파이낸스(yfinance) 라이브러리를 이용하여 해당 종목의
시세를 구할 수 있다.

 

책에서는 누적 수익률을 인간 변동률의 누적합으로 되어 있으나, 누적곱으로
구해야 한다. 관련 오류는 해당 책 오탈자 부분에 자세하게 나와 있다.

 

아래는 '삼성전자'와 '마이크로소프트'의
2018년부터 지금까지 누적수익률 그래프다.

 

마소가 대단하긴 대단한가 보다!

 

 

파이썬 증권 데이터 분석

이 책은 웹 스크레이핑으로 증권 데이터를 주기적으로 자동 수집, 분석, 자동 매매, 예측하는 전 과정을 파이썬으로 직접 구현한다. 그 과정에서 금융 데이터 처리 기본 라이브러리(팬더스)부터

www.hanbit.co.kr

 

Learning pandas - Second Edition

Calculating simple daily cumulative returns of a stock The simple cumulative daily return is calculated by taking the cumulative product of the daily percentage change. This calculation is represented by … - Selection from Learning pandas - Second Editio

www.oreilly.com

 

실습 동영상

이전글 - 2021/01/31 - [책들] - [파이썬 증권 데이터 분석] Numpy, Pandas, Matplotlib ~ 142p

이후글 - 2021/02/02 - [책들] - 파이썬 증권 데이터 분석 3.6 회귀 분석과 상관관계 ~ 171p

블로그 이미지

두리뭉실 두리뭉실:해피파인더그룹

컴퓨터 코치 두리뭉실

댓글을 달아 주세요

Numpy & Pandas & Matplotlib은 데이터들을
쉽고, 빠르게, 시각적으로 다룰 수 있게 해주는 라이브러리다.

 

책에 있는 내용들은 기본 중에 기본이기 때문에 아래 문서들을
한 번씩 훑어보기에는...... 그래서 책에 있는 기초적인
부분에 집중하기로 했다.

책에 있는 기본적인 내용을 보고 문서들을 본다면

어렵지 않게 라이브러리들을 볼 수 있을 거 같다.

 

아래는 142p까지의 예제 실습 동영상! 예전에 numpy를
해본 적이 있어서 pandas도 어렵지 않게 슥~

 

 

 

 

matplotlib.org/contents.html

 

Overview — Matplotlib 3.3.3 documentation

 

matplotlib.org

pandas.pydata.org/docs/

 

pandas documentation — pandas 1.2.1 documentation

API reference The reference guide contains a detailed description of the pandas API. The reference describes how the methods work and which parameters can be used. It assumes that you have an understanding of the key concepts.

pandas.pydata.org

matplotlib.org/3.1.1/users/index.html

 

User's Guide — Matplotlib 3.1.2 documentation

 

matplotlib.org

CHAPTER 3 팬더스를 활용한 데이터 분석
3.1 넘파이 배열
3.1.1 배열 생성 
3.1.2 배열 정보 보기 
3.1.3 배열의 접근
3.1.4 배열 형태 바꾸기
3.1.5 배열의 연산
3.1.6 브로드캐스팅
3.1.7 내적 구하기

3.2 팬더스 시리즈
3.2.1 시리즈 생성
3.2.2 시리즈의 인덱스 변경
3.2.3 데이터 추가 
3.2.4 데이터 인덱싱 
3.2.5 데이터 삭제 
3.2.6 시리즈 정보 보기
3.2.7 시리즈 출력하기

3.3 팬더스 데이터프레임
3.3.1 딕셔너리를 이용한 데이터프레임 생성
3.3.2 시리즈를 이용한 데이터프레임 생성
3.3.3 리스트를 이용한 데이터프레임 생성
3.3.4 데이터프레임 순회 처리

 

이전글 - 2021/01/29 - [책들] - [파이썬 증권 데이터 분석] 시작하며 ~121p

이후글 - 2021/01/31 - [책들] - [파이썬 증권 데이터 분석] Numpy, Pandas, Matplotlib ~ 142p

블로그 이미지

두리뭉실 두리뭉실:해피파인더그룹

컴퓨터 코치 두리뭉실

댓글을 달아 주세요

개발 환경
윈도우 10,  크롬, 마리아디비, 파이썬 및 IDLE 64bit & 32Bit, 팬더스, 뷰티플 수프, 장고, 텐서플로

파이썬 32bit를 사용하는 이유가 증권사 COM방식의 API를 사용하기 위해서 32bit를 사용한다. 더불어 가상 환경(venv) 를 이용하여 각각의 버전을 설치하여 사용한다. 아나콘다와 주피터 노트북을 이용해도 될 듯.

 

책에 클래스에 대한 설명이 있다. '틀'에 빗대어 설명을 했는데, 책에도 설명한 설계도(blueprint)로 생각하면 좋겠다.

 

cmd vs powershell

powershell이 나온지도 꽤 오래 됐다. 그 동안 cmd만 사용했는데, 이 책은 powershell을 이용해야 겠다. 참고로 관리자 권한으로 powershell를 실행하고, 실행권한을 Unrestricted로 변경해야 권한에러를 해결 할 수 있다.

 

Set-ExecutionPolicy Unrestricted

 

아래 동영상은 책에 나온 예제 실습 동영상이다.
파이썬 언어의 기본적인 것들은 빼고 121p까지의 예제 중에
필요한 부분만 동영상으로 만들었다.

예제 실습 동영상

이전글 -

이후글 - 2021/01/31 - [책들] - [파이썬 증권 데이터 분석] Numpy, Pandas, Matplotlib ~ 142p

 

블로그 이미지

두리뭉실 두리뭉실:해피파인더그룹

컴퓨터 코치 두리뭉실

댓글을 달아 주세요

이번에 볼 책들

 

며칠 전에 '워드프레스' 책 체험단 신청했는데 안됐다.
인터넷 검색해서 하면 그래도 어느 정도는
할 수 있지만, 조금 빠르게 체계적으로 입문하려고
책을 구매했다. 

 

홍마리오의 워드프레스 입문 + 실전(종합편) 유형별 4가지 웹사이트 만들기 + SEO·웹사이트 수정

홍마리오의 워드프레스 입문+실전(종합편) 책은 4가지 유형의 웹사이트를 직접 제작한 후 그 웹사이트가 잘 검색되도록 SEO(검색엔진최적화) 실습과 사이트 튜닝 실습을 친절하게 설명했다.이 책

www.yes24.com

 

또 다른 책을 구입을 했다. 파이썬을 배웠는데 딱히 뭔가 없다.
그래서 그 뭔가를 해보려고 '파이썬 증권 데이터 분석' 책을
구매했다. 분석 책이기 때문에 단지 파이썬을 배우고자
이 책을 선택을 한다면 안된다. 데이터 분선을 위한 툴로
파이썬을 사용한 것뿐이기 때문이다.

 

파이썬 증권 데이터 분석

투자 기법과 프로그래밍 기술로 자신만의 퀀트 투자 시스템을 완성하라『파이썬 증권 데이터 분석』은 웹 스크레이핑으로 증권 데이터를 주기적으로 자동 수집, 분석, 자동 매매, 예측하는 전

www.yes24.com

 

두 책으로 얼마 동안은 정신없이 보낼 듯.

'STUDY' 카테고리의 다른 글

[개인 스터디] 워드프레스 그리고 주식을 위한 도구  (0) 2021.01.29
블로그 이미지

두리뭉실 두리뭉실:해피파인더그룹

컴퓨터 코치 두리뭉실

댓글을 달아 주세요