제 블로그를 보신분들은 아시겠지만 저는 알고리즘이 자동으로 투자를 해 준다는 상품들에 굉장히 관심이 많습니다. 아래 포스팅에서 소개를 했었던 불리오에 투자를 하고 있고 요즘 TV에서 광고를 하고 있는 AIM 도 경험 삼아서 해보고 있습니다.

https://iamaman.tistory.com/2071

제가 개인적으로 이런 서비스를 이용하는 이유는 일단 개인적으로 투자에 대한 호기심이 굉장히 커서 일단 새로운 것들은 한 번씩 과감하게 해 보는 편입니다. 두번째로는 아직까지도 포트폴리오에 대한 저 나름의 가치 판단 기준이 없기 때문입니다. 각각의 상황에서 해당 상품들의 투자 알고리즘들이 포트폴리오를 어떻게 구성하는지를 엿보다 보면 조금 더 거시적인 경제적인 흐름에 대한 힌트를 얻게 되는 것 같습니다.

예를 들면 지난달까지의 불리오 포트폴리오에는 부동산 관련 상품인 리츠상품이 포함 되어 있었는데~ 12월 16일 부동산 대책이 발표 되어서 그런지 2020년 1월 포트폴리오에는 리츠 관련상품이 포트폴리오에서 배제가 되는 것을 볼 수가 있었습니다. 불리오 같은 서비스를 이용하지 않았다면 손해보고 있더라도 그냥 주구장창 리츠 펀드를 유지하고 있지 않았을까 하는 생각을 해봅니다. 마치 지금도 많은 사람들이 연금 저축 보험을 들어놓고 그냥 잘 몰라서 또는 귀찮아서 연금저축 펀드로 이전 신청을 안 하는 것처럼요.

개인적으로 MTS 나 HTS에서 개별 주식들을 검색하고 하는 것들은 이제는 어느 정도 하는 거 같은데~ 포트폴리오에 대한 구성과 리밸런싱 등에 대해서는 아직까지 정말 미천한 수준이라는 생각이 들었습니다. 이런 포트폴리오 구성 능력에 대한 갈증이 있던 중 알게 된 책이 오늘 제목에서도 소개한 “R을 이용한 퀀트 투자 포트폴리오 만들기” 입니다.

저는 소프트웨어 개발 일을 하고 있기 때문에 코딩에 대해서는 어느정도 알고 있고 C, Python, MATLAB, Autohotkey 등을 주로 사용하면서 R 이라는 컴퓨터 언어에 대해서도 들어 본 적이 있습니다. R 을 공부하기 위해서 굉장히 예전에 “R라뷰” 라는 언어 유희적인 이름을 가진 책도 하나 사 놨었는데~ R 이 딱히 제 현업에서 쓰지 않다보니 그냥 책장에만 던져 놓았었습니다.

이번에 “R을 이용한 퀀트 투자 포트폴리오 만들기” 책도 샀고 하니 R 프로그램에 대해서도 천천히 공부를 해보려고 합니다. 요즘에는 무언가를 공부하고 싶으면 먼저 유튜브를 찾아 보곤 하는데 R 프로그램 언어와 관련된 굉장히 좋은 채널이 있더군요.

datasciencelim 라는 채널이고 주소는 아래와 같습니다.

https://www.youtube.com/channel/UCY0N_BQjQfocV5xMxyudv2A

유튜브 뿐만이 아니라 아래 포스팅에서 소개를 했던 인프런이라는 사이트에서도 해당 내용을 찾을 수가 있었습니다. 역시 참 공부하기 좋은 세상이네요.

https://iamaman.tistory.com/2055

그럼 이제부터 시간 날 때마다 천천히 “R을 이용한 퀀트 투자 포트폴리오 만들기” 를 읽어보고 저만의 포트폴리오를 구성해 봐야겠네요. 그럼 다들 즐거운 투자 하시기 바랍니다.



요즘 많은 분들이 해외 드라마들을 즐겨 시청 할 텐데 최근에 저는 Humans 라고 하는 영국 드라마를 봤습니다. 4차 산업혁명 시대에 걸맞게 사람과 같은 감정이 있는 인공지능 로봇에 대한 이야기입니다. 현재 시즌 2까지가 방송 했는데 저는 정말 시간 가는 줄 모르고 봤네요.

현재 우리가 보고 있는 알파고나 포난자와 같은 인공지능은 약한 인공지능이라고 해서 특정 분야에 대하여 탁월한 성능을 내는 인공지능입니다. 사실 저는 개인적으로 인공지능이라는 말이 조금 거부감이 있긴 합니다. 그냥 제가 봤을 때는 고도화된 머신러닝 또는 딥러닝 알고리즘일 뿐인데 이것에 대해서 지능이 있다고 얘기를 하는게 맞는지 모르겠습니다.

휴먼스에 나오는 주인공들은 사람이랑 똑같이 생긴 안드로이드 로봇입니다. 휴먼스에 나오는 대부분의 로봇은 그렇지 않지만 주인공으로 나오는 로봇들은 사람과 똑같이 감정까지 가지고 있는 것이죠. 그리고 그들을 최초로 만든 인간이 숨겨놓은 코드를 온라인상에 뿌리면 감정이 없던 로봇들도 감정이 생기게 되고 그러면서 벌어지는 문제들에 대한 이야기입니다.

아래 포스팅에서 SK 누구 스피커를 사용한 로봇 밀그램 실험을 했었는데…. 사람이랑 똑같이 생기지 않음에도 불구하고 많은 사람들이 의인화를 하고 SK 누구 스피커가 고통 받는 것에 대해서 가슴 아파 하는 것을 본 적이 있습니다.

http://iamaman.tistory.com/2118

그런데 인간과 똑같이 생긴 로봇이 감정이 있고 아파하고 한다면…. 이건 정말 완전히 다른 차원의 문제가 될 것이라는 생각이 들었습니다. 글쎄요…. 제가 죽기 전에 정말로 이러한 감정을 가진 로봇들을 보게 될지는 모르겠지만 미래가 어떻게 될지는 정말 궁금하네요.



오늘은 Autohotkey를 통해 증권사 API를 사용하는 방법에 대해 소개하려합니다. 일단 증권사 API를 사용하기 위해서는 증권사 API 의 설치나 TR과 같은 기본적인 개념에 대해 알아야 되겠고, 해당 내용들은 아래 주소의 ’파이썬으로 배우는 알고리즘 트레이딩’ 이나 증권사의 API 메뉴얼을 참조하시기 바랍니다.

파이썬으로 배우는 알고리즘 트레이딩: https://wikidocs.net/book/110

이베스트증권 API 메뉴얼: http://www.ebestsec.co.kr/apiguide/guide.jsp?cno=100

시스템 트레이딩을 위한 언어로 많은 분들이 C#, 파이썬, C/C++ 등을 사용하고 있는 것 같습니다. 보통 증권사의 시스템 트레이딩을 위한 API는 DLL 버전과 COM(Component Object Model) 버전을 제공해 주더군요. 저는 개인적으로 COM 버전이 사용하기가 쉬워서 COM 버전을 사용하고 있습니다. 시스템트레이딩을 위한 언어로는 파이썬을 사용하고 있고요.

Autohotkey 를 사용하여 시스템트레이딩을 한다고 하는 분은 지금까지 한번도 보지못했는데, COM 을 사용하다 보니 Autohotkey 를 사용해도 될 것 같다는 생각이 들었고, 시도해 보니 그리 어렵지 않게 이베스트증권 xingAPI 를 사용할 수 있었습니다.

Autohotkey 를 사용하여 시스템 트레이딩을 하기 위해서는 32비트 Autohotkey 를 설치해야 합니다. 저는 아래 주소에서 Autohotkey 를 다운로드 받았고 Windows는 64비트 이지만 유니코드 32비트 버전을 설치 했습니다. 이베스트증권의 xingAPI 가 32비트 버전이라 Autohotkey 도 그에 맞춰서 설치를 했습니다.

https://autohotkey.com/download/

xingAPI 의 기본적인 개념에 대해 안다는 가정하에, Autohotkey를 사용하여 이베스트증권에 로그인을 하고 계좌번호를 불러오는 방법에 대해서 소개해 보려 합니다.

Autohotkey 를 사용하여 이베스트증권에 로그인 하고 계좌번호를 불러오는 코드는 다음과 같습니다.

Autohotkey 에서 COM 객체를 만들기 위해서는 ComObjCreate() 라는 함수를 사용하고 xingAPI 가 event 방식으로 동작하므로 ComObjConnect() 라는 함수를 사용하여 세션 객체를 Login 이라는 이벤트에 연결 시켰습니다. 이렇게 연결을 해 놓은 상태에서 ID, 비밀번호, 공인 인증서 비밀번호를 넣고, COM 객체의 login() 함수를 통해 이베스트증권 서버에 로그인을 시도하면 Login 이라는 event 명으로 응답이 오게 됩니다.

Autohotkey 의 ComObjConnect() 라는 함수의 정의는 아래와 같은데 저는 Prefix 로써 session_ 이라는 글자를 넣어줬고 session_Login 이라는 event 를 받는 함수를 만들어 줬습니다.

https://autohotkey.com/docs/commands/ComObjConnect.htm

ComObjConnect(ComObject, Prefix)

로그인이 정상적으로 된 경우 Login event 의 argument 인 code 값으로 0000 이 전달 되게 되고 코드의 중간에 있는 while 루프는 증권사의 응답을 기다리기 위해 넣어놓은 것 입니다.

로그인이 완료 된 이후에는 xingAPISession 인스턴스의 GetAccountListCount() 함수를 사용하여 계좌의 개수를 알 수 있습니다. 이후 계좌의 갯수만큼 루프를 돌면서 GetAccountList() 함수를 통해 계좌 번호를 알아내게 됩니다. Autohotkey Loop 내의 인덱스의 A_Index 는 1 부터 시작하지만 GetAccountList() 함수는 0 인덱스부터 시작하기 때문에 -1 을 해 준 것입니다.

본인의 이베스트증권 ID, PASSWORD, 공인인증서 비밀번호를 넣고 위 코드를 실행시켜 보면 다음과 같이 로그인이 정상적으로 됐다는 message box 와 보유한 계좌번호에 대한 message box 를 아래와 같이 확인할 수 있습니다.

※ 로그인 성공

※ 보유한 계좌 개수

※ 계좌 번호



  1. 이베스트 2018.10.06 22:40

    이베스트로 tr조회하려는데 도저희안되서그럽니다.혹시 뭐가 잘못되었는지 알수 있을까요?
    제공하신소스다음에 다음과 같이 했는데 안되서 그럽니다.뭐가 잘못된건지..알려주시면 감사하겟습니다.
    XAQuery_t1101 := ComObjCreate("XA_DAtaSet.XAQuery")
    XAQuery_t1101.ResFileName:="C:\eBest\xingAPI\Res\t1101.res"
    XAQuery_t1101.SetFieldData("t1101InBlock","shcode",0,"078020")
    XAQuery_t1101.Request(false)
    XAQuery_t1101_ReceiveData(szTrCode)
    {
    sName:=XAQuery_t1101.GetFieldData("t1101OutBlock","hname",0)
    }
    msgBox,%sName%
    하면 아무런 결과가 나오지를 않습니다.

    • 남성 2018.10.07 18:08 신고

      Request 를 한 이후에는 위 포스팅 내용처럼 while 문 등을 통해서 서버에서 응답이 올때까지 기다리게 해야 할 것입니다. 그리고 XAQuery_t1101_ReceiveData 함수는 ComObjConnect 를 통해 event binding 이 되어야 할 것입니다.

  2. 이베스트 2018.10.07 19:59

    정말 감사합니다.방장님. 죄송한데 코드를 조금만 고쳐주시면 안될까요? 초보라서 그런지 많이 어렵네요.ㅠ ㅠ 말씀하신대로 해봐도 안되네요.

제 블로그를 보신 분들은 아시겠지만  저는 소프트웨어 뿐만이 아니라 주식이나 펀드 매매에도 관심이 있습니다. 소프트웨어 개발 경력이 있다보니 자연스럽게 시스템트레이딩에 관심을 갖게 되었습니다. 예전부터 관심이 있었지만  4~5 년 전에는 일반인들이 시스템트레이딩을 접하기가 그렇게 쉽지 않았습니다. 시스템 트레이딩을 하기 위해서는 증권사 API(Application Programming Interface)가 필요한데 예전에는 이런 API 들이 조금 미흡한 편이었습니다. 하지만 최근에는  증권사 API들이 잘 갖추어지고 있고 제가 알고 있기로는 키움, 대신, 이베스트, 미래에셋대우 증권 등에서 API를 제공해 주는 것으로 알고 있습니다.


시스템트레이딩을 하기 위해서는 소프트웨어 코딩 기술 뿐만이 아니라  수익 전략이 필요합니다. 수익 전략은 일종의 트레이딩 알고리즘이라고 보시면 될 겁니다. 소프트웨어 코딩 기술보다 수익  전략을 만들어내는 것이 훨씬 더 어려운 부분이라고 할 수 있습니다. 저는 아직까지도 수익 전략이 없어서 증권사 API를 사용하여 실 투자를 하고 있지는 않습니다.


하지만 매일매일의 종목 검색이나 계좌 내역을 정리하는데  증권사 API를 사용하고 있습니다. 실제 투자를 할 때는 ‘서버 자동 매수 매도’ 기능을 자주 사용하고 있고  증권사 HTS 비교 결과 이베스트증권의 해당 기능이 조금 더 괜찮은 거 같아서 이베스트증권을 사용하고 있습니다.  이베스트증권에서 '서버 자동 매수 매도 기능'은 ‘[5220] 주식스탑로스(자동주문)’ 창을 사용하시면 됩니다.


증권사 API에 대해서 공부하기 위해서 제가 참조한 사이트들을 몇 가지 정리해 보고자 합니다.


첫 번째로 굉장히 도움이 많이 됐던 사이트로 WikiDocs 의 ‘파이썬으로 배우는 알고리즘 트레이딩’ 이 있습니다.  주소는 아래와 같습니다.


https://wikidocs.net/book/110


위 사이트에서는 증권사 API 사용을 위한기본적인  파이썬 언어의 문법과 프로그램 설치 방법 간단한 API 사용 예 등을 알 수 있습니다.  처음 시작하는데 매우 도움이 됐던 사이트입니다.


두 번째로 도움이 됐던 사이트로 아래 블로그 들이 있습니다. 아래 블로그에서는 초기 API 사용 시 샘플코드들을 볼 수가 있었고 리눅스에서도 API 제공이 되는지에 대한 궁금증을 해결할 수가 있었습니다.


http://freeprog.tistory.com/344


http://systemtraders.tistory.com


마지막으로 매우 당연하지만 xingAPI 도움말입니다.


http://www.ebestsec.co.kr/apiguide/guide.jsp?cno=100


엑셀을 샘플로 한 설명이지만 이베스트증권 xingAPI 에서  어떤 기능들이 있는지를 확인할 수 있고 xingAPI 를 설치하시면 아래 주소에서 엑셀 파일 샘플들을 확인할 수 있습니다.


C:\eBEST\xingAPI\샘플


최근에는 e종목검색 기능이 추가 됐고 종목검색 전략을 API에서 사용할 수 있도록 해  준다는 것을 알 수 있었습니다.


  1. 박아지 2019.05.11 16:29

    pkc1@naver.com
    선물.옵션 자동매매 프로그램을 의뢰하면 비용이 얼마나 드나요 (ebest 증권 선호하나 관계 없음.)
    source code 를 받고 싶습니다 . 최소한 매매 로직을 수정할 수 있어야 합니다
    파이썬이나 비베 같은 쉬운 프로그램이면 좋을 것 같아요
    효율이 있으면 상업화 의사도 있습니다.
    핸드폰 or 문자 가 편합니다 anytime 9787 8753

    • 남성 2019.05.11 20:38 신고

      증권사 API 관련 게시판에 문의 하시는게 더 좋을것 같네요. 거기에 문의 하면 아마도 원하시는 답변 얻을 수 있을 겁니다.

개인적으로 저는 인공지능 알고리즘 그 중에서 요즘 많이들 얘기하는 Deep learning 알고리즘에 관심이 많이 있습니다. 해당 내용에 대한 전공자는 아니라 시간이 날때마다 TensorFlow 와 같은 구글 Deep learning 라이브러리에 대해 공부하고 있기도 하고요. 

인공지능 알고리즘은 숫자 인식을 비롯한 이미지를 통한 진단, 번역, 음성 인식 분야에 있어서 굉장한 두각을 나타내고 있고, 그 활용폭은 획기적으로 증가할거라 생각합니다.

최근에 이런 기술적 발전을 4차 산업혁명이라 하고 대한민국 뿐만이 아니라 세계의 아이들이 정규 교육 과정에서 소프트웨어를 교육 받게 될 시대가 되었습니다.

오늘 제가 추천 드리는 "SBS 스페셜 I ROBOT - 내 아이가 살아갈 로봇 세상" 에서는 4차 산업 혁명 시대에 어떤일들이 없어질 것이며 현재 어떤 변화가 있고 로봇의 한계가 어떤 것인지 등에 대해 소개 합니다. 

장학퀴즈에서 엑소브레인과 함께 한 수재들의 인터뷰 내용을 보면서 커제가 알파고와의 대결에서 눈물을 흘릴때의 참담함 같은 것이 느껴졌습니다. 그런데 이런 인공지능 이란건 사실 적응력이라는게 별로 없다고 소개합니다. 지금까지의 인공지능은 대부분 특수한 한 가지의 일을 매우 잘하는 소프트웨어 에 불과하다고 합니다. 인문학 강사 최진기 선생님이 홍콩의 안드로이드 로봇과 대화를 하는 장면을 보면 아직까지 그 대화의 수준이 인간과 같지는 않더군요. 

현업 개발자야 당장 일처리를 해야 하는 차원에서 컴퓨터 언어의 문법이나 코딩을 하는 기교가 중요할 수 있지만 아이들 교육에 있어서 그런 기술들은 별로 중요하지 않습니다. 본 다큐에서는 소프트웨어 교육에 있어 논리력이나 체계적인 생각을 하는 능력이 중요하다고 강조합니다. 

제가 예전에 본 다른 다큐에서도 4차 산업 혁명 시대에는 빨리 배우는 기술이 필요하다고 하더군요. 빨리 배우는 기술이 바로 적응 능력이 될것 같은데.... 이걸 어떻게 교육해야 할까 참 고민이 될텐데

아래 유튜버 분은 아이들에게 샌드위치 만들기를 글로 설명하게 함으로써 컴퓨팅 사고력을 키우는 교육을 하더군요. 참 신박한 교육 방법이라는 생각이 들었습니다.

자신의 설명을 이해 못하는 아빠에게 투정을 부리는 아이의 모습이 너무 귀엽네요. 현재 취학 연령의 아이를 키우시는 부모님들은 아이와 함께 해 보는것도 재미있을것 같네요. 

아래는 위 화면에 대한 원본 동영상 입니다.


"SBS 스페셜 I ROBOT - 내 아이가 살아갈 로봇 세상"을 보면서 재미도 있었고 많은 생각을 해볼수 있었던것 같습니다. 어디서 들은건지는 모르겠지만 "가장 위험한 사람은 똑똑하기만 한 사람" 이라는 말이 생각 나네요.  저는 개인적으로 인공지능 시대가 될 수록 인문학에 대한 중요성이 더욱더 필요한 시대가 될 것이라고 생각합니다. 훌륭한 인성을 갖춘 사람이 인공지능과 같은 멋진 도구들을 선한 의도에서 다룰때 우리 인류가 더욱더 번성할 거라고 생각하기 때문입니다.

미래에 대한 고민이 많은 분들은 한번쯤 시청해 보시는것도 좋을것 같습니다.



+ Recent posts