2017년 10월 11일 수요일

2017년 9월 26일 화요일

회계부정 적발 & Quality Factor의 $-neutral vs. beta-neutral

간단히 오늘 리서치 정리.

1. 회계부정 기업 적발(financial statement fraud detection)

대표님께서 궁금하시다고 해서 회계부정 적발과 관련해 어제, 오늘 간단히 리서치를 해봤는데 요즘 해외에서는 intelligent fraud detection이라고 이쪽에서도 머신러닝, 딥러닝을 적용한 연구가 많다. 전통적으로 머신러닝을 금융에 일찍 적용했던 분야가 대출과정에서 개인의 파산확률 예측이라든지, 신용카드 부정사용 적발 등인걸 고려하면 회계부정 적발에 관련 방법을 쓰는건 자연스러워 보인다. 실제 정확도도 꽤 높은 편인데 머신러닝 기법과 어닝 리포트의 텍스트 분석을 결합했을 때 90% 이상으로 회계부정 기업을 적발.

반면 국내연구에서는 아직 머신러닝을 적용한 논문이 잘 안보인다. 나쁜 기업을 스크리닝 할 때 쓰는 직전 3년 비적정 감사의견, 불성실 공시법인, 횡령, 배임, 영업 적자 등의 기준을 사용한 고전적인 방법도 많다. 그럼 그냥 내가 재무데이터 가지고 적용해볼까 했는데 일단 회계부정 기업 리스트를 머신러닝 돌릴만큼 충분히 구하는게 노가다여서 포기..

국내 사례에서 과거 연구자료들을 종합해보면 회계부정 적발에 영향을 미치는 팩터를 크게 지배구조 변수와 재무변수로 나눌 수 있다. 지배구조변수로 유의미한 팩터는 경영자 급여, 최대주주 지분율, 감사인 교체여부 등인데 내부적으로 관심있던 신성델타테크의 경우 경영자 급여가 부정기업 쪽에 좀 더 가까우나 판단은 애매하고 감사 교체는 없어 전반적으로 지배구조 측면에서 회계부정 가능성은 중립이다.

재무변수로는 차입금 의존도, 이자보상비율이 유의미하고 특히 수익성 지표인 영업이익률, 순이익률, ROA, OCF/TA이 회계부정기업과 정상 기업간의 차이가 크다. 그외 매출액 증가율, 유형자산 회전율, 총자산 회전율이 유의한 팩터인데 신성델타테크는 차입금 의존도가 1분기 40.71%, 2분기 39.62%로 회계부정기업 평균 36%보다 높다. 이자보상비율이나 수익성 관련 지표는 대체로 회계부정기업들은 -를 기록해 신성델타테크는 해당사항 없고 영업현금흐름 측면에서도 중립적이다. 회계부정기업은 정상기업 대비 유형자산 회전율은 높고 총자산 회전율은 낮은 편인데 신성델타테크는 유형자산 회전율이 낮고 총자산 회전율은 보통인 편으로 재무변수측면에서도 차입금 의존도를 제외하면 특별히 회계부정 의심기업이라고 보기 어렵다.

2. Quality Factor의 $-neutral vs. beta-neutral

Quality Factor는 왜 작동하는지 직관적으로 이해하기 어려운 대표적인 팩터다.(이와 관련해 예전에 페이스북에서 요즘 퀀트투자관련 책을 출판하고 무려 강의까지 하는 분과 의견이 대립한 적이 있다. 난 퀀트야말로 팩터가 왜 작동하는지 깊이 고민하고 적용해야 한다고 주장했는데 그분은 퀀트와 데이터마이닝의 차이를 전혀 이해하지 못하시는듯.. 부디 강의할 때 수강생들에게는 그렇게 가르치지 않았으면 좋겠다)

오늘 Quality factor 관련해 재밌는걸 봤는데 Factor research에 따르면 미국에서는 Quality factor의 $-neutral 과 beta-neutral의 차이가 크지 않은데 그외 지역에서는 차이가 꽤 벌어졌다.


결국 risk adjusted 관점에서 high quality가 작동한다는 말인데 합리적인 것 같으면서도 쉽게 와닿지는 않는다. 뭐 결론은 둘 중에 어느걸로 해도 금융위기 때 수익곡선에서 볼 수 있듯이 quality factor는 시장과 상관관계가 낮아 diversification으로는 제격.

2017년 9월 13일 수요일

한빛 미디어 리얼타임 TALK 01 - 비즈니스 블록체인 세미나 후기

주식시장에서는 10배 오른 주식을 Tenbagger 라고 부른다. 그 유명한 피터린치가 저서에서 사용한 단어로 사람들은 온갖 노력을 기울여 그런 주식을 찾기 위해 애쓴다.

그런데, 나는 올해에만 무려 20배 오른 자산을 가지고 있다. 그리고 앞으로 10배는 더 갈거라 생각하고 홀딩 중이다. 사실 해당 자산군내에서 2,3배 오른 종목들은 부지기수다. 혹자는 튤립버블에 비유하며 그냥 대중의 광기라 치부하고 고전적인 화폐이론을 들어 근본적으로 성립될 수 없다고 주장하지만 그런 말을 하는 사람들 중 해당 자산을 진정 이해하고 있는 사람은 별로 보지 못했다. 

언급한 자산군은 비트코인을 대표로한 암호화폐다. 아직 역사가 짧기는 하지만 시계열 특성을 보면 기존의 어떤 자산군으로도 묶기 애매한 새로운 투자수단으로 나는 이더리움이 만원이 되기 전에(지금 30만원이 넘네요 ^^;) 처음 투자를 시작했다. 사실 개인적으로도 비트코인은 화폐로서 실패할 수 있다고 생각하지만 블록체인 기술이 가지는 효용성은 우리생활에 적용될 분야가 무궁무진하다 판단했고 틈틈이 공부해 그간 10여종의 알트코인들에 투자해왔다. 

금융업종에 종사하면서 건방지게 최근 한빛미디어의 책 읽는 프로그래머 그룹에 가입했는데(출판사 사정상 출간이 계속 미뤄지고는 있지만 R책을 번역하기는 했으니..) 한빛 미디어에서 비즈니스 블록체인 이란 책을 발간하면서 저자 세미나에 '무료'로 초청해주셔서 다녀왔다. 이전에는 서평단으로 책도 보내주셨었는데(예전 글) 이 자리를 빌어 다시 한번 감사드린다.

세미나는 블록체인의 동작원리와 같은 기술적 내용부터 실제 활용사례를 포함한 비즈니스 측면까지 폭넓게 다뤄 블록체인을 처음 입문하는 사람부터 암호화폐 투자자나 블록체인을 적용하려는 실무자까지 모두 관심있게 들을 수 있었다. 개인적으로는 사토시나 비탈릭이 속한 사이퍼펑크 얘기와 언제들어도 알쏭달쏭한 합의방식을 실제 시뮬레이션으로 설명해주신 점이 인상깊었다. 비지니스적으로는 신원확인과 관련된 코인인 civic이 눈에 띄어 투자하려고 했는데 지금보니 세미나 끝나고 3일 뒤에 가격이 크게 올라있네..

저자인 박지훈님께서 국내 펀드매니저들을 힘들게 하는 S사에서 실제 해당업무를 다루고 계신만큼 기술적인 부분과 비즈니스 활용적인 부분 모두 깊은 내공이 느껴졌다. 아직 책을 읽지 못했는데 구입해서 꼭 읽어봐야겠다.

그리고보니 덕분에 몇개월만에 블로그를 적게됐다. 여전히 매일 퀀트 블로그와 페이퍼로 하루를 시작하고 최근에는 팩터 DB작업과 시뮬레이션 툴을 만들고 있다.딥러닝 쪽 진행하던게 좀 지체됐는데 내일 구글 클라우드 교육 잘받고 와서 속도 좀 내봐야지. 바로 다음날 아마존 AWS 세미나도 있는데 간식이 더 맛있는 쪽 서비스를 이용해야겠다. 

추가
1. 요즘 대용량 데이터를 요청하는데 퀀티와이즈 제발 다운 좀 안됐으면..
2. 회사 내부적으로 사용할 팩터 시뮬레이션툴을 만드는데 로이터에서 똑같은걸 만들어 세일즈를 다니시네 ㅎㅎ


2017년 4월 25일 화요일

윈도우에 XGBoost 설치하기

딥러닝 세상이지만 케글이나 각종머신러닝 대회에서 XGBoost 역시 꾸준히 좋은 성능을 보여주고 있다. XGBoost의 이론적인 내용은 접어두고 일단 윈도우, 파이썬 환경에서 설치하는 법을 정리해둬야겠다. (다른 PC에 설치할 일이 생길 것 같은 나를 위해서..)

일단 파이썬은 설치되었다고 가정하면 Git과 MinGW가 필요하다.
링크에서 Git 윈도우 버전을 받아 Bash Shell을 실행하면 터미널이 열린다. XGBoost 를 저장할 경로에서 다음의 명령어를 입력한다.

$ git clone --recursive https://github.com/dmlc/xgboost
$ cd xgboost
$ git submodule init
$ git submodule update
cs

복사한 XGBoost를 빌드하려면 64bit 윈도우에서 MinGW-W64가 필요하다.
다운을 받고 설치하는데 setting에서 architecture를 x86_64로 변경한다.

다음 과정이 조금 까다로울 수 있는데 위에서 설치한 MinGW의 라이브러리가 있는 폴더를 윈도우에 등록해줘야 한다.
여기를 참고해 디렉토리(예를 들어 C:\Program Files\mingw-w64\x86_64-5.3.0-posix-seh-rt_v4-rev0\mingw64\bin) 를 시스템 경로로 추가해준다.

Git Bash를 닫고 다시 열어
$ which mingw32-make
cs
를 입력했을 때 위의 디렉토리를 돌려주면 이제 준비 완료.

작업을 편하게 하기 위해 다음을 입력하고
alias make='mingw32-make'
cs
XGBoost를 설치한 곳으로 가 다음을 차례대로 입력해준다.
(XGBoost 튜토리얼은 더 간단한데 그렇게 했을 때 왠지 파이썬에서 설치가 안됐다.)

$ cd dmlc-core
$ make -j4
$ cd ../rabit
$ make lib/librabit_empty.a -j4
$ cd ..
$ cp make/mingw64.mk config.mk
$ make -j4
cs

이제 아나콘다 프롬프트 등에서 XGBoost를 설치하면 된다.

cd code\xgboost\python-package
python setup.py install
cs

파이썬에서 XGBoost를 import 되는 지 다음을 통해 확인하면 진짜 끝.

1
2
3
4
5
6
import os
mingw_path = 'C:\\Program Files\\mingw-w64\\x86_64-5.3.0-posix-seh-rt_v4-rev0\\mingw64\\bin'
os.environ['PATH'= mingw_path + ';' + os.environ['PATH'
import xgboost as xgb
cs

2017년 4월 5일 수요일

주가 패턴분석 (K-Means Clustering)

혼자 몰래하는 블로그였는데 systrader님(블로그) 페이스북에 포스팅2개가 링크되면서 갑자기 방문객이 늘었다..; 스스로 나중에 보려고 올리는 글들이라 다른 사람들에게 도움이 될 지 모르겠다. 꾸준히 블로그를 올릴만큼 부지런하지는 않으니 곧 다시 나만 하는 블로그가 되겠지.

K-Means Clustering 이라는 비지도 학습(unsupervised learning)을 이용하면 군집 분석을 쉽게 할 수 있다. 정해진 K개 그룹의 중점(centroid)을 구하고 데이터와 거리를 계산해 업데이트 방법으로 원리도 간단하다.

R을 이용해 2007년부터 5일간격으로 삼성전자의 20일 동안 주가를 8개 패턴으로 분류한 결과다. 패턴 8과 같은 경우가 20일 동안 지속적으로 상승하는 유형이고 패턴 2가 반대로 하락하는 유형이다. 빈도수를 보면 8번, 2번, 7번 순으로 많다. 위의 패턴번호를 삼성전자 주가에 표시해 그리면 다음과 같다.


최근엔 지속 상승하는 8번 유형에서 둔화된 7번, 5번 유형으로 변하는걸 볼 수 있다. 

이렇게 구한 패턴유형은 다른 모델의 input feature로 활용할 수 있다. 자신의 트레이딩 규칙, 알고리즘이 어떤 패턴에 잘 맞는지 확인해보는 것도 좋을 듯하다.

다른 분들처럼 본문에 R 코드를 삽입할까 했는데 코드가 너무 간단해 생략...