시뮬레이션2017. 11. 14. 08:35

 

 

2017년 11월 12일 저녁.

 

 

모처럼 시간을 내어 한참을 프로그램 코딩 하고 있는데 한통의 카톡을 받았습니다.

 

 

 


▲ 연락주신분은 본 블로그를 보는 다른 독자분들도 알 수 있는 분이라 알 수 없도록 일부 정보를 삭제 했습니다.


 

전화를 걸어 하는 말씀을 들어보니 언젠가 자동매매 프로그램이라는 것을 구매 했는데 생각보다 성과가 저조하고 답이 보이지 않는다는게 주요 내용이었습니다.

 

 

또 자동매매라는 것, 매매 로직이라는 것, 시뮬레이션이라는 것, 조건식이라는 것에 대해 다양하게 약 30여분간 통화를 했고 간단히 정리된 문답식으로 그 내용을 정리 해보겠습니다.

 

 

독자 질문.

간단한 조건식만으로 자동매매가 가능한가요?

 

필자 답변.

가능할수도 가능하지 않을수도 있습니다만 조건식과 그 세부 조건값에 따라 다를 수 있습니다.

 

 

독자 질문.

간단한 조건식들로는 답이 보이지 않는것 같고 프로그램을 구매했던 @@@ 카페에서 보니 다른 구매자들도 괜찮은 성과를 냈다는 글이 전혀 없는데 무엇이 문제일까요?

 

필자 답변.

자동매매 프로그램에서 선택할 수 있는 조건의 종류와 그 조건들이 가질 수 있는 범위의 한계치 내에서 세밀하게 조절하여 성과를 분석 해볼 수 있는 경우의 수가 워낙 많기 때문에 손으로 일일이 하기에는 어려움이 있기 때문에 현재까지 괜찮은 성과가 나타나지 않았을 수 있으므로 앞으로 무한대의 시간이 주어진다면 언젠가는 찾아낼 수 있으리라 생각합니다.

좋은 성과를 낼 수 있는 조건값을 찾은 사람이 있다 하더라도 굳이 그것을 공개하려고 하지 않을테니 그런 사람이 있어도 보이지 않을뿐입니다.

 

 

독자 질문.

어떻게 해야 주식투자를 통해 좋은 성과를 낼 수 있을까요?

 

필자 답변.

앞서 말씀 드린것처럼 손으로 그리고 수동으로 무언가를 해본다는것에는 물리적인 한계가 있기에 최대한 많은 경우의 수를 대입해보고 찾으면 성공하는 것이고 그렇지 못하면 실패할 수 밖에 없습니다.

어떤 값이 가장 Best의 성과를 낼 수 있는지 시뮬레이션을 해보셔야 합니다.

무언가 사업을 하더라도 머릿속으로 혹은 종이위나 컴퓨터 화면상에서 나름대로 손익 계산을 해보고 성공 가능성을 따져보는데 아무런 대책없이 무작정 실거래로 이렇게도 저렇게도 해본다면 정작 꽤 좋은 성과가 나올 조건값을 찾은 시점에는 운용자금이 바닥난 상태일 수 있습니다.

 

 

독자 질문.

그렇다면 본인이 구매한 프로그램은 쓸모없는 프로그램인가요?

 

필자 답변.

단정적으로 말씀 드릴 수 없지만 수동으로 각 조건값들을 조합하고 세밀한 값 조정을 하며 성과 분석하기 어렵기 때문에 현실적으로는 성과를 내기에 불가능한 수준이 아닐까 생각합니다.

 

 

독자 질문.

앞으로 알고리즘 자동매매 시스템이 대세가 될 것으로 생각되는데 어떻게 준비해야 할까요?

 

필자 답변.

일반적으로 손매매를 하는 투자자라면 각자가 어떤 조건들에 대해 흥미를 느끼고 깊이 연구 해보았는지에 따라 다르겠지만 필자처럼 컴퓨터 프로그램을 이용해서 시뮬레이션을 하고 실거래를 하는 사람들에게는 "흥미"라는 것은 크게 의미를 가지지 않고 다양한 조건값들의 나열 속에서 어떠한 조합들의 결과가 주식투자라는 행위를 영위할 수 있도록 해줄 것인가에 대해 아주 세밀하게 시뮬레이션을 해보는것만이 중요 할 뿐입니다.

최대한의 경우의 수를 입력해서 검토 가능한 모든 상황에 대해 시뮬레이션 해본다면 그중에 충분히 좋은 성과를 보여주는 로직이 나타날 수 있습니다.

때문에 현재 상황에서는 성과가 전혀 나타나지 않고 있는 거래 행위를 모두 멈추고 시뮬레이션 해 볼 수 있는 여건을 직접 구축하여 다양한 상황들을 가정하여 시뮬레이션을 해보고 최적의 조건값을 찾는게 우선이며, 직접 시뮬레이션 시스템을 구축할 수 있는 부분이 아니라면 주변에 실력있는 프로그램 개발자에게 의뢰하여 시뮬레이션 시스템을 구축하는 것이 우선입니다.

최적의 조건값만 찾는다면 그 이후에는 별달리 어려울 점이 없을 수 있습니다.

 

 

제법 긴 시간동안 꽤 많은 내용에 대해 대화 했지만 일부 내용은 반복적인 것도 있기 때문에 대략 위와 같이 정리 할 수 있을 것 같습니다.

 

 

아래에서 필자가 시뮬레이션을 하는 상황들에 대해 조금 더 설명 하고자 합니다.

 

 

 

▲ 시뮬레이션 한 결과 값들이 저장되는 데이터베이스의 모습이며, 거래날짜, 각 조건값들의 조합인 로직명, 거래수량, 거래 종목코드, 진입가격, 진입시각, 진입후고가, 최대 평가손실, 최대 평가수익, 수수료, 손익, 순손익, 청산가격, 청산시각, 거래여부 등을 기록하고 있습니다.

 

 

이런 형태로 저장된 시뮬레이션의 결과가 아주 많지만 가장 끈질기게 물고 늘어졌던 로직에 대해 보여드리면 아래와 같습니다.

 

 

 

▲ 각 조건들에 따라 Tested Version을 달리하여 그 결과들을 저장한 공간들의 집합입니다.

 

 

 

▲ ver1_v1_and_v2 의 경우에는 첫 출발로 간단히 시뮬레이션하여 결과값이 약 132.8만개 저장되어 있습니다.

 

 

 

▲ ver2_v1_and_v2 의 경우에도 비슷한데 약 136.8만개의 결과가 저장되어 있습니다.

 

 

 

▲ ver3_v1_only 의 경우에는 3억 5162.4만개의 결과가 저장되어 있습니다.

 

 

 

▲ ver3_v2_only 의 경우에는 2782만 4160개의 결과가 저장되어 있습니다.

 

 

 

▲ ver4_v2_only 부터는 약간 방향을 달리하여 저장된 갯수가 감소합니다. 약 335만개의 결과.

 

 

▲ ver5_v2_only는 약 596만개의 결과.

 

 

 

▲ ver6_v2_(생략)에는 약 1355만개의 결과

 

 

 

▲ ver7_v2_(생략)에는 약 42.7만개의 결과

 

 

 

▲ ver7_v2_(생략)에는 약 42.7만개의 결과

 

 

(일부는 로직명을 포함하고 있는 내용이 있어서 그림판에서 삭제하였습니다.)

 

 

현재 필자의 사무실에 있는 여러대의 컴퓨터에서는 ver4_v1_only 라는 집합 이름에 대해 약 3주째 시뮬레이션이 진행되고 있으며 결과는 약 8억개 정도 나올 예정입니다.

 

 

또한 앞서 시뮬레이션 카테고리에 포스팅 한대로 AWS (Amazon Web Service = 아마존 클라우드)를 통해 약 일주일째 시뮬레이션이 진행되고 있으며 향후 약 14~16일후 시뮬레이션이 종료 될 것으로 생각하고 결과값으로는 약 15억개를 예상하고 있습니다.

 

 

이처럼 다양한 상황들을 스스로 만들고 구상하여 시뮬레이션을 해보고 그 중 최적의 조건값을 찾는것이 필자의 주된 일입니다.

 

 

물론 필자도 밤을 새워가며 HTS를 붙잡고 손으로 일일이 분석 해보기도 했고 여러 시행착오도 경험 해봤지만 이제는 차트라는 것을 별로 볼 일이 없고 일상 속에서 다양한 경험을 하며 또 다양한 정보들을 접하며 이런것들을 매매에 접목 시켜보면 성과가 어떨까? 라는 생각만 하고 살고 어느정도 범위가 정해지면 시뮬레이션 프로그램을 개발하여 테스트 하는 것만으로도 좋은 수익 로직을 발견해나가고 있습니다.

 

 

위에 공개한 범위 이외에도 다른 카테고리에 대해서 더 많은 결과값을 가지고 있을 정도로 시뮬레이션 해보았고 또 현재도 "보다 더 높이, 보다 더 멀리"를 위해 계속 연구를 하고 있습니다.

 

 

독자분들께서 손으로 한땀 한땀 정성을 들여 1년을 시뮬레이션 해보더라도 컴퓨터의 단 몇분만에 처리하는 정보량을 이길 수 없는 시대에 살고 있습니다.

 

 

좋든 싫든, 선택했든 아니든 상관없이 말입니다.

 

 

이미 좋은 성과를 내고 계시다면 전혀 무관한 얘기일 수 있으나 아직 길이 보이지 않는다면 방향과 방법을 달리해서 시도 해보는것은 어떨까 생각이 듭니다.

 

 

호가창에서 뵙겠습니다.

 

 

 

 

 

Posted by 투자의神
시뮬레이션2017. 11. 4. 06:32

 

 

그동안 많은 경우에 대해서 시뮬레이션 해왔지만 가장 기억에 남는것은 가장 좋은 성과를 냈던 시뮬레이션의 경우와 시뮬레이터 아이디어 구상부터 시뮬레이터 프로그램의 소스 코딩이 가장 힘들었던 경우가 있겠지만 아무래도 이번 시뮬레이션은 사상 최대 규모이기 때문에 가장 기억에 남을것 같습니다.

 

 

142,688개의 경우의 수에 대해서 시뮬레이션할 때는 연산 규모가 약 1.4조번이었던것 같고,

4,500,000개의 경우의 수에 대해서 시뮬레이션 할 때는 연산 규모가 45조번이었던것 같은데...

 

 

지금까지중 시뮬레이션의 끝판왕을 만나 보려 합니다.

 

 

총 경우의 수가 164,091,200 으로써 연산규모는 1805조번이나 됩니다.

 

 

생각할 수 있는, 머리에서 최대한 쥐어짤 수 있는 경우의 수를 모두 조합하여 시뮬레이션 하려다보니 말도 안되는 연산이 필요할 것 같은데요.

 

 

만약 CPU가 1초당 100만번의 연산을 할 수 있다고 가정하면 1805조번의 연산을 위해서는 1,805,000,000 초가 소요되며 약 501,388시간 (= 20,891일 = 57년)이 소요됩니다.

 

 

1000만번이라도 5.7년이 소요되고 1억번이라도 약 209일이 소요됩니다.

 

 

5억번쯤의 연산이 가능한 CPU라 하더라도 약 42일이 소요됩니다.

 

 

실제로 이런 시간을 감소시켜 빠르게 원하는 결과를 보기 위해서는 시뮬레이션을 위한 시스템 구축을 병렬처리 하는것이 좋은데 1억번쯤 연산할 수 있는 시스템을 20대쯤 구매하여 제각각 작업이 진행될 수 있도록 한다면 약 21일만에 모든 연산이 완료될 수 있습니다.

 

 

앞서 예로든 5억번 연산이 가능한 시스템 20대라면 4일이면 모든게 끝나겠지만 이정도 규모라면 장비 구입에 필요 이상의 장비 구매 비용이 투입되고 20대의 장비의 비치공간 및 구동 소음을 감당할 수 없겠지요.

 

 

컴퓨터가 1805조번을 연산 하려면 얼만큼의 시간이 소요될지 가히 상상도 되지 않기에 어느정도의 테스트 장비가 필요할지 측정하는것이 무리라 판단하여 아마존에서 서비스하고 있는 클라우드를 이용할 계획입니다.

 

 

이름하여, Amazon Web Service 인데요.

 

 

흔히 줄여서 AWS 라고도 합니다.

(글로 적을때는 AWS가 편하고, 말로 할 때는 그냥 Amazon Cloud Service가 편합니다.)

 

 

익히 많은분들이 알고 계시겠지만 모르는 분도 계실테니 링크 남깁니다.

https://aws.amazon.com/ko/ec2/

 

 

AWS가 뭔가 궁금한 독자께서는 한번 방문 해보세요.

 

 

AWS에 대해 간략히 설명하면 다양한 종류의 서비스나 연산 등을 위해 컴퓨터를 임대 해주는 서비스인데 실물의 PC나 서버를 배송해서 임대하는 방식이 아니라 아마존에서 독자 구축한 데이터 센터에 있는 PC나 서버류를 원격으로 접속하여 뭔가를 할 수 있게 해주는 서비스이며 기존에 개인이나 법인이 PC또는 서버를 이용할 때와 달리 아마존만의 특화된 점은 아래 별도로 정리 합니다.

 

 

 

장점

단점 

개인

실물을 접하며 설정할 수 있다.

 

다양한 업그레이드 및 커스트마이징이 가능하며 비용이 저렴하다.

 

시간의 경과에 따라 감가상각이 발생하고 내구연한 또는 사용연한이 도래하면 신규 구매를 위한 추가 비용이 발생한다.

 

별도의 비치 공간이 필요하다.

 

전력 공급 또는 인터넷 서비스 공급이 단절되면 이용할 수 없다.

 

장비 구매 이외에 전기요금, 인터넷 요금이 발생한다.

 

소음과 분진이 발생한다.

 

별도의 데이터 백업이 필요하다.

 

IDC

 

전기요금과 인터넷 요금을 걱정하지 않아도 된다.

 

소음으로부터 자유롭다.

 

전력 공급 단절 및 인터넷 서비스 공급의 단절을 염려하지 않아도 된다.

 

별도의 비치 공간이 필요하지 않다.

 

 

개인의 최대 장점인 업그레이드가 부분적으로 제한되며 비용이 개인이 부담하기에는 부담스럽다.

 

통상 계약 기간은 연단위로 설정하지만 경우에 따라 단기 이용도 가능하다.

 

별도의 데이터 백업이 필요하다.

 

하드웨어 장애에 대비해야 한다.

 

AWS

 

소음, 분진, 전력상황, 인터넷 서비스 연결 상황을 전혀 고려하지 않아도 된다.

 

원하는 기간만큼만 사용하고 사용한양에 따라 요금을 지불하는 종량제 서비스이다. (초단기 또는 초장기 기간 사용가능)

 

신규 구매 비용이 발생하지 않고 유지 보수에 대해 염려하지 않아도 되며 내구연한이 없다.

 

별도의 비치 공간이 필요하지 않다.

 

별도의 데이터 백업이 필요하지 않다. (자동백업)

 

하드웨어 장애에 대해 걱정하지 않아도 된다.

 

계약 조건(이용할 사양과 기간)에 따라 다르지만 대체로 이용요금이 비싼편이다.

 

 

 

 

이정도면 AWS가 뭔지 잘 모르는 독자분도 어느정도는 쉽게 이해할 수 있을것이라 생각합니다.

 

 

필자의 시뮬레이션의 경우 통상 자가 보유한 PC, WorkStation, Server 등을 이용하지만 이번의 경우에는 어마어마한 규모의 시뮬레이션이 필요하고 또 언제 이런 시뮬레이션을 추가로 더 하게 될지 혹은 안하게 될지 알 수 없기 때문에 수천만원을 호가하는 장비를 신규 도입하기에는 비용이 지나치고 또한 비행기가 이륙하는 정도의 소음을 감당할 수 없으며 신규 비치 공간이 필요해지기 때문에 AWS를 이용하면 충분히 모든 고민이 해결 될 수 있습니다.

 

 

예를 들어 향후 언제 또 다시 사용하게 될지 모를 5천만원짜리 장비 2대를 구매하면 1억원이 필요하고 시뮬레이션을 위한 설정에 전문 인력을 섭외해야 하며 도저히 사무실에서 구동할 수 없는 소음은 어찌 감당할 수 있겠습니까?

 

 

차라리 몇십만원 혹은 몇백만원의 비용을 지불하고 최고 사양의 장비를 단기 임대하여 원하는 시뮬레이션을 실행하고 계약 종료하면 모든 단점을 커버할 수 있다.

 

 

물론 시뮬레이션 한번에 몇십만원에서 몇백만원의 비용을 들인다는게 부담될 독자분도 계시겠지만 필자의 경우 어느정도 충분히 검수된 로직들의 집합 단위로 시뮬레이션하기 때문에 꽤 성과가 좋은 알고리즘 자동매매 시스템의 운용으로 연결될 수 있는 부분이기에 걱정하지 않아도 되기 때문이기도 합니다.

 

 

아이디어가 시뮬레이션으로 연결되고 있으니 조만간 본 블로그에 새로운 시스템 성과를 등록할 수 있기를 고대해보겠습니다.

 

 

Posted by 투자의神
시뮬레이션2017. 10. 30. 02:42

 

 

알고리즘 자동매매 시스템의 완성 단계에 이르기까지 많은 과정들을 거치게 됩니다.

 

 

시장을 관찰하고 특정 현상들을 발견하게 되면 그 아이디어를 기반으로 샘플 조사를 해보고 실거래를 곧바로 하는 개인들은 바로 한강 코스입니다만, 알고리즘 자동매매 시스템을 전문적으로 기획하는분의 경우 혹은 손매매 고수분들을 보면 반드시 시뮬레이션 단계를 거치고 다듬고 다듬고도 혹시 놓친것은 없는지 몇번을 점검한 후에 괜찮은 매매로직으로 탄생하게 됩니다.

 

 

시장의 흐름에 크게 영향을 받거나 주는 경우가 아닌 다음에야 매매로직을 수정할 경우도 거의 없습니다.

 

 

그러나 호가에 영향을 주는 물량이거나 하는 경우에는 시장에도 영향을 주게 되고 그것은 결국 시뮬레이션을 하면서 예상했던 결과와 실제 거래에서 나타나는 결과가 달라지는 상황으로 연결됩니다.

 

 

시뮬레이션의 주체는 시장 밖의 '나'이고, 실거래의 주체는 시장 안의 '나'이기 때문입니다.

 

 

여기에서 약간의 차이가 발생하는 정도라면 그 시스템은 꽤 안정적인것이고, 시장 밖에서와 안에서의 결과가 확연하게 다르다면 그 시스템은 시장의 작은 돌발 변수나 이슈에도 손익 그래프가 꽤 민감하게 반응하며 불안정한 손익 그래프를 보여줌으로 인해 운용하는 사람으로 하여금 장기 운용의 의지를 떨어뜨릴 수 밖에 없습니다.

 

 

자 여기까지가 안정적으로 운용할 수 있는 알고리즘 자동매매 시스템에 대해서 간략히 말씀 드렸고,

오늘 본격적으로 말해볼 내용은 "개개인에 따른 알고리즘 자동매매 시스템 성과의 만족 기준"입니다.

 

 

"개개인"이라고 굳이 표현한것은 각자가 운용하는 자금의 규모도 다르고 자금의 성격도 다르기 때문에 만족의 기준 또한 달라질 수 밖에 없기 때문입니다.

 

 

급하지 않은 여유자금의 자기자본 1억과 한달후에 용처가 있을 예정인 자기자본 1억과 주택담보 대출로 받은 자금 1억은 완전히 다릅니다.

 

 

여유자금은 성과가 조금 적거나 미진하더라도 혹은 손익 그래프가 조금은 출렁이더라도 수익만 내준다면 크게 부담될 이유도 없고 마음이 급해질 상황도 아니지만,

 

 

한달후에 용처가 있을 예정인 자금은 앞으로 1개월후에 적어도 원금 이상을 유지하고 있어야 한다는 단서가 붙습니다.

 

 

또 대출 등의 방법으로 마련한 자금은 고정비용이 발생하는데 원금과 이자의 상환에 따라 시간의 경과에서 오는 운용자본금의 감소이며 이는 상당한 부담으로 다가올 수 밖에 없습니다.

 

 

위 3가지 경우에서 여유자금이며 운신의 폭이 넓고 자유로운 자금일수록 알고리즘 자동매매 시스템의 성과가 주는 만족도는 높아질 수 있다는것을 말씀 드렸습니다.

 

 

그러나 이게 전부는 아닙니다.

 

 

예를들어 필자처럼 여유자금을 운용하지만 만족도가 높아질 수 밖에 없는 경우인데요.

(본 글을 시뮬레이션 카테고리에 적는 이유이기도 합니다.)

 

 

두달여전부터 진행한 시뮬레이션이 이제 99.99% 정도의 진행상태를 보이고 있고 시스템(물리적 컴퓨터의 구분) 2대로 나눠서 진행하였는데 하나의 시스템에서는 100% 완료되었고 나머지 한대에서는 99.99%의 경과를 보이고 있습니다.

 

 

이중 100% 완료한 시뮬레이션 결과를 분석 해보니 (참고로 이 시뮬레이션은 120 * 8 * 90 * 50에 해당하는 4,320,000 가지 경우의 수에 대해 약 1억건의 데이터를 대입하였고 최소 연산은 약 432,000,000,000,000 회 (432조 회) 이뤄졌습니다.) 연환산 기대 수익이 60%선밖에 되지 않았습니다.

 

 

이미 기존에 운용중인 시스템들은 연환산 기대 수익이 100%선을 넘는데 비해 상대적으로 적은 기대 수익을 보여주고 있기 때문에 1차로 분석한 데이터는 모두 폐기하였고 현재 99.99%의 경과도를 보이는 경우에도 성과가 좋지 않을시에는 폐기 예정입니다.

 

 

운용중인 알고리즘 자동매매 시스템의 갯수가 적다면 "계란은 한바구니에 담지 말아라"는 주식 격언처럼 포트폴리오 구성 차원에서 자금을 분산하기 위해 성과가 다소 뒤쳐지는 경우라도 수용하고 운용하겠지만 이미 십여개의 시스템을 운용하는 입장에서는 구태여 성과가 뛰어나지 않은 경우를 끌어안고 갈 이유가 없다고 판단했기 때문입니다.

 

 

독자분들께서는 연 환산 기대 수익이 60%인 시스템을 취하시겠습니까? 아니면 버리시겠습니까?

 

 

그것은 단순한 수치만으로 볼것이 아니라 독자분들이 운용하는 자금의 규모와 성격에 따라 각자가 내놓을 답은 달라지겠지요.

 

 

한가지 예를 더 들어 드리자면,

증권가에서는 연간 성과가 마이너스여도 상관없습니다.

시장 수익률(인덱스 펀드 또는 지수 단순 상승률 비교)에 근접하기만 하면 성과가 좋다고 판단하기 때문입니다.

(물론 매번 마이너스 성과를 낸다면 계약 연장이 안될수도 있겠죠)

 

 

시장이 움직인것보다 얼마나 더 괜찮은 성과를 내었는가가 기준입니다.

 

 

이 말을 달리 해석하면 시장 내에서도 상승을 주도하는 종목들을 적절히 잘 갈아타거나 추세가 나타나는 경우에 이를 최대한의 수익 지점까지 보유할 수 있는 혜안과 능력이 있는 사람인가를 볼 수 있는 단적인 성과 분석 지표이기 때문입니다.

 

 

HTS를 켜고 독자분들의 계좌도 한번 점검 해보세요.

 

 

"나는 수익을 내는 투자자인가?"

"나는 시장의 움직임을 최대한 잘 포착하고 시세를 최대한 길게 즐기는 투자자인가?"

 

 

두번째 물음에는 NO라고 하더라도 첫번째 물음에 대해 충분할만큼의 수익을 내고 있다는 답변이 나온다면 상관없습니다만 만약 첫번째 질문에 대해 NO라는 답변이 나온다면 "직접투자"보다는 간접투자(펀드, 적금, 보험 등)를 권해드리고 싶습니다.

 

 

사실 저는 어느쪽이든 상관없고 제 수익원이 되어줄 일명 '호구'가 많으면 많을수록 좋기는 합니다.

 

 

필자의 시스템이 호구인지 혹은 독자분중 무모한 싸움을 선택한 누군가가 호구인지 진검 승부 해보면 되겠군요.

 

 

호가창에서 진검 승부를 기대합니다.

호가창에서 뵙지요.

 

 

Posted by 투자의神