시뮬레이션2017. 11. 14. 16:00

 

 

다른이가 매매 로직을 만드는 과정을 본적도 없고 들은적도 없기 때문에 필자는 그 누구로부터도 배움을 청할 수 없었고 그 과정에서 수 많은 시행착오를 겪을 수 밖에 없었는데요.

 


독자분들은 그런 시행착오를 조금이나마 줄일 수 있었으면 하는 바람에서 글을 적습니다.

 


우선 시장에서 발생하는 데이터는 시계열 데이터라고 합니다.

 


모든 데이터에 시간 혹은 날짜값이 매겨지기 때문이고 이 순서를 무시해서는 절대 안되는 데이터이기도 합니다.

 


시간순으로 정리된 데이터를 살펴보다보면 지수나 주가의 등락에 영향력을 주거나 하는 것으로 보이는 인자값들이 보일것입니다.

 


아직은 명확하게 보이는 단계는 아니고 "어?! 이게 연관성이 있는것 같은데?" 정도로 시작하는게 정상이고 맞습니다.

 


그렇다면 그런 인자값을 가지고 매매의 진입과 청산을 판단한다면 성과가 어떻게 나올지 궁금해지겠지요?

 


정확하지는 않더라도 대략적으로 해당 지표(주가, 거래량, 각종 보조지표, 이평선 등 모든 것을 지표로 통칭.)를 이용했을 때 어느정도의 성과가 나올 수 있는지에 대해 간단하게 시뮬레이션 해볼 수 있는 시뮬레이터 프로그램을 만어서 구동하는데 만약 직접 프로그램을 만들 능력이 안된다면 Yes-Trader 등을 이용해보기를 권합니다.

 


사용자가 직접 시뮬레이터 프로그램을 만들게 되면 생각하는 모든것을 프로그램으로 구현하여 시뮬레이션이나 실거래를 할 수 있다는 장점이 있으나 이를 위해 프로그래밍 언어를 배우기에는 시간과 비용이 너무 많이 드는 등의 진입장벽이 매우 X 100 높다는 단점이 있습니다.

 

 

Yes-Trader (예스 트레이더)는 이를 사용하고 편리하게 서비스를 제공하고 있는 장점을 가지고 제공되지 않는 지표가 있거나 복잡한 구조의 시뮬레이션이나 아주 정밀한 시뮬레이션은 할 수 없다는 단점도 가지고 있습니다.

(그래도 어느 정도는 쓸만하고 정확한 값을 찾는 단계가 아니므로 그럭저럭 괜찮을 것으로 생각됩니다.)

 

 

해당 인자값을 사용했을때 대략 어느정도의 손익이 나오겠다는 감이 올테고 그것으로 충분하거나 개선하면 괜찮아질 가능성이 있는것은 그대로 진행하고 성과가 형편 없거나 개선의 여지가 보이지 않으면 여기에서 STOP 하고 다시 각종 지표를 살펴보는 과정으로 돌아가야 합니다.

 

 

(일단 STOP이 아니라 GO를 외친분은 아래를 더 읽어 주세요.)

 

 

이제 어떤 데이터를 이용하면 괜찮은 성과가 나올 수 있을지 어렴풋하게나마 알게 되었으니 조금 더 면밀히 해당 지표를 뜯어 보기로 하겠습니다.

 

 

하나의 지표가 가질 수 있는 값은 상당히 많은데요.

 

예를 들어, 주가라고 하면 몇백원부터 몇백만원까지 아주 많은 경우의 수를 포함하고 있고 거래량은 0부터 몇십억까지 더 많은 경우의 수를 포함하고 있습니다.

 

상대적으로 경우의 수가 조금 적은 또 다른 지표라고 한다면 어떤 보조지표가 0.00부터 99.99까지의 값을 가진다면 경우의 수가 대략 만개쯤 밖에(?) 안되네요.

 

 

이런 지표들을 각 각 어떤 값으로 설정 했을 때 어떤 결과를 도출할 수 있는것인가를 시뮬레이션 해보는 과정이 필요합니다.

 

 

또 다른 시뮬레이션 프로그램을 만들어야 되겠지요?

 

 

1차 시뮬레이션은 간단하게 해본것이라 금방 결과가 나오겠지만 이번에는 한층 처리 해야 될 정보의 양과 경우의 수가 많기 때문에 시간이 제법 걸릴것입니다.

 

짧게는 몇분에서 길게는 몇달이 걸릴 수 있기 때문에 시뮬레이터의 내부 처리 알고리즘이 아주 정교해야 하며 실수가 없어야 귀한 시간을 허비하지 않을 수 있습니다.

 

실제로 필자의 경우 시뮬레이션이 완료 되기까지 4주를 예상하고 3주쯤 실행중인 상황에서 필자의 오타(Typo)로 인해 프로그램의 코드 일부가 잘못 처리되고 있다는 것을 뒤늦게 인지하고 모든 시뮬레이션의 실행을 중단하고 프로그램 코드내 오타를 수정하여 다시 구동한 적도 있습니다.

결과적으로 4주면 될 일을 7주 조금 넘게 걸려서 끝낸 셈인데요.

1시간짜리 작업을 망쳐서 1시간이 더 늘어 2시간이 되거나, 하루짜리가 이틀이 되는것은 큰 타격이 아닐 수 있지만 거의 한달에 가까운 시간을 허비했다고 생각하면 아쉬울 수 밖에 없습니다.

시간은 곧 비용이기도 하니까요.

 

 

2차 시뮬레이션은 지표의 세밀한 값 변화에 따라 최종 성과가 어떻게 변화하는가와 추후 개선의 여지가 있다면 어떤것을 더하거나 빼야 할 지 자세히 알 수 있는 시뮬레이션이 진행되어야 합니다.

 

 

이 아이디어는 (혹은 지표는) 잘 될것 같은데?라는 생각으로 첫번째 시뮬레이션을 건너띄고 두번째 시뮬레이션을 했을 시 성과가 좋으면 상관없지만 그렇지 않다면 더 많은 시간을 허비했다는 생각에 허망하기까지 할 수 있으므로 꼭 단계별 시뮬레이션 수행이 중요합니다.

 

 

필자의 경우 대체로 시장의 구성 요소중 가장 기초적인 데이터인 "가격"을 중점적으로 보는데요.

가격을 처리하는 부분의 알고리즘을 동일하다 하더라도 그 가격에 얼만큼의 주문을 넣을 것이고 시뮬레이션 상에서 얼마나 체결될 수 있을것인가의 수량 또는 운용자금 대비 비율값을 별도의 조건으로써 추가 합니다.

 

 

이렇게 처리 하면 해당 매매 로직을 실제 운용함에 있어서 어느정도의 금액을 투입하는것이 가장 좋을지에 대한 데이터도 같이 알 수 있기 때문입니다.

 

 

2차 시뮬레이션이 끝나면 일련의 로직의 결과값들이 데이터베이스에 저장 될텐데요.

 

 

이 결과를 그대로 사용하면 좋겠지만 조금 더 나은 성과를 얻기 위해서는 손실이 많이 발생할 수 있는 경우들에 대해 필터링을 하는 등의 검수 과정이 필요합니다.

 

 

2차 시뮬레이션의 결과가 몇개 되지 않는다거나 일일이 수동으로 분석해보겠다는 용자분이라면 상관없지만 2차 시뮬레이션의 특성상 지표의 세밀한 값 변화의 갯수만큼이나 결과물은 아주 많은 양인게 정상입니다.

 

 

때문에 2차 시뮬레이션의 결과에서 어떤값을 빼거나 어떤 기준으로 빼기 위해서는 3차 시뮬레이션을 진행해야 합니다.

 

 

2차 시뮬레이션의 결과값이 "아주 많은"이었다면 3차 시뮬레이션은 경우의 수가 훨씬 더 많아졌기 때문에 어마 어마 X 1000 하게 많은 양이 나와야 지극히 정상입니다.

 

 

3차 시뮬레이션이 끝나면 다른것 볼 필요 없고 개선의 여지를 찾을 필요도 없습니다.

 

 

이미 충분한 경우의 수를 대입하여 1, 2, 3차 시뮬레이션을 진행했기 때문에 해당 지표에 대해서는 박사급이 된 것이고 단순히 최정 성과(손익) 순으로 정렬해서 보고 최상위 성과를 낸 로직만 선택하면 될 일입니다.

 

 

예를 들어 A라는 지표를 선택했고 그 지표를 이용해서 해볼 수 있는 모든것을 해보았다면 두번 다시는 그 지표를 쳐다보지 않아도 됩니다.

 

 

여기에서 지표 A는 시장에서 널리 통용되고 있는 주지표 또는 보조지표일수도 있고 사용자가 임의로 여러개의 지표들을 조합하거나 한 것 모두를 포함하므로 시뮬레이션 해 볼만한 지표들은 널리고 널렸다고 할 수 있겠죠?

 

 

물론 경험이 많고 시장을 폭 넓게 이해하고 있다면 많고 많은 지표들중 성과가 좋을 것으로 기대되는 것들을 어느정도 추려내고 범위를 좁혀서 시뮬레이션을 통한 성과 분석을 할 수 있다는 장점이 있고 (장점을 이야기 했으니 단점도 이야기 해야 되겠죠?), 아는게 많은 만큼 해보고 싶은것도 더 늘어나서 일을 멈추지 못하는게 단점이라면 단점이고 필자의 상황이 현재 그런 상황입니다.

 

이미 다수의 시스템을 완성하여 실거래를 하고 있고 또 성과도 보고 있으며 별도로 시뮬레이션 해보고 있는 것들이 있지만 또 언젠가 아이디어가 갑자기 툭 튀어나오면 안해보고는 못 배길겁니다.

아마 잠도 못자고 늘 그 생각만 하게 될테니 차라리 며칠 고생해서 시뮬레이션 해보고 의혹을 풀어버리는게 낫지요.

 

 

3차 시뮬레이션까지 끝나고 나면 정말 시장에서 통용될 수 있는것인가와 직접 만든 자동매매 프로그램상에 오류는 없는지 점검 해보기 위해 소액으로 실거래를 시작해보세요.

 

 

프로그램의 안정성 개선과 오류 수정 그리고 추가 시뮬레이션 과정 등이 합쳐져서 약 6개월 정도는 해보셔야 합니다.

 

 

성과도 괜찮고 프로그램상의 문제도 없다면 메인 계좌로 옮겨서 운용하면 됩니다.

 

 

한가지 당부드리고 싶은 것은,

시뮬레이션은 최대한 많은 데이터를 대상으로 할 수록 상승구간, 하락구간, 횡보구간 등에 대해 공평하게 성과 분석을 할 수 있기에 유의미한 데이터를 도출할 수 있기에 시뮬레이션을 하기 위해서는 필요한 데이터를 확보하는게 급선무이고 1차 시뮬레이션 이후 2차, 3차 시뮬레이션은 Yes-Trader 등으로 할 수 없는 경우가 가능한 경우보다 훨씬 더 많기 때문에 가급적이면 정식으로 프로그래밍 언어를 공부하시라고 말씀 드리고 싶습니다.

 

 

호가창에서 뵙겠습니다.

 

 

Posted by 투자의神
시스템 성과 합산2017. 11. 13. 17:30

 

 

 

며칠째 진폭이 큰 흐름이 이어지고 있습니다만 시스템은 여러 이유로 거래를 하지 않고 있습니다.

 

 

필자가 가동을 중단 시킨것이 아니라 시스템 내에서 거래를 하지 않고 있는 것이고요.

 

 

주로 그 이유들은 옵션 프리미엄이 너무 높아서 매수 진입이 어렵다거나, 그렇다고 매도 진입하기에는 어려운 시장 흐름이 될 가능성이 높다고 보았을 때가 있고, 방향성에 따른 추세 추종 매매이다보니 방향성을 가늠하기 어려울때가 있으며, 원하는 진입점이 나타나지 않았을때도 있고 아주 다양합니다.

 

 

이 모든것을 시스템에 알아서 판단하고 진입하며 청산합니다.

 

 

원더풀하지 않습니까?

 

 

거래가 없던점은 아쉽지만 곧 수익을 한 트럭 안겨줄 것으로 믿고 쉬어 갑니다.

 

 

 

Posted by 투자의神
시스템 03호2017. 11. 13. 17:00

 

 

 

 

 

Posted by 투자의神
시스템 02호2017. 11. 13. 16:30

 

 

 

 

 

Posted by 투자의神
시스템 01호2017. 11. 13. 16:00

 

 

 

 

Posted by 투자의神
아이디어, 알고리즘2017. 11. 13. 15:30

 

 

무엇이 인공지능이고 퀀트이며 시스템인지 개념을 잡기 위해 정리 해봅니다.

 

 

각 용어들은 무엇이 다르고 또 무엇이 같은지 어떻게 구분해야 하는지 설명 들어갑니다.

 

 

 

퀀트 (Quant)

수량을 뜻 하는 영어 단어인 Quantity, 계측을 뜻하는 영어 단어인 Quantiative 와 분석가 Analyst (애널리스트)의 합성어이며 컴퓨터 공학부터 수학, 물리학, 통계학 등의 지식을 바탕으로 주식시장 혹은 종목의 주가를 예측하는 사람을 뜻합니다.

 

 

어떠한 모델에 대해 입력값을 주면 연산을 통해 결과값이 나오게 되는데 입력값으로는 시장종류, 시가총액, 환율, 금리, 경제성장률, ROE, POE, PBR, 당기순이익, 영업이익, 주가, 매출액, 거래량 등 종류가 다양합니다.

 

 

이러한 값들을 넣은뒤 어떤 결과가 나오는지에 따라 투자 여부를 결정하는것이지요.

 

 

인공지능 (Artificial Intelligence)

사람과 같이 지능을 가졌으나 사람의 인체처럼 실제하지 않고 가상의 공간에서 존재하는 것을 뜻하며

최근에는 알파고와 이세돌의 바둑 대결에서 유명해졌지만 퀀트도 인공지능도 금융 시장을 대상으로 연구, 분석, 적용에 있어서 수십년 이상의 역사를 가지고 있습니다.

 

 

 

 

 

 

 

알고리즘 (Algorithm) 이하 위키백과 발췌

어떠한 문제를 해결하기 위한 여러 동작들의 모임이다.

유한성을 가지며, 언젠가는 끝나야 하는 속성을 가지고 있다.

수학과 컴퓨터 과학에서 알고리즘이란 작동이 일어나게 내재하는 단계적 집합이다.

알고리즘은 연산, 데이터 진행 또는 자동화된 추론을 수행한다.

알고리즘이라는 단어는 페르시아의 수학자이던 알콰리즈미의 이름에서 따온 것이다.

 

 

퀀트든 인공지능이든 어떤 문제를 풀기 위한 각자의 방법이 있을텐데 그 방법들을 알고리즘이라고 표현합니다.

 

 

둘의 공통점은 컴퓨터 하드웨어 이외에는 실물이 존재하지 않는다는 것이며 모든 연산을 컴퓨터나 서버 등을 이용하기 때문에 빠르고 정확하다는 것입니다.

 

또한 컴퓨터를 이용하며 내부적으로 알고리즘이라는 처리 체계를 가지기 때문에 이를 시스템이라는 단어를 붙여 퀀트 시스템, 인공지능 시스템이라고 표현하기도 합니다.

 

 

업계에서 로보 트레이더라던지 로보 어드바이저라고 하는것들도 퀀트나 인공지능의 범위에 포함됩니다.

 

 

필자의 경우에는 퀀트의 방법대로 입력값의 경우의 수와 상황을 달리하여 철저하게 계량 분석한 결과 데이터를 두고 성과가 좋은 것을 사용하는 퀀트라고도 할 수 있고 또 운용중인 여러 시스템중 일부는 각각 계량 분석한 결과에 기반하지만 그것들의 집단을 가지며 때에 따라 가장 최적화의 길을 선택하도록 퀀트와 인공지능의 조합으로 운용하기도 하는데 대표적인것이 본 블로그에 공개하고 있는 V2 로직입니다.

 

 

이렇게 글을 남기지만 필자도 그렇고 독자분들도 그렇고 심지어 제도권에서 근무하는 사람도 대체적으로는 시스템 트레이딩, 알고리즘 시스템 트레이딩, 알고리즘 트레이딩, 인공지능 시스템, 인공지능 알고리즘 시스템 등으로 각기 다른 용어를 혼용해서 사용하는게 일반적일 것입니다.

 

 

아무래도 외래어이고 또 경우에 따라서는 비슷한 영역도 있기 때문인데요.

 

 

사실 용어야 어떻든 사람 대신 알아서 최적의 거래를 하고 성과를 안겨준다면 최고 아닐까요?

 

 

이 부분에 대해 심도있게 연구 관찰하고 논문을 쓴 박사(Ph.D) 급이 아니라면 어떤 용어를 사용하더라도 크게 문제 없을 것 같습니다.

 

 

 

Posted by 투자의神
아이디어, 알고리즘2017. 10. 30. 09:20

 

 

테마주, 작전주...

 

 

많은분들이 이러한 급등주의 시세에 편승하여 큰 수익을 내고 싶어 할 것입니다.

 

 

그러기 위해서는 우선 작전 세력, 그들은 누구인지부터 알아야겠지요.

 

 

작전 세력이란 그들이 원하는대로 시세를 임의로 조종하여 시세 차익을 얻는 개인 또는 집단이라고 보면 됩니다.

 

 

작전 세력이 손대는 종목이 무엇인지 아는 방법은 그리 어렵지 않지만 애석하게도 그들의 작전이 매번 성공하지는 못합니다.

 

 

우선 작전을 하기 위해서는 여러 조건들이 있는데 충분히 사고 팔 수 있는 자금력이 우선일 것이며 회사 내부자와의 연결고리를 가진 사람도 정보 취득의 우위에 있을 수 있기에 유리하고 주식에 어느정도 이상 정통한 실력자 즉 사람이 포함되어 있어야 합니다.

 

 

古박용하氏가 출연했던 영화 '작전'을 보셨던 분이라면 (정확하게는 아니더라도) 작전 세력의 면면을 이해하는데 도움이 많이 될 것입니다.

(못보신분께는 꼭 한번쯤은 관람 해보라고 권하고 싶습니다.)

 

 

그들은 정(情)으로 연결된 집단이 아니고 무조건적인 수익을 추구하는 사람들의 결합이므로 상호간에 배신과 배반이 빈번합니다.

 

 

또한 사람의 문제가 아니더라도 자금력이 더 많은 작전 세력이 들어오면 쉽게 말해 '발릴'수 밖에 없습니다.

 

 

자금력이 엄청나게 많다면 굳이 이런 작전 안해도 되겠지요.

 

 

대부분은 돈 많은 쩐주를 끼고 고리대를 지급하며 작전을 펼치기에 자금력의 한계가 있을 수 밖에 없고요.

 

 

시세를 조종하고 이익을 취하려는 작전 세력은 늘 존재해왔지만 일부는 실패하고 또 일부만 성공하는게 현실입니다.

 

 

그렇다고 무조건 이런 작전 세력들을 비난만 할 수는 없습니다.

 

 

개인들끼리 치고 받는 잔잔한 물결에 풍덩 뛰어 들어 큰 파동을 형성하고 수급을 원활하게 해주고 일부나마 유동성을 제공하는 측면도 있기 때문입니다.

 

 

매스컴에서 작전 세력으로 인해 수 많은 개인 투자자들이 피해를 본다고 하지만 제 개인적인 생각으로는 작전 세력의 문제가 아니라 올바른 정보와 판단력 없이 무리하게 투자한 개인 투자자들의 문제라고 생각합니다.

 

 

비단 중소형의 작전주와 작전세력이 아니더라도 이런 경우는 많이 볼 수 있는데요.

 

 

최근 반도체 메모리 수급 관련 이슈로 급등중인 삼성전자나 SK하이닉스에 투자 했다가 손해보는 사람은 늘 있습니다.

 

 

또한 이 종목들을 대상으로 시세와 시장을 움직이려는 시도도 없는것이 아닙니다.

 

 

시가총액 규모의 크고 작음의 문제가 아니라 투자하는 투자자의 문제라고 보는편이 조금 더 낫다 싶습니다.

 

 

제 아무리 고수라도 시장의 흐름에 순응하지 않고 겸손하지 않고 방심하면 시장이든 작전 세력이든 누군가에게 당할 수 밖에 없습니다.

 

 

개인 투자자들은 자금력이나 정보력 등에 있어 상대적인 약자 입장이다보니 아무래도 어느정도의 피해의식을 가질 수 밖에 없는게 현실이기도 합니다.

 

 

이 세상에서 제일 못난 사람이 남탓 하는 사람이라는 것쯤은 성인이라면 누구나 알고 있습니다.

 

 

스스로의 잘못된 결정으로 손해를 보고 시장이나 작전 세력을 탓하는 것은 옳은 것이 아닙니다.

 

 

작전주, 저도 참 많이 쫓아 다녀봤고 밤새워 차트 분석에 몰두하기도 했으며 수익을 보기도 했지만 작전주를 대상으로 투자를 하는것만큼 피곤한 일도 없습니다.

 

 

매일같이 시장을 분석하고 종목을 분석하고 세력을 분석하고 테마를 분석하는게 얼마나 피곤한 일이겠습니까?

 

 

세력의 흔적이 아니라 상승과 하락을 구성하는 요소와 전조 증상들에 대해 연구하고 추세 매매를 지향하면서부터 이런 피곤한 일들을 하지 않아도 되고 시간적 여유에 기반하여 정말 사람답게 여유있게 살 수 있게 되어 참으로 잘한 선택이다 싶습니다.

 

 

매수자는 매수의 사유가 있어야 하고 매도자는 매도의 사유가 분명해야 합니다.

 

 

독자분들은 그런 사유를 가진채로 포지션을 보유하고 계신가요?

 

 

아니면 친구따라 강남가기 식으로 투자가 아닌 투기를 하고 계신가요?

 

 

굳이 말과 글로써 표현하지 않더라도 계좌가 그 과정과 결과를 보여주고 있으리라 생각합니다.

 

 

더 이상 잘못된 피해의식에 사로 잡혀 괴로운 나날들을 보내지 말아야 합니다.

 

 

누구의 방법이 옳은지 증명하는것은 시간이 지나면 계좌가 말해줄겁니다.

 

 

호가창에서 뵙겠습니다.

 

 

 

Posted by 투자의神