트레이딩 시스템도 역시 빠른 배포가 필요하다!

시스템을 제작하고 이번 주에 시스템을 구동했다.

개발을 하면서 늘 느끼는 것은 ‘빠른 출시’는 언제나 항상 옳다는 것이다. 서버에 배포가 되고나면 문제해결에 보다 집중하게 된다.

작성한 코드에서 문제가 발생하면 안되기 때문에, 빠르게 버그를 잡아내고 문제를 해결해야 한다. 심지어 트레이딩 시스템은 현물로 거래하는 구조이기 때문에, 자칫 잘못하면 금전적 손실을 떠안을 수도 있다.

트레이딩 시스템 구축시 반드시 해야 하는 것은, 1차적인 테스트는 절대적으로 모의투자 기능을 적극적으로 활용해야 한다. 사실 모의투자와 실전투자의 차이는 키움의 경우 모의투자에서 제공되지 않는 API가 있는 정도고, 그 외에는 모두 동일하다. 단지 계좌번호가 다를 뿐이다.

본인이 만든 시스템에서 매수/매도 신호를 제때 일으키고 정해진 룰에 따라 주문을 하는지 확인하는 과정은 필수적이다. 이 과정을 굳이 실전계좌를 사용해서 현물을 잃어가면서 할 필요는 없다.

적정한 테스트 기간이 필요할 것이고, 안정적으로 테스트가 된 후에 실전계좌로 변경해서 수익화 해 가면 될 것이다.

시가 또는 종가 매매

시가나 종가는 매우 쉬운 개념이지만, 호가창에서 일어나는 상황들을 생각하면 그렇게 단순하지만은 않다. 이번엔 트레이딩 시스템 구축시 가격과 관련하여 발생할 수 있는 현실적인 문제를 짚어보도록 하겠다.

과거 데이터 상에 있는 시가나 종가로 매매하는 전략을 세운 경우, 호가창의 현실을 간과하는 경우가 많다. 고려해야 할 두 가지 사항이 있다.

첫째는, 호가가 순식간에 밀려서 움직여 버리는 경우다. 백테스트할 때에는 시가에 구입하겠다고 했는데, 실제 호가창에 호가가 아주 얇게 깔려 있어서 절대로 해당 가격에 원하는 수량을 구입할 수 없다면, 해당 백테스트 내용의 신뢰도가 떨어지게 되고, 실제로 원하는 수준으로 매매가 되기 어렵다.

말그대로 만약 시가가 그냥 딱 한 명이 한 번 살 수 있는 기회만 주고, 5호가 정도가 순식간에 올라가 버리고 두 번 다시 해당 가격에서 살 기회를 주지 않는다면, 백테스트처럼 매매할 수는 없는 것이다. 그래서 이런 상황들이 발생할 것을 대비해서 슬리피지를 고려해야 한다.

둘째는, 시가가 매수호가에 걸려있느냐, 매도호가에 걸려있느냐에 대한 문제이다. 위의 첫째 상황에 대한 좀 더 상세한 상황이다. 최우선 매수호가에서 출발해서 바로 현재가가 상승해 버리면 원하는 가격에 매수할 수 없다. 역으로 최우선 매도호가에서 출발해서 바로 현재가가 하락해 버리면 원하는 가격에 매도할 수 없다. 따라서 아주 공격적으로 슬리피지를 잡는다면 최소한 한 호가 정도는 슬리피지로 잡아야 한다.

단순하게 나는 양봉 시가에 살거야 내지는 팔거야 라는 생각을 한다면, 정말 내가 그 가격에 살 수 있는 상황일지 고려해야 한다.

수급이 풍부해서 사고 파는 데 큰 문제가 없다면 슬리피지는 줄어들고 수익은 상승할 것이다. 반대로 수급이 풍부하지 않은 종목은 슬리피지를 심각하게 고려하지 않으면 절대 수익을 낼 수 없을 것이다.

수수료와 증권거래세

수수료와 증권거래세는 결코 무시할 수 없다. 그깟 0.015% 정도의 수수료. 수수료보다는 좀 더 내지만 0.25%의 증권거래세 정도라고 대충 생각할 수도 있다.

하지만 거래횟수가 증가하고 거래대금이 커지다 보면 수익금보다 수수료와 세금이 더 많이 나가는 경우도 생길 수 있다. 물론 그런 전략은 좀 더 강화해서 수익을 극대화하는 쪽으로 조정할 필요가 있다고 생각한다.

증권사들은 서로 회원 뺐어오기(?) 경쟁을 열심히 한다. 그래서 당사 거래를 몇 개월 이상 하지 않으면 수수료 할인 혜택을 종종 주곤 한다. 그럴 때 잽싸게 수수료를 적게 내는 쪽으로 잘만 활용하면, 수수료를 적게 내면서도 거래를 할 수 있다.

필자는 증권사에서 제공하는 API를 사용해서 거래할 것이므로, 2개 증권사(크레온, 키움) 정도의 API 연동을 준비해 놓고, 이쪽 업체로 저쪽 업체로 계좌를 옮기며 사용해 보려 한다. 선물 API는 제공하는 곳이 더 많이 있으므로 추후에는 다양한 업체를 활용할 수도 있을 것 같다.

백테스트 결과 ETF 거래의 경우 거래당 0.015%의 수수료만 내지 않는다고 설정했을 때, 최종 백테스트 결과 수익에 상당한 차이가 발생했다.

백테스트시 좀 더 현실적인 결과 확인을 위해서 수수료와 세금을 감안할 필요가 있다.

2020년 11월 말의 코로나19

현 정부는 코로나19 확산세가 지속적으로 증가할 것이고 유지될 것이라는 전제를 가지고 전략적으로 방역 시스템을 돌아가게 해야 할 것이다. 지금의 대책은 너무 근시안적이고 약자들이 피해를 받는 구조다. 이미 통제력은 점점 잃어가고 있다. 통제할 수 없는 일이라는 것을 빨리 인정하고, 통제 가능한 것이 무엇인지 파악해서 피해를 최소화 할 수 있게끔 해야 할 것이다. 물론 이 과정 중에 많은 사람들이 분명 고통스럽고 힘든 시간을 지나게 될 것이다. 그저 그 고통의 시간이 각 개인에게 견딜 수 없는 고통이 아니길, 생계의 목줄을 쥐어짜는 기간이 되지 않길 기도한다.

역할모호성과 조직 생산성

조직에서 흔하게 사용하는 표현 중 하나는 역할과 책임이다. 영어로는 role & responsibility, 그래서 줄여서 R&R이라고 많이들 부른다. 오늘은 역할 모호성(role ambiguity)의 관점에서 조직의 성과가 어떻게 좌우될 수 있는지 이야기 해 보려 한다.

조직의 경영자들은 구성원들에게 책임을 묻겠다는 태도를 보이는 경우가 많다. 경영자 자신은 해야 할 일을 다 하고 해야 할 일 이상으로 모든 일들을 했는데, 구성원들이 성과를 내지 못한다며 조급한 모습을 보이며 구성원들을 다그치는 경우가 많이 있다. 왜 그러는 것일까?

물론 심리적 역동도 다양한 원인 중 하나가 될 수 있겠지만, 오늘은 역할모호성을 중심으로 정리해 보려고 한다.

첫째, 무엇보다도 조직의 리더의 역할과 책임이 어디까지인지 구성원들이 생각하는 것과 리더의 생각이 다르기 때문이다. 물론 이 경우는 비교적 문제를 해결하기가 조금은 더 나을 수 있다. 왜냐하면 구성원들이 리더와 소통하거나, 리더가 구성원들과 소통하면 되기 때문이다. 이 경우 특히 조직 리더가 소통할 준비가 되어 있어야 하며 소통할 수 있는 역량이 필요함은 당연하다.

흥미로운 지점은 리더는 소통할 준비가 되어 있으며 자신을 잘 소통하고 있다고 이야기 하지만, 전혀 소통을 하지 못하는 경우가 있다. 그런 리더들은 조직에서 자신이 ‘외롭다’고 한다. 바로 이런 표현은 리더가 소통을 제대로 하지 못하고 있다는 것에 대한 방증이 된다. 소통을 잘 하지 못하는 것에도 여러가지 요인이 있는데, 본 글의 쟁점은 아니므로 차후에 기회가 되면 다루도록 하겠다.

둘째, 조직의 리더인 자신의 역할과 책임이 어디까지인지 리더 자신도 잘 모르는 경우인데 이 경우에는 문제가 좀 심각하다. 암묵적으로 구성원들간에 리더의 역할에 대한 공유 정신 모형(shared mental model)이 자리잡혀 있다 하더라도, 리더 자신이 자신의 역할과 책임의 한계를 모른다면 문제가 된다. 이 경우에는 리더가 조직에 대해 학습해야 한다. 자신의 무지함을 깨닫고 더 나은 리더가 되기 위해 노력해야 한다. 하지만 보통 많은 리더들은 자신이 조직을 아주 잘 알고 있는 것처럼 생각하기 때문에 문제가 발생하는 경우가 많다.

이런 리더들은 소통하려 하기보다는 자신의 생각을 구성원들에게 주입하려 하거나, 자신의 의견을 관철하려 하는 경우가 많다. 본인은 갑질을 하지 않는다고 하지만, 이미 구성원의 의견을 무시하거나 자신의 의견만을 강조하는 행동을 하면서도 문제라는 인식은 없다. 이런 일들이 반복되면 구성원들이 리더에게 건의해 보려 하기보다는 조직에 남아서 순응하거나 조직을 떠나거나 둘 중 하나의 선택을 한다.

만약 구성원들의 평균 근속기간이 1년이 되지 않는다면, 해당 조직은 개선이 필요한 조직이라고 감히 말할 수 있다. 구성원들이 조직에서 필요한 것들을 학습하고 이제 좀 성과를 낼만한 시점이 됐을 때 구성원들이 조직을 빠져나가는 상황이라고 판단할 수 있다. 새로운 구성원이 들어오면 성과가 날 것이라고 생각하지만, 그들이 조직에 적응하는 데에는 최소 3~6개월의 시간이 필요하다. 그 동안 눈부신 성과를 낼 것을 기대하는 것은 무리수인 경우가 많다.

셋째, 구성원들이 자신이 어떤 역할과 책임을 맡았는지 불분명한 경우이다. 조직은 경영하는 사람은 구성원들의 직무에 대한 높은 이해도를 가지고 업무분장을 해야 한다. 바로 이 업무분장이라는 것이 소위 역할과 책임을 부여하는 지점이다. 역할과 책임을 분명히 하지 않고, 암묵적으로 구성원들에게 역할과 책임을 부여하는 경우가 있다. 이 경우, 구성원은 직무 스트레스로 고통받게 되며 조직에서 원하는 성과를 끌어내지 못하는 경우가 많다. 이 때 역할과 책임을 분명하게 하지 못한 리더의 책임이 훨씬 큼에도 불구하고, 이런 상황이 반복되면 리더는 자신이 무슨 잘못을 했는지 돌아보기보다 구성원의 책임을 묻기만 하는 경우가 많다.

현명한 리더는 직무에 대한 명확한 이해를 바탕으로 구성원의 역할과 책임의 한계를 명료화하고, 구성원이 성취해야 할 목표를 분명하게 제시한다. 따라서 조직과 구성원이 달성해야 할 목표를 분명하게 제시할 필요가 있다. 특히 그 과정을 독재자적으로 하는 경우가 많은데, 독재를 회피하려면 가장 필요한 것은 소통이다. 구성원들은 자신에게 주어진 일을 충분히 할 수 있는지 가늠해보고 현실적으로 가능한 범위에서 업무를 조율해야 한다. 그렇지 않으면 결국 또 악순환이 반복되는 것은 뻔한 일이다.

이제 조직에 필요한 것을 정리하고 글을 맺으려 한다.

조직의 성과에 대한 메타 분석에 따르면 역할 모호성이 클수록 성과가 낮았다(Tubre & Collins, 2000). 특히 전문직, 기술직, 그리고 관리직에서 역할모호성이 클수록 직무 성과가 낮은 것으로 드러났다. 즉, 조직 구성원은 자신의 업무를 명확히 파악하고 있을 때 생산성이 올라간다는 것이다.

그렇다면 조직의 리더는 구성원과 소통할 수 있는 기회를 만들어, 조직 구성원들의 역할과 책임을 명료화할 수 있도록 협력해야 한다. 리더는 단순히 지시하고 명령하기 위해 존재하는 것이 아니라, 말 그대로 조직을 이끌어가는 리더다. 따라서 문제를 빨리 드러내고, 함께 문제를 해결하는 데 앞장서야 한다.

________________
참고자료

Tubre, T. C., & Collins, J. M. (2000). Jackson and Schuler (1985) revisited: A meta-analysis of the relationships between role ambiguity, role conflict, and job performance. Journal of management26(1), 155-169.

증권거래소 휴장일, 시작시간, 종료시간

주식투자자들이 사람으로서 접근할 때는 그냥,
“어 맞아. 그래 그거 당연한 거 아니야? 그것도 모르나?”라고 할만한 이슈다.

하지만 시스템을 직접 제작하려면 반드시 챙겨야 하는 것.
그것은 바로 장 시작 시간과 장 종료 시간이다.

보통 주식시장은 9시에 열고, 오후 3시 30분에 닫는다.

하지만 새해 첫 날은 10시에 시작해서 오후 3시 30분에 끝나고,
수능일은 10시에 시작해서 오후 4시 30분에 끝난다.

2017년에는 지진 때문에 수능일자가 갑자기 변경된 적이 있다.
하지만 당초 수능 예정일에도 수능일 기준으로 장이 열리고 마감됐다.

그리고, 하나 더 휴장일이다. 국내 휴장일은 아래 증권거래소 링크에서 확인 가능하다.

https://marketdata.krx.co.kr/contents/MKD/01/0110/01100305/MKD01100305.jsp

휴장일은 사실 장 운영시간만큼 부담이 크지는 않지만,
시스템은 사람이 아니니 준비해 놓아야 한다.

시스템 트레이딩을 시작하면서…

과거에 단순히 투기적으로 주식시장에 접근했다가 박살났던 적이 있었다.

두 번 다시 그 길을 가지 않기 위해서 시스템 트레이딩을 하기로 결정했다. 결정한지는 벌써 몇 년이 지났다. 하지만 수 없이 다양한 모델들을 분석해보고 실망하고, 분석해보고 실망하고, 이 과정을 수 없이 반복하고 있다.

투자자의 95%가 돈을 잃는다는 주식시장. 반대로 5%는 수익을 내는 사람들이 있다.

시장에서 살아남기 위해서, 수익을 내는 5%에 들어가기 위해서 백테스트와 수많은 실전매매를 시스템으로 구성해 보기로 했다.

백테스트를 위해서 분봉, 일봉 데이터를 분석용 DB에 저장하였다.

2016년부터 다양한 분석들을 시도해 보고 있다.

분석과 관련된 이야기들 그리고 관련 코드나 공유할 만한 것들이 생각날 때, 조금씩 공유해 보려고 한다.

시스템 트레이딩을 고민하는 누군가에게 도움이 되면 좋겠다.

필자는 대신증권 Creon Plus API와 키움증권 OpenAPI+를 사용해서 개발하고 있다.

API와 관련된 이야기는 두 증권사에 대한 이야기가 될 확률이 높다.

아직 선물 쪽은 하지 않고 있는데, 선물매매를 하게 된다면 다른 증권사들을 활용하게 될 수도 있을 것 같다.

그리고 수 많은 실패 경험들을 공유할 수 있지 않을까 싶다.

일단, 오늘은 여기까지~*

IntelliJ IDEA에서 한글 입력이 안 되는 현상(Ubuntu 18.04, UIM 입력기)

최근에 IntelliJ IDEA 2019.3 으로 업데이트 후 한글입력이 안되는 현상이 발생했다.
그래서 Jetbrains에 문의하였다.

한글입력을 위해서 UIM(벼루)을 사용하고 있었고, IDEA 2019.2에서는 작동했지만, 업데이트 후 작동하지 않음을 보고 했다.

idea.log를 첨부해달라는 메시지를 보고, idea.log를 살펴봤는데, 문제가 되는 로그를 확인했다.

2019-12-26 21:13:15,112 [ 10848] INFO – ntellij.idea.ApplicationLoader – canDisableInputMethod spent 33 ms, found keyboard layouts: [(us, xkb), ], result==true
2019-12-26 21:13:15,209 [ 10945] INFO – #com.intellij.idea.Main – InputMethods was disabled

UIM은 영문입력기만 있으면 되고, 한글 입력기가 별도로 필요없다.

그런데, 영문 입력기 하나만 있으면 IDEA에서 canDisableInputMethod를 true로 반환하는 것이다. 그러니 Shift + Space를 눌러도 아무 반응이 없이, Space 처리만 되면서 한글을 입력할 수 없었던 것이다.

그래서 ibus용 한글 입력기를 하나 추가한 이후에 다음과 같은 로그를 확인했다.

2019-12-26 21:24:45,771 [ 11841] INFO – ntellij.idea.ApplicationLoader – canDisableInputMethod spent 77 ms, found keyboard layouts: [(hangul, ibus), (us, xkb), ], result==false

이제서야 IDEA에서 한글 입력이 잘 된다. 물론 입력기는 그냥 영문으로만 선택해 놓고, UIM을 사용하여 한글을 입력한다.

ibus를 사용하면 웹 브라우저에서 한글 입력이 자음만 되는 이상한 현상이 있어서 UIM을 사용하고 있다.

어쨌든 이렇게 해결을 했다.

Jetbrains에서 관련 이슈를 파 줬다.
https://youtrack.jetbrains.com/issue/JBR-2049

동일한 문제로 어려움을 겪는 분에게 도움이 됐으면 좋겠다.

개구리와 가부장제

개구리의 가사는 아래와 같다.

개굴개굴 개구리 노래를 한다
아들손자 며느리 다 모여서
밤새도록 하여도 듣는 이 없네
듣는사람 없어도 날이 밝도록

개굴개굴 개구리 노래를 한다
개굴개굴 개구리 목청도 좋다

아마도 개구리들이 밤새 울어대서 잠들지 못하는 것을 묘사하고 싶어서 이런 곡을 쓴 게 아닐까 싶다. 이런 맥락으로만 보면 별 문제가 없어 보인다.

하지만, “아들 손자 며느리” 이 가사는 좀 불편한 지점이다. 지난 번에 페북에서 이 지점에 대해 얘기를 했었는데, 이 부분이 문제가 되지 않는다는 남성들의 반응이 참 재미있는 지점이었다. 왜 여성분들은 문제가 없다는 말을 하지 않았을까?

남성들이 기득권을 갖고 있기 때문이다. 남성들에게는 별로 문제가 안 될 것이다.

명절 때 큰집에 가면 밥먹는 순서는 공교롭게도 아들 손자 며느리다. 어렸을 때 이 지점이 이해가 되지 않았었다. 장유유서가 그렇게 중요하면 며느리들부터 드셔야 하는데, 며느리들은 죄다 뒷전이다.

그래서 나에게 특히 “아들손자며느리”는 불편한 지점이다. “온 동네의 개구리” 정도로 바꿔 불러도 의미 전달은 충분할 것 같다. 더 좋은 개사가 있으면 좋겠다.

개굴개굴 개구리 노래를 한다
온 동네의 개구리 다 모여서
밤새도록 하여도 듣는 이 없네
듣는사람 없어도 날이 밝도록

개굴개굴 개구리 노래를 한다
개굴개굴 개구리 목청도 좋다

단순히 이 노래 하나 때문에 가부장제가 더 견고해진다고 하기엔 비약이라 할 수 있겠지만, 이런 식의 노래가 한 두 곡이 아니라 여러 곡이라면 나는 문제가 될 수 있다고 생각한다. 어릴 때부터 들으며 학습하는 자연스러운 가부장제 문화. 이제는 바뀌어야 하지 않을까?

그래서 문제가 있다고 생각되는 동요들은 비판도 하고 개사해서 대안도 제시할 것이다.

대안 없는 비판은 그냥 비난이 될 수 있으니 말이다. 생산적이고 더 나아지는 방향의 비판을 할 수 있도록 노력해 보겠다.

동요와 페미니즘

우선 좋은 동요들이 훨씬 많다는 점을 이야기하고 싶다. 좋은 가사의 동요들이 정말 많다. 하지만 그렇지 않은 가사들도 있다.

종종 생각날 때마다 한 곡씩 소개해 보려고 한다. 그리고 할 수 있으면 개사를 해보려고 한다.

얼마전에 곰세마리에 대한 이야기를 나눴다. 다음엔 아들손자며느리로 유명한 “개구리”로 이야기해 보려 한다.

이렇게라도 써놔야 책임감에 글을 쓰겠지 싶어서이다.