We will find a way. We always have.

고려대학교에서 인공지능과 금융공학을 연구하고 있는 어느 대학원생의 블로그입니다.

전체 글 29

트레이딩 전략 정리 방향 - 매매 기준과 시각화 예시

요즘 바빠서 시스템 트레이딩 관련 포스팅을 많이 못 올렸다. 계속 공부하고 있지만, 정리하여 글을 쓰기엔 시간이 많이 들어서 못 올리고 있었다. 지금까지 RSI나 MFI와 같은 기술적 지표도 공부하고, 백테스팅(Backtesting) 하기 위한 시스템도 만들어두고 여러가지 일을 했다. 앞으로 공부하고 있는 전략을 아카이빙할 겸, 정리해서 계속 올릴 예정이다. 일단 기본적인 MACD나 볼린저 밴드와 같은 지표들로 매매하는 방법부터 포스팅할 예정이다. '자동으로 고수익을 창출하는 주식투자(로런스 벤스도프 지음, 시크릿 하우스)'을 참고하면 아래와 같이 12가지 기준을 통해서 시스템을 만들어갈 수 있다. 자동으로 고수익을 창출하는 주식 투자 N digital.kyobobook.co.kr 1. 목표 2. 믿음 ..

[개발] 949회까지 로또 번호 빈도에 대한 분석

미래에셋대우 인턴이 끝날 무렵, iOS 개발에 관심이 있는 친구랑 함께 토이프로젝트로 앱 개발을 해보기로 했습니다. 아이디어는 간단하게 로또 번호 생성해주는 앱을 만들어보자고 했습니다. 사실 로또 번호를 생성하여 예측하여 1등을 바라자는 요행이 아니라, 단순히 토이프로젝트였기 때문에 가장 구하기 쉬운 데이터였기 때문입니다. 일단 분석에 앞서 데이터가 필요했습니다. 로또 데이터를 가져오는 방법은 정말 간단했습니다. 로또6/45 - 회차별 당첨번호 949회 당첨결과 (2021년 02월 06일 추첨) 당첨번호 14 21 35 36 40 44 949회 순위별 등위별 총 당첨금액, 당첨게임 수, 1게임당 당첨금액, 당첨기준, 비고 안내 순위 등위별 총 당첨금액 당첨게임 수 1게임 dhlottery.co.kr 동행..

기타(etc) 2021.02.12

[개발] 지금까지 만든 매매 프로그램

안녕하세요 지금까지 너무 바빠서 대신증권 API를 이용해서 자동 매매와 관련된 개발과 관련해서 포스팅을 자주 하지 못했네요. 그래도 짬짬히 개발한 결과를 잠깐 보여드리겠습니다. 생각보다 많이 발전된 것은 없지만, 그래도 이전에 계좌를 확인하고 수익률을 확인만 하던 프로그램에서 지금은 (수동이긴 하지만) 매수/매도와 같은 주문도 넣을 수 있게 추가를 했고 장 시간이 아니면 주문이 들어가지 않게끔까지도 추가해봤습니다. 물론 아직까지 전략은 상상도 못했습니다. 맨날 말로만 인공지능으로 시장을 모델링해서 절대 수익을 찾아내겠다고 말은 했지만, 솔직히 개발을 많이 해본적이 없는 저는 이렇게 간단하게 보이는 매매 시스템도 정말 엄청난 코드가 필요하다는 걸 이번에야 알았네요. 특히 매매 시스템 관련한 코드 중에서 수..

[공모전] 내가 이번 빅콘 2020 결선에서 떨어진 이유

오늘 홈페이지를 들어가니 결과가 나왔다. 이번 빅콘은 불합격했다. 작년 2019년 빅콘테스트 최우수상까지 받은 나로서는 조금 당황스러웠다. 사실 작년에 받은 상으로 인한 자만심이 있었던 것은 아닐까 생각한다. 당연히 이번 결선도 붙을 것이라고 생각했기 때문이다. 열심히 반성하고 있다. 빅콘테스트 기업에서 실제 보유하고 있는 데이터를 자유롭게 활용하여 새로운 비즈니스 모델 및 참신한 아이디어를 제시하고, 빅데이터 인재발굴을 통한 청년 취업 기회를 제공 www.bigcontest.or.kr 나름 데이터 분석을 한다고 생각했는데, 심사위원들은 다르게 생각했나보다. 실패는 성공의 어머니라고 하지 않는가. 이번을 계기로 다시 발전할 수 있도록 실패수기를 담아본다. 특히 준비 과정에서부터 결선 심사까지 이야기를 담..

[리뷰] 심층 강화학습 인 액션

강화학습을 처음 막상 공부하려고 하면 머신러닝이나 딥러닝과 비교하면 생각보다 책이나 자료가 많이 없습니다. 교보문고에서 검색해보면 체감할 수 있습니다. 2020년 11월 23일 기준으로 시중에 출판되고 있는 강화학습 책을 정리하면 다음과 같습니다. 바닥부터 배우는 강화학습 (노승은 / 영진닷컴) 파이썬과 케라스를 이용한 딥러닝/강화학습 주식투자 (퀀티랩 / 위키북스) 수학으로 풀어보는 강화학습 원리와 알고리즘 (박성수 / 위키북스) 단단한 강화학습 (리처드 서튼, 앤드류 바르토 / 제이펍) 파이썬과 케라스로 배우는 강화학습 (이웅원 외 4명 / 위키북스) PyTorch를 활용한 강화학습 / 심층강화학습 실전 입문 (오가와 유타로 / 위키북스) 강화학습 첫걸음 (아서 줄리아니, 한빛 미디어) 기초부터 시작..

[MATLAB] 6강 - 사용자 정의 함수

여기에서 정리하는 모든 내용은 고려대학교 문인식 교수님의 '뇌공학프로그래밍입문(INTRODUCTION TO PROGRAMMING FOR BRAIN AND COGNITIVE ENGINEERING)' 강의록을 정리한 내용입니다. 해당 내용에 대한 모든 저작권은 문인식 교수님께 있음을 확인하시길 바랍니다. 지난 시간까지 프로그래밍을 하는데 있어서 가장 중요한 조건문과 반복문을 배웠습니다. [MATLAB] 4강 - 조건문 여기에서 정리하는 모든 내용은 고려대학교 문인식 교수님의 '뇌공학프로그래밍입문(INTRODUCTION TO PROGRAMMING FOR BRAIN AND COGNITIVE ENGINEERING)' 강의록을 정리한 내용입니다. 해당 내용에 대한 모든 저. minsuksung-ai.tistory...

[MATLAB] 5강 - 반복문

여기에서 정리하는 모든 내용은 고려대학교 문인식 교수님의 '뇌공학프로그래밍입문(INTRODUCTION TO PROGRAMMING FOR BRAIN AND COGNITIVE ENGINEERING)' 강의록을 정리한 내용입니다. 해당 내용에 대한 모든 저작권은 문인식 교수님께 있음을 확인하시길 바랍니다. 지난 시간까지는 프로그래밍에서 가장 중요한 조건문과 반복문 중에서 조건문을 다루는 법을 배웠습니다. MATLAB에서 기존의 언어들과 비슷하게 if/else 문을 통해서 한다는 점을 확인할 수 있었고 조금 특이한 점은 조건문의 마지막에 end로 마무리해야 한다는 점입니다. [MATLAB] 4강 - 조건문 여기에서 정리하는 모든 내용은 고려대학교 문인식 교수님의 '뇌공학프로그래밍입문(INTRODUCTION TO..

[MATLAB] 4강 - 조건문

여기에서 정리하는 모든 내용은 고려대학교 문인식 교수님의 '뇌공학프로그래밍입문(INTRODUCTION TO PROGRAMMING FOR BRAIN AND COGNITIVE ENGINEERING)' 강의록을 정리한 내용입니다. 해당 내용에 대한 모든 저작권은 문인식 교수님께 있음을 확인하시길 바랍니다. 지난 시간까지는 매트랩(MATLAB)에서의 입력과 출력을 간단하게 배워봤습니다. 이번 시간에서는 프로그래밍에서 가장 중요하다고 말할 수 있는 조건문을 알아보도록 하겠습니다. 3강 - 입력과 출력 여기에서 정리하는 모든 내용은고려대학교 문인식 교수님의 '뇌공학프로그래밍입문(INTRODUCTION TO PROGRAMMING FOR BRAIN AND COGNITIVE ENGINEERING)' 강의록을 정리한 내용..

[MATLAB] 3강 - 입력과 출력

여기에서 정리하는 모든 내용은고려대학교 문인식 교수님의 '뇌공학프로그래밍입문(INTRODUCTION TO PROGRAMMING FOR BRAIN AND COGNITIVE ENGINEERING)' 강의록을 정리한 내용입니다. 해당 내용에 대한 모든 저작권은 문인식 교수님께 있음을 확인하시길 바랍니다. 지난 시간까지는 매트랩(MATLAB)에서 벡터(Vector)와 행렬(Matrix)를 다루는 법을 배웠습니다. 기존 파이썬을 배우신 분들은 조금 문법이 혼란스러웠을 수 있지만, 어렵지 않게 넘어가셨을 겁니다. 2강 - 벡터와 행렬 여기에서 정리하는 모든 내용은 고려대학교 문인식 교수님의 '뇌공학프로그래밍입문(INTRODUCTION TO PROGRAMMING FOR BRAIN AND COGNITIVE ENGINE..

[MATLAB] 2강 - 벡터와 행렬

여기에서 정리하는 모든 내용은 고려대학교 문인식 교수님의 '뇌공학프로그래밍입문(INTRODUCTION TO PROGRAMMING FOR BRAIN AND COGNITIVE ENGINEERING)' 강의록을 정리한 내용입니다. 해당 내용에 대한 모든 저작권은 문인식 교수님께 있음을 확인하시길 바랍니다. 지난 시간까지는 MATLAB의 기본 문법에 대해서 알아보았습니다. 이번 시간에는 MATLAB으로 벡터와 벡터를 다루는 법에 대해서 간단하게 알아보도록 하겠습니다. 1강 - MATLAB 설치 및 기초 문법 여기에서 정리하는 모든 내용은 고려대학교 문인식 교수님의 '뇌공학프로그래밍입문(INTRODUCTION TO PROGRAMMING FOR BRAIN AND COGNITIVE ENGINEERING)' 강의록을 ..

[MATLAB] 1강 - 설치 및 기초 문법

여기에서 정리하는 모든 내용은 고려대학교 문인식 교수님의 '뇌공학프로그래밍입문(INTRODUCTION TO PROGRAMMING FOR BRAIN AND COGNITIVE ENGINEERING)' 강의록을 정리한 내용입니다. 해당 내용에 대한 모든 저작권은 문인식 교수님께 있음을 확인하시길 바랍니다. 일단 MATLAB이 무엇인지 어디에 쓰이는건지에 관한 원론적인 내용은 건너뛰고 빠르게 설치 및 기초 문법에 대해서 알아보겠습니다. MATLAB 설치는 저의 경우 기본적으로 학교 메일 계정(@학교이름.ac.kr)이 있다면 사용할 수 있습니다. 저와 같이 교육용 라이센스를 사용하지 못하시는 분들은 따로 구매하셔야 사용하실 수 있습니다. MATLAB 및 Simulink 구입 방법 - MathWorks 나라 선택 ..

[예제] 대신증권API를 이용한 트레이딩 시스템 - 데이터 요청 방법 2가지 BlockRequest 와 Request 방식 비교하기

안녕하세요 성민석입니다. 진행하는 튜토리얼의 모든 코드는 대신증권 사이보스플러스 자료실에서 제공하는 걸 기반으로 만들었습니다. 그리고 여기에 사용된 모든 코드는 저의 GitHub에서 확인하실 수 있습니다. 지난 시간에는 대신증권API를 통해서 예수금 가져오기에 대해서 알아보았습니다. 이 때 제가 대신증권API를 통해서 데이터를 받아오는 방법이 사뭇 다르다는 걸 깨닫고 대신증권에서 제공하는 튜토리얼을 한번 공부하고자 합니다. [개발] 대신증권API를 이용한 트레이딩 시스템 - 예수금 가져오기 안녕하세요 성민석입니다. 진행하는 튜토리얼의 모든 코드는 대신증권 사이보스플러스 자료실에서 제공하는 걸 기반으로 만들었습니다. 그리고 여기에 사용된 모든 코드는 저의 GitHub에서 확인 minsuksung-ai.ti..

[개발] 대신증권API를 이용한 트레이딩 시스템 - 예수금 가져오기

안녕하세요 성민석입니다. 진행하는 튜토리얼의 모든 코드는 대신증권 사이보스플러스 자료실에서 제공하는 걸 기반으로 만들었습니다. 그리고 여기에 사용된 모든 코드는 저의 GitHub에서 확인하실 수 있습니다. 지난 시간에는 주식의 현재가 조회에 대해서 알아보았습니다. [개발] 대신증권API를 이용한 트레이딩 시스템 - 주식 현재가 조회 안녕하세요 성민석입니다. 진행하는 튜토리얼의 모든 코드는 대신증권 사이보스플러스 자료실에서 제공하는 걸 기반으로 만들었습니다. 그리고 여기에 사용된 모든 코드는 저의 GitHub에서 확인 minsuksung-ai.tistory.com 이번 시간에는 본인 계좌의 잔고에서 예수금이 얼마큼 남아있는지 확인해보겠습니다. 시작에 앞서, 여기에 사용되는 모든 내용은 모의투자를 기반으로 ..

[PyTorch] model.zero_grad() 와 optimizer.zero_grad() 차이

코드를 짜다가 model.zero_grad()와 optimizer.zero_grad()의 차이를 정확히 몰라서 혼용하고 있었습니다. 그래서 헉!하는 마음으로 혹시나 지금까지 했던 학습이 물거품이 될까봐 찾아봤습니다. https://discuss.pytorch.org/t/model-zero-grad-or-optimizer-zero-grad/28426 Model.zero_grad() or optimizer.zero_grad()? Hi everyone, I have confusion when to use model.zero_grad() and optimizer.zero_grad()? I have seen some examples they are using model.zero_grad() in some exam..

Windows10에서의 CUDA 100% 설치

딥러닝을 하려고 하면 항상 CUDA 설치를 다시 해야합니다 (분명히 과거에 했었던 것 같은데...?) 그래서 다시 정리해두려고 한다. 일단 필요한 리스트는 아래와 같습니다. NVIDIA 그래픽 드라이버 NVIDIA CUDA NVIDIA cuDNN NVIDIA 그래픽 드라이버 저는 GTX 1080Ti를 사용하기 때문에 이거에 맞는 그래픽 드라이버를 설치해줬습니다. NVIDIA DRIVERS GeForce Game Ready Driver WHQL GeForce Game Ready Driver 버전: 456.38 WHQL 배포 날짜: 2020.9.17 운영 체제: Windows 10 64-bit CUDA 툴킷: 언어: Korean 파일 크기: 609.03 MB 사용자 가이드 제품 지원 목록 추가 정보 Game..

[고민] 대신증권API과 키움증권 API 사이에서

증권사 API를 사용한지 한달이 다 되가는데, 처음에는 키움증권API를 사용하는 예제가 많길래 키움증권으로 공부를 시작했습니다. 그러다가 선배의 권유로 대신증권 API도 사용해보기 시작했습니다. API를 활용하여 하고자 했던 목적은 정말 간단하게 데이터를 가져오기 위함이었습니다. 그러다가 거래량을 중심으로 트레이딩하는 모델을 만들어보자라는 생각이 들어 여기까지 오게 됐습니다. 주저리 주저리 떠들었는데, 키움증권 API와 대신증권 API 각각 모두 장당점이 있다는 걸 알게 되었습니다. 기술적으로 자세한 내용은 퀀티랩(QuantyLab)이라는 블로그에서 잘 정리해두었습니다. 여기서 확인해보시면 될 것 같습니다. 간단하게 설명하자면 키움증권API는 OCX방식이고, 대신증권API는 COM이란 방식이라고 합니다...

어떤 클라우드를 써야할까?

재작년부터 본격적으로 클라우드를 사용하기 시작했습니다. 윈도우(Window)와 맥(macOS) 그리고 우분투(Ubuntu)까지 사용하는 유저로서, 단도직입적으로 정리하자면, 일단 아래와 같은 순서로 추천드립니다. 원 드라이브(One Drive) 구글 드라이브(Google Drive) 아이클라우드(iCloud) 아직까지 드랍박스(Dropbox) 사용한다거나 혹은 개인용 나스(NAS)를 구축해서 사용해보진 않았습니다. (네이버 클라우드나 혹은 다른 클라우드는 논외로 하겠습니다.)하지만 개인용 나스는 빠른 시일내로 구축하게 될 것 같습니다. 위 순서대로 각 드라이브의 특징과 가격과 같은 장단점을 간단하게 나열해보겠습니다. 사용하시는데 도움되시길 바랍니다. 원 드라이브(One Drive) 원 드라이브는 솔직히 ..

기타(etc) 2020.09.21

[개발] 대신증권API를 이용한 트레이딩 시스템 - 주식 현재가 조회

안녕하세요 성민석입니다. 진행하는 튜토리얼의 모든 코드는 대신증권 사이보스플러스 자료실에서 제공하는 걸 기반으로 만들었습니다. 그리고 여기에 사용된 모든 코드는 저의 GitHub에서 확인하실 수 있습니다. 지난 시간에는 종목정보를 구하는 예제를 살펴보았습니다. [개발] 대신증권API를 이용한 트레이딩 시스템 - 종목정보 구하는 예제 안녕하세요 성민석입니다. 진행하는 튜토리얼의 모든 코드는 대신증권 사이보스플러스 자료실에서 제공하는 걸 기반으로 만들었습니다. 그리고 여기에 사용된 모든 코드는 저의 GitHub에서 확인 minsuksung-ai.tistory.com 목적 주식 현재가 조회하는 예제 이번에는 정말 간단하게 주식 현재가를 조회하는 예제입니다. 저번 시간과 마찬가지로 아래와 같은 코드로 대신증권 ..

[개발] 대신증권API를 이용한 트레이딩 시스템 - 종목정보 구하는 예제

안녕하세요 성민석입니다. 진행하는 튜토리얼의 모든 코드는 대신증권 사이보스플러스 자료실에서 제공하는 걸 기반으로 만들었습니다. 그리고 여기에 사용된 모든 코드는 저의 GitHub에서 확인하실 수 있습니다. 목적 종목정보 구하기 대신증권 사이보스플러스 자료실에서 공부한 첫번째 예제는 3000여개의 코스닥과 코스피의 종목코드를 가져오는 예제입니다. 일단 아래의 코드로 간단하게 사이보스플러스의 연결 여부 체크를 해줍니다. import win32com.client # 연결 여부 체크 objCpCybos = win32com.client.Dispatch("CpUtil.CpCybos") bConnect = objCpCybos.IsConnect if (bConnect == 0): print("PLUS가 정상적으로 연결..

[개발] 대신증권API를 이용한 트레이딩 시스템 - 개발 환경 설정

대부분의 사람들이 처음 개발을 접할 때 느끼는 점 중 하나는 바로 개발 환경 세팅이라고 생각한다. 이러한 개발 환경이 개발의 절반이라고 할만큼 굉장히 중요한 부분이다. 개발 환경을 제대로 세팅하지 못하면 아무것도 진행할 수 없다. ( 물론 일부는 환경이고 나발이고 라이브러리 버전에 맞춰서 프로그램만 돌아가면 된다고 말하는 사람도 있다 ) 일단 대신증권 API를 활용하기 위해서 Python 3.7 (32bits) 를 맞춰줘야 한다. 처음 API를 이용하려고 할 때 이 부분에서 고생을 너무 많이 했는데, Anaconda를 통해서 새롭게 가상환경을 생성하여 진행하는게 제일 깔끔했던 것 같다. 장담컨대, 32bit라는 조건을 무시한다면 영문 모를 무한 에러에 갇혀 있는 자신을 발견할 것이다. 이제 대신증권 홈페..