728x90


시스템 트레이딩용 DB 구축을 위하여  MySQL 를 사용합니다. 

DB (Database) 는 데이터 저장 공간으로 여러 사용자나 응용프로그램이 동시에 접근 가능합니다. 이러한 DB는 DBMS (DataBase Management System) 을 이용하여 관리하고 운영하게 되며, MySQL  은 관계형 DMBS 에 속합니다.  

관계형 데이터베이스란? (위키피디아 참조) 

키(key)와 값(value) 들의 간단한 관계를 테이블화 시킨 매우 간단한 원칙의 전산정보 데이터 베이스 


SQL 용어관계형 데이터베이스 용어설명
로우튜플 또는 레코드하나의 항목을 대표하는 데이터
컬럼속성(어트리뷰트, attribute) 또는 필드튜플의 이름 요소 (예: "주소", "태어난 날짜")
테이블관계 또는 기초 관계변수(base relvar)같은 속성을 공유하는 튜플의 모임. (컬럼이나 로우의 모임.)
 또는 결과 집합파생 관계변수(derived relvar)튜플들의 모임. (질의어에 응답하는 RDBMS의 데이터 보고서)


데이터베이스 도식화 

아래 사이트는 Microsoft 사의 Visio 와 유사한 Drawing tool 로 Web 에서 작업이 가능합니다. 로컬에서 작업하는 것이 아니기 때문에 네트워크만 연결된다면 어디서든 작업할 수 있다는 장점이 있습니다. 생각보다 느리지 않고 다양한 Shape 들을 제공해주고 있어서 원하는 DB 와 같은 관계도를 그리기에 편리합니다. 

링크 : https://www.draw.io/



시스템 트레이딩에 사용할 시스템 구축을 위한 DB 구조 

먼저, "종목  리스트" Table 을 생성 합니다.  

각 종목에 해당되는 "종목별 날짜별 거래 내용" Table 은  현재로부터 2년전까지 수집 합니다. DB 생성 후에는 매일  거래 내용을 Record 에 추가 합니다. 

최근 1개월 간의 "5분봉 거래 내용" Table 을 추가 하고, "종목별 날짜별 거래 내용" Table 과 일대다(one-to-many) 관계(relationship) 를 설정합니다. 

추가적으로 "뉴스 & 공시" Table 을 생성하고, "종목 List" Table 과 일대다 관계를 설정합니다. "종목별 날짜별 거래내용" Table 과는 날짜 Attribute 로 관계를 설정합니다. 



파이썬을 이용하여 DB 를 구축하는 방법 

1) MySQL 설치 

  - MySQL Download :  https://dev.mysql.com/downloads/
  



 Windows 에 설치 방법은 자세히 설명되어 있는 다른 블로그를 참조하였습니다.     

2) 파이썬에 PyMySQL 모듈 설치 

   2-1) Anaconda  3.7 Version 을 설치 (Kiwoom 증권사 API 를  사용할 것을 대비하여 32-bit 버전으로 설치함) 
 



   2-2) Pycharm 설치 
      Community 버전은 무료로 사용 가능하지만, 아래 그림과 같이 Professional Edition 에서만 Database & SQL support 가 가능하다고 하여 저는 Professional Edition  을 사용하였습니다. 


   2-3) 터미널 창을 열어서 Pip 명령어로 PyMySQL 라이브러리를 설치합니다. 

Anaconda 를 올바르게 설치가 되어 환경변수 PATH 에 python 경로가 제대로 설정되어 있다면, Terminal 에서 pip 명령어를 이용하여 설치가 가능합니다. 

명령어 : pip install pymysql 

저는 이미 설치가 된 상태이므로 위와 같은 결과가 나타납니다.  


3) MySQL 에 Database 생성 

mysql 이 제대로 설정되었으면, Terminal 에서 'mysql' 명령어를 사용할 수 있습니다. 만약 mysql 명령어를 입력할 수 없다면 아래와 같이 환경변수에 bin 위치를 추가해 줍니다. 


mysql 명령어를 이용하여 아래와 같은 명령어 입력합니다. 


사용한 옵션은 아래와 같습니다.

  -h, --host=name     Connect to host.

  -u, --user=name     User for login if not current user.

  -p, --password[=name]

                      Password to use when connecting to server. If password is

                      not given it's asked from the tty.



4) MySQL 에 Table 생성 

Table 생성은 Terminal 내에서도 가능하고, 아래와 같이 Python code 내에서도 실행이 가능 합니다.  
MySQL 관련 문법은 아래 링크를 참조하였습니다. 
## Table 생성
try:
sql = '''CREATE TABLE IF NOT EXISTS companyList(
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
mgroup VARCHAR(20) NOT NULL,
mcode char(6) NOT NULL,
mname VARCHAR(200) NOT NULL)
'''
cur.execute(sql)
except:
print("companyList Table 이 이미 DB 에 존재합니다.\n")

5) Table 에 내용 저장하기 

증권사 API 를 이용할 수도 있지만, 한번에 읽어들일 수 있는 정보가 제한적이라 웹 크로링을 통해서 정보를 수집합니다. 

수집된 정보는 MySQL 명령어를 이용하여 DB에 저장합니다. 




728x90
728x90


시스템 트레이딩이란 무엇일까요? 

링크: https://www.nhqv.com/help_wooritrader/system1.html

 과거 가격 및 거래량 데이터에 근거하여 만든 매매규칙에 따라 컴퓨터를 이용, 지속적으로 거래하는 매매방법입니다.

매매 아이디어나 전략을 체계화하여 그것을 과거 기간 동안의 가격 자료로 검증한 후 그 성과를 분석합니다.
분석한 후 그 성과가 좋으면 시장에 적용하여 사용하는 것이며, 성과가 나쁘면 어떠한 부분에 오류가 있었는지 판단하여 전략을 수정하게 됩니다.


아래는 제가 생각하는 시스템 트레이딩의 장,단점 입니다. 


시스템 트레이딩의 장점 

- 감정에 휘둘리지 않고 매매 할 수 있음 

- 회사를 다니면서도 데이 트레이딩이 가능함  

- 어떤식으로 투자할지가 결정되면 과거 데이터 기반에서 수익이 나는지 시뮬레이션 가능함 

단점은? 

- 과거의 데이터를 기반으로 수학, 컴퓨터, 통계, 물리학등을 바탕으로 현재를 예측해야 함 (=퀀트) 
  하지만, 과거의 경험이 현재에도 반영한다는 보장은 없음 

- 다양한 상황들에 대해 예측할 수 없음. 상황에 따라 적용 가능한 로직을 개발해야 하는데 이 과정이 매우 어려움  




시스템 트레이더의 유형은? 

링크 : https://www.nhqv.com/help_wooritrader/system1.html

1st Stage

자유 재량적 트레이더(The Discretionary Trader) 
자신의 본능과 직관, 주위의 조언, 신문속보,루머등 계수화 할 수 없는DATA를 가지고 매순간 직감에 따라 뇌동매매 하는 단계로 충분히 돈을 잃고 나서 기술적 지표에 대한 관심을 가지게 되는 트레이더 초기단계

2nd Stage

기술적 트레이더(The Technical Trader) 
기술적 지표 등 개인적인 객관적 규칙을 이용하여, 수익성을 보장하는 지표와 언제 어디서 사고 팔아야 할지를 예측하기 위해 보조지표 중심으로 연구하기 시작하는 단계로 손절매 기법의 가치와 위험관리의 중요성을 배우게 되는 트레이더 단계

3rd Stage

시스템 기반 트레이더(The System Trader) 
계수화 할 수 있는 과거 데이터를 백테스트 해서 검증된 객관적인 시장진입 및 청산규칙을 사용하여 매매시스템을 이용하며, 자신의 성격에 맞는 시스템 트레이딩 기법을 찾기 위해 다양한 시도를 하는 트레이더 단계

4th Stage

완벽한 시스템 트레이더(The Complete System Trader)
지속적인 수익률 유지를 위한 단계 더 발전된 현금관리 규칙을 사용하고 시장특성에 따른 다수의 시스템 포트폴리오를 구성하여 시스템 트레이딩을 하며, 정교하고 다양한 스톱 설정에 많은 시간을 할애하는 트레이더 단계

한 단계 진화를 위한 솔루션

"5 Golden Rules" 
지속적인 수익률 유지를 위한 단계 더 발전된 현금관리 규칙을 사용하고 시장특성에 따른 다수의 시스템 포트폴리오를 구성하여 시스템 트레이딩을 하며, 정교하고 다양한 스톱 설정에 많은 시간을 할애하는 트레이더 단계

stop loss 없는 진입 금지

위험 보상율이 50% 이상인 경우에만 매매

지나친 레버리지 금지

달성이 가능한 현실적인 목표 설정

손실이 발생해도 치명적이지 않은 범위 내의 자금 매매



시스템 트레이딩을 위한 시스템 구축은 주식관련 Data 를 수집하는 것부터 시작됩니다. 가장 좋은 방법은 증권사 API를 이용하는 것이지만, API 의 요청 횟수를 제한하고 있기 때문에 초기 시스템 구축을 위한 대량 Data 요청은 웹을 스크래핑하여 획득 합니다.  

다음 금융 사이트다음 금융 사이트


1. 웹에서 KOSPI 전 종목의 주식 정보를 스크래핑하여 DB 에 저장  ( 다음 or 네이버 금융 사이트 이용

1) 날짜, 종가, 전일비, 시가, 고가, 저가, 거래량 

2) 외국인 지분율, 순매수량  

3) 기관 순매수량 

4) 공매도 거래량, 잔고수량, 거래대금, 잔고금액 

5) 뉴스, 공시 

6) 시간별 투자주체별 매매 동향 


2. 웹에서 얻지 못하는 정보 증권사 API를 사용해야 하는 내용 (키움증권 Open API 이용

1) 종목별 증권사순위요청 (opt10038)

2) 종목별 투자자 기관별 합계 요청 (opt10061) 

3) 종목별 투자자 기관별 차트 요청 (opt10060)  --> 당일별 개인 투자자 순매수 확인 

4) 증권사별 종목 매매 동향 요청 (opt10078) 

5) 주식 분봉차트 조회 요청 (opt10080) 

6) 주식 외국인 요청


KOSPI 종목들의 주식 정보들은 Local 의 DB에 저장하여 로직의 테스트 용으로 사용할 계획 입니다. 이때 DB 는 MySQL 를 사용하며 아래 포스팅에서 이어 설명합니다. 

2018/09/21 - [주식/시스템 트레이딩] - 시스템 트레이딩을 위한 DB 구축




728x90

'주식 > 시스템 트레이딩' 카테고리의 다른 글

시스템 트레이딩을 위한 DB 구축  (0) 2018.09.21
어떤 주식을 거래해야 하나  (0) 2018.08.25
728x90

"외국인 연속 순매수한 종목 따라 사기" 방법을 이용하여 선택한 LG유플러스가 예상과는 다르게 점점 떨어지기만 합니다 

2018/08/25 - [주식/시스템 트레이딩] - 어떤 주식을 거래해야 하나



그렇다면 외국인 순매수가 지속되는 이유가 무엇일까? 생각중에 머니투데이 (18.09.11) 에서 아래와 같은 기사가 나왔네요. 

https://finance.naver.com/news/news_read.nhn?mode=mainnews&office_id=008&article_id=0004103996

기사에서는 외국인이 LG유플러스를 사는 이유를 배당금 때문인것처럼  말하고 있는데 (물론 MSCI 지수편입 이 가장 큰 이유 ㅎ), 그렇다면 실제로 배당금은 몇 %로 받았을까 ? 

지난 한 달동안 외국인이 가장 많이 사들인 종목은 LG유플러스로 2862억원 어치를 매수했다. LG유플러스는 지난해 주당 배당금을 기존 350원에서 400원으로 50원 올리는 등 분기별 배당 성향을 강화하고 있다. 지난해 기준 배당수익률은 2.86% 수준이다.

삼성전자는 외국인이 1666억원 가량을 사들여 최근 한달간 LG유플러스에 이어 두번째를 차지했다. 삼성전자는 3분기 실적 개선과 함께 배당금 증가가 기대되는 종목인 만큼 자금이 몰린 것으로 분석된다. 매년 배당금을 증가하고 있고 올해 총 배당금인 9조6000억원 중 약 4분의 1이 이번 분기에 배당될 것으로 보인다.



배당주 확인하는 방법은? 

아래 링크의 다음 금융 페이지로 이동한 다음에 상단탭의 "투자정보"를 눌러줍니다. 이후에 왼쪽 리스트에서 "배당" 을 눌러줍니다.  

http://finance.daum.net/index.daum?nil_profile=title&nil_src=stock


이후에 아래와 같이 "시가 배당률"을 눌러 배당률 높은 종목 순으로 정렬할 수 있습니다.  


배당 받는 방법은? 

http://news.mk.co.kr/newsRead.php?sc=30000001&year=2018&no=335273

주주 친화 정책의 일환으로 오는 6월 중간배당에 나서려는 기업이 늘고 있다. 전문가들은 중간배당을 하는 기업은 보통 현금흐름이 안정적인 데다 연말배당도 높게 하는 경향이 있어 주목해야 한다고 조언했다. 특히 시장에선 실적 개선 가능성이 높은 고배당주라면 주가 역시 동반 상승할 가능성이 높다는 의견이 나온다.  

중간배당이란 회계연도 중간에 이익을 나눠주는 것을 말한다.    

다만 6월 중간배당을 받으려면 배당 기준일인 6월 30일로부터 이틀 전인 6월 28일까지 해당 주식을 보유하고 있어야 한다. 27일 금융투자업계에 따르면 현재 증권사들은 코스피200에 편입된 종목 중 16~17개 기업이 6월 중간배당을 실시할 것으로 예상했다. 종목별로는 일단 삼성전자가 지난해 2분기 때보다 배당 규모를 늘릴 가능성이 높다는 관측이다. 유안타증권과 NH투자증권은 삼성전자의 2분기 예상 주당배당금(354원)이 전년 동기(140원)보다 2배 이상 늘어날 것으로 내다봤다. 지난 1분기 중간배당금은 주당 1만7700원(액면분할 시 주당 354원)이었다. 


정리하면, 

1) 해당 종목이 배당주인지 확인한 후에 결산일을 알아야 합니다. 

2) 결산일 최소 2일전에는 주식을 가지고 있어야 합니다. (D-2)

3) 결산일 전날에 매동해도 배당은 받을 수 있습니다. (D-1) 

4) 2~3개 이후에 정기총회 후에 증권계좌에 배당금을 입금 시켜 줍니다. 

   - ex) 12월 법인은 2~3월중에 정기총회후에 배당 받음 


배당은 통신이나 은행주 등 에서 일반적으로 실시한다고 합니다. 


배당락 이란? 

결산일 이후에 배당으로 인해 발생하는 자가의 하락을 나타 냅니다.

아래 블로그에서 왜 그런지 자세히 설명되어 있는데, 참고하시면 좋겠습니다.  

http://politicstory.tistory.com/1074


중요한 점은 배당락에 의해 하락한 주가는 대개 과거 가격으로 회복한다고 합니다. (배당락 시점의 매수 타이밍을 노력볼만 하겠습니다.) 

728x90
728x90

직장인으로써 월급 말고 수입이 생길수 있는 곳은 주식밖에 없다고 생각합니다. 

그렇다고 매일 주식창을 들여다 볼 수도 없고, 주식을 전문적으로 하는 분들에 비해 정보도 턱 없이 부족할 것이기 때문에 제대로된 수익을 얻을 수 없을 것입니다.  

아래 기사만 봐도 충분히 알 수가 있죠 ~ 

 http://biz.chosun.com/site/data/html_dir/2017/03/06/2017030603181.html

 

개인 투자자는 통계적으로도 손실을 본다는 사실을 알 수 있지만, 반대로 외국인 투자자의 투자 방식을 따라하면, 수익을 얻을 수 있지 않을까 라는 생각이 들었습니다. 

(기사에서 발췌한 아래 그림을 참조 바랍니다)

개미 입장에서 큰 파도의 움직임을 파악할 수 없지만, 파도가 좋은 곳으로 데려간다고 한다면 파도가 이끌어 가는곳으로 몸을 맡기면 되겠죠 ~   

물론 외국인투자자 처럼 저점에서 매수할 수 없을 뿐만 아니라 장중에 사고팔수 없는 때문에 저렇게 높은 수익률은 불가능 하겠지만, 감으로 하는 것보다는 손해는 덜하지 않을까 하는 생각이 들었습니다. 

 

 

외국인 투자자가 현재 집중하는 종목을 확인하는 방법은 다음 금융 웹페이지에서 정보를 얻었습니다. 

http://finance.daum.net/quote/signal_foreign.daum?stype=1&type=buy&col=continue_day&order=desc&gubun=F 

위에서 볼 수 있듯이 외국인 순매수가 지속된 종목이 여러 종목인데, 소액으로 투자하는 입장에서는 이중에서 제대로된 1~2개 종목을 고르는 것이 중요하다고 생각했습니다.   

저는 지분변화율이 높은 순으로 정렬하여 상위 20개 종목중에서 두가지 조건을 추가하여 마음에 드는 종목 1~2개를 선정하였습니다.  

개인 매수자는 감소 종목 
패턴이 우상향인 종목 

 

선택된 종목을 거래하기 앞서, 내가 생각한 가설이 실제 거래에서 얼마나 수익이 발생할 수 있는지 시뮬레이션이 필요하다고 생각합니다. 

그래서 Pandas Library 를 이용하여 Python 으로 종목 분석 프로그램 개발을 해보기로 하였습니다. 

프로그램 전공자가 아니라서 걱정이 앞서지만 꾸준히 해봐야겠네요 ~ 


2018.08.31 포스팅 내용을 업데이트 하였습니다. 

2018/08/31 - [시스템 트레이딩] - 투자 방식 보안 -2


 

 

728x90

+ Recent posts