시스템 성과 합산2017. 11. 14. 17:00

 

 

 

 

지난 11월물 옵션 만기일 이후 필자의 시스템은 시스템은 침묵을 지키고 있습니다.

 

 

아직은 때가 아닌것으로 판단하는것 같은데 적절하게 때가 맞으면 거래를 하겠지요.

 

 

그 속을 저도 모르니 믿고 기다릴뿐입니다.

 

 

어제부터 더없이 바쁜 일정을 보내고 있고 약 일주일간은 이곳에 머물 예정이라 진행하던 프로그램의 개발은 모두 HOLD 상태로 두었습니다.

 

 

복귀 후에는 시간적 여유가 좀 될 것 같으니 양해 부탁드립니다.

 

 

시장에 대해서 혹은 시뮬레이터나 무상제작건이나 알고리즘 자동매매 시스템에 대해서도 좋고 다른것도 좋고 궁금한 내용이 있으면 각 카테고리의 해당 게시물에 Comment 많이 남겨주세요.

 

 

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

 

 

 

 

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

 

 

 

 

 

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

 

 

 

 

Posted by 투자의神
시뮬레이션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 투자의神
프로그래밍 with C#2017. 11. 5. 09:02

 

 

제목에 시장 재구현과 시뮬레이션을 동의어인 것으로 표현했습니다.

 

 

시뮬레이션을 조금 더 자세히 알아보기 위해 시장 재구현이라는 말을 제 임의로 만든 말입니다.

 

 

우선, 시뮬레이션에 대해 알아 보겠습니다.

 

 

(구글 검색 키워드로 "simulation 뜻' 이라고 입력한 결과)

 

물리적 또는 추상적인 시스템을 모델로 표현하고, 그 모델을 사용해서 실험을 하는 일.

실제로 모형을 만들어 하는 물리적 시뮬레이션과, 수학적 모델을 컴퓨터상에서 다루는 논리적 시뮬레이션이 있음.

공학상의 설계 및 사회 현상 분석 등에 쓰이는데, 방대한 수치 계산을 고속으로 처리하는 실시간(實時間)의 시뮬레이션은 컴퓨터의 이용으로 비로소 가능해졌음.

 

 

물리적인 구현과 논리적인 구현이 있다고 되어 있는데 필자가 하고 있고 또한 독자분들도 하고 계신것이 논리적인 구현입니다.

 

 

투자를 하기에 앞서 수립한 가상의 조건값(예. A하면 B한다. 그러나 C하면 D한다.)이 얼마만큼의 효용성이 있는지

즉, 성과를 낼 수 있는 것인지 검증 해보기 위한 방법인데 물리적인 시간을 거스를 수 없으므로 당시의 상황을 가정하여 생성하는 논리적 프로세서라고 이해 하시면 조금 더 쉽습니다.

 

 

HTS, MTS 등으로 차트를 보고 복기 해보는 과정,

검색식 등을 이용하여 종목들을 찾아보거나 동일한 수익 모델을 기준으로 각각의 투자 성과가 어떠했으리라 추정 해보는 모든 과정이 논리적 시뮬레이션입니다.

 

 

어때요?

참 쉽죠?

 

 

이 시뮬레이션을 저는 시장 재구현이라고 정의 합니다.

 

 

시장을 재 구현하기 위해서 우리가 고려해야 될 요소들이 생각보다 상당히 복잡 다양한데요.

 

 

그러기 위해서는 당시의 모든 시장 데이터들을 확보하고 있어야 하며 시계열 형태로 배치되어 있어야 합니다.

 

 

제가 시장에서 수신받은 데이터를 데이터베이스 서버에 실시간으로 저장하며 데이터들을 수집하고 있는데 그것은 시장 전부의 데이터는 아니고 관심이 있는 특정 부분 위주의 데이터들이고 그 양이 1거래일간 약 2천만건에 이릅니다.

 

 

그리고 확보된 데이터가 수십억건이 넘는데요.

 

 

 

이 데이터들을 안전하게 보관하고 데이터의 이중화, 백업의 이중화가 반드시 필요하며 또 이러한 데이터들을 시장 재구현이 필요할 때마다 빠르게 불러오고 처리할 수 있는 컴퓨팅 머신(Computing Machine)이 필요하기 때문에 일반적인 경우에는 비용 등의 문제로 사실상 불가능합니다.

 

 

소수의 사람만 가능합니다.

 

 

물론 데이터들이 날아가도 크게 신경쓰지 않고 속도도 고려치 않는다면 아마도 몇십만원짜리 PC로도 가능하겠지만 소실되고 나면 다시는 절대!! 구할 수 없는 데이터들을 그렇게 보관한다는게 말이 안되는것이죠.

 

 

일반적인 접근성이 떨어지는 "전문(specialty) 데이터"이기 때문에 그에 맞는 취급을 해줘야 할 필요성이 있습니다.

 

 

시계열 데이터 기반으로 시뮬레이션 하고자 하는 대상에 맞는 데이터를 확보하고 코딩을 시작해야 합니다.

 

 

시계열 데이터를 기본으로 두고 하나씩 순서대로 살펴보며 가상의 조건값에 대한 이벤트를 감지하여 처리 하는게 필요한데 이 부분에서 수행시간을 고려하지 않을 수 없습니다.

 

 

시뮬레이션 하려는 데이터의 갯수가 10000개이고 하나의 데이터를 처리 하는데 1초가 소요된다면 단순하게 보면 10000초만에 끝날 것 같지만 각자가 살펴보려는 매매 로직의 처리 특성이 O(N 3 )이라면 어떻게 될까요?

 

 

무작위로 코딩 해버리면 O(N 3 )은 1억을 초과 해버리기에 처참한 결과에 좌절하게 될지도 모릅니다.

(10000의 제곱은 1억이고, 세제곱은 1조입니다)

 

 

O(N 2)도 상당히 많은 양이죠.

 

 

O(N log N)에 10000을 대입하면 1억에 훨씬 미치지 못합니다.

 

 

매매 로직도 중요하지만 시장 재구현을 위해 시계열 데이터를 처리하고 매매 로직을 대입하는 과정의 수행 속도가 더뎌질수록 그 만큼 기회 비용의 상실됩니다.

시간은 곧 돈이니까요.

 

 

이제 갓 입문한 분들이 이처럼 주먹구구식으로 코딩하여 시장 재구현을 시도 하지만 시간이 제법 많이 소요되더라도 보유한 데이터가 적기 때문에 주먹구구식으로 대충 처리하려고 하는데 필자와 같이 셀 수 없을 정도의 양을 보유하고 있는 시점에 이르게 되면 주먹구구식으로는 평생이 걸려도 하나의 시뮬레이션이 끝나지 않을수도 있습니다.

 

 

시계열 데이터의 수행 횟수의 예측치가 기준에 가까운 O(N 2) 알고리즘의 경우 시간 복잡도 외에도 다른 요소들을 참조해 적당한 시간내에 시뮬레이션이 완료될 수 있을지 판단해야 하는데 이 때 참고 할 수 있는 요소들은 다음과 같습니다.

 

 

1. 시간 복잡도가 시뮬레이션 프로그램의 실행 속도를 제대로 반영하지 못하는 경우

: 시간 복잡도를 계산할 때 상수나 최고차항 이외의 항들은 모두 소거가 되므로 이때 계산된 값과 실제의 수행 시간이 다를 수 있는데 애초에 예상했던 시간의 100배가 소요될 수도 있고 1/100밖에 소요되지 않을수도 있습니다.

 

 

2. 컴퓨터 메모리(RAM) 사용 패턴이 복잡 다양한 경우

 

 

3. 시뮬레이션 프로그램을 코딩한 프로그래밍 언어와 컴파일러의 차이

: 각 언어마다의 특장점이 있겠지만 대체로 C계열의 언어가 다른 언어에 비해 충분히 빠른데도 불구하고 편하다는 이유만으로 굳이 Python이나 Java같은 언어로 수행하거나 최적화 옵션이 꺼져 있으면 시뮬레이션 실행해두고 한 세월 기다려야 할지도 모릅니다.

 

 

4. 구형 PC나 서버를 사용하는 경우

: 일반적인 컴퓨팅 환경에서는 시간 복잡도가 높은 작업을 거의 하지 않으므로 가장 최신의 것과 몇년쯤 전의 것 사이에서는 시간 차이가 거의 없습니다.

예를들어, Internet Explorer 를 실행하여 여러분이 설정해둔 Main Web Page가 완전히 로드되는데까지 차이가 많이 나봐야 1~2초쯤이겠죠.

하지만 시간 복잡도가 높으면 높을수록 시뮬레이션의 수행 속도 차이는 기하급수적으로 벌어질 수 있습니다.

 

 

5. 시계열 데이터의 처리 내부 반복문이 복잡하고 상호호출 등이 발생하는 경우

: 반복문을 통해 보유하고 있는 데이터의 횟수만큼 루프(loop)를 돌아야 하는데 그 반복문 안에서 복잡한 처리와 연산을 해야 한다면 시간은 당연히 많이 소요될 수 밖에 없습니다.

 

 

6. 시계열 데이터의 재배치가 되지 않은 경우

: 데이터는 시간순으로 배치되어 있을수록 유리하며, 실수 계산은 시간이 많이 소요되므로 시간 복잡도가 높아질수록 정수로 변환한 뒤 처리하는것이 유리할 수 있습니다.

 

 

시뮬레이션에서 같은 것을 대상으로 문제 풀이 하더라도 어떤 시간 복잡도를 가지는 알고리즘이냐에 따라 누구는 1시간만에 누구는 100시간만에 누구는 10000시간이 걸려야 풀 수 있으므로 이러한 부분들을 최대한 고려하여 시뮬레이터를 구현하는 노력도 필요하다는 점을 강조 드립니다.

 

 

 

추가내용 :

필자의 경우 시뮬레이션에는 크게 2가지로 나눕니다.

 

 

첫번째,

과연 현재의 아이디어가 성과를 낼 수 있을까?를 확인하기 위한 시뮬레이션

 

 

두번째,

두번째는 첫번째에서 파생되어 범위가 넓은 시뮬레이션인데요.

과연 여러 조건값들중 어떤 값이 최고의 성과를 낼 수 있을까?를 확인하기 위한 시뮬레이션

 

 

첫번째의 경우처럼 단순한 경우의 수와 조건값의 아이디어를 시뮬레이션 해보는 경우라면 아마도 어지간한 컴퓨터에서라도 초 단위 길어야 분 단위에서 시뮬레이션이 끝날 수 있습니다.

 

 

필자의 경우에는 우선 첫번째 시뮬레이션을 한 다음 어느정도 가능성이 보이면 두번째 시뮬레이션을 하는데 위 본문에서 말씀드리는 것은 두번째의 복잡 다양한 경우의 수의 나열 중에서 어떤것이 가장 최고의 성과를 낼 수 있는지 조건값들을 다양화 한 시뮬레이션을 말씀 드린 것입니다.

 

 

개인적으로 첫번째의 경우에는 이미 많은 시뮬레이션을 해보았기 때문에 현재는 조금 더 세밀한 조건값을 찾기 위해 두번째 시뮬레이션을 하고 있다고 이해하시면 되고 아이디어가 어느 정도 정형화가 되어 있는 첫번째 간단한 시뮬레이션을 해본 다음 가능성 여부를 따지고 두번째 시뮬레이션을 진행하시면 됩니다.

 

 

아이디어를 구체화하는 과정이나 첫번째이든 두번째이든 시뮬레이션을 만드는 과정에서 어려움을 겪고 계신 독자분이 계시면 글 남겨 주세요.

 

 

시간이 허락하는 한 최대한 도와 드리겠습니다.

 

 

 

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. 21. 09:13

 

 

안녕하세요.

 

 

블로그를 개설 해두고 가만히 생각해보니 일반적인 개인들이 시스템 트레이딩의 영역에 진입하기가 쉽지 않을것 같은

생각이 문득 들었습니다.

 

 

물론 (저도 거쳐오기도 했던) Yes Language를 사용하는 Yes Trader라는 프로그램이 조금 수월한 편이긴 합니다만,

아주 세밀한 데이터가 없다보니 저처럼 방대한 양의 데이터를 두고 시뮬레이션하는 것보다 정확도가 조금 떨어질 수 밖에 없습니다.

 

 

하지만 자신의 아이디어 또는 매매 전략이 단순하고 방대한 양의 데이터가 필요한 상황이 아니라면 Yes Trader (YT)를 사용해도 무방합니다.

 

 

YT는 기본적으로 분, 일, 주, 월 데이터는 충분히 제공하고 있기 때문이죠.

 

 

제 전략은 1초에도 수십틱(Tick)씩 쏟아지는 체결과 호가 데이터를 참조하여 가급적 시장 평균 그리고 제가 구현하고자 하는 로직의 가상의 결과값의 평균치와 근사치를 이루려다보니 YT를 사용하지 않을뿐이죠.

 

 

YT는 데이터베이스를 설치하지 않아도 되며 빠른 컴퓨터 성능을 요구하지 않으며 Yes Language가 난이도가 낮기 때문에 누구나 약 며칠 정도의 시간만 투자 한다면 충분히 원하는 시뮬레이션을 실행하여 결과를 확인할 수 있고

매매 전략의 성능이 어느정도인지 가늠할 수 있도록 성능분석 기능도 제공하고 있습니다.

 

 

 

YT등 기성 플랫폼을 이용하는 방법

필자의 방법

 장점

진입장벽이 낮고 약간의 노력만으로도 제법 괜찮은 시뮬레이션 또는 실거래 전략을 구현 해볼 수 있다.

 

깔끔한 성능보고서 정보 제공도 한 몫한다.

 

다양한 영역에 걸쳐 많은 양의 데이터를 축적 해두고 언제든지 아이디어를 기반으로 시뮬레이션 해볼 수 있다.

 

한마디로, 입맛대로 하고 싶은것을 다 해볼 수 있고 이러한 프로그램은 속도가 아주 빠르다.

(초당 최소 수백만번 이상의 연산이 가능)

 

 단점

1초에도 수십건 이상씩 쏟아지는 데이터들은 그 양이 엄청나기 때문에 YT 운영사 방침상 이러한 부분까지 모두 감안한 구현은 불가능하다.

 

프로그래밍 언어를 배우는데 YT에 비해 짧게는 수십배 길게는 수백배 이상의 시간과 노력이 필요하다.

 

프로그래밍 언어뿐 아니라 운영체제, 데이터베이스, 네트워크 등 여러가지 분야에서 일정수준 이상의 능력치가 요구된다.

 

성능보고서 등도 별도로 만들어야 되며 전체적으로 모든 부분에 있어서 시간과 시간의 경과에 따른 비용이 증가한다.

 

 

 

적고보니,

기성 플랫폼은 장점도 적고 단점도 적은 양상이고, 필자의 방법은 장점도 많고 그 반대급부인 단점도 상당합니다.

 

 

필자의 방법은 대체적으로 진입장벽이 "너무 높다"로 단점의 내용이 정리 되는데요.

그렇지만 어느정도 익숙 해지면 오히려 더 쉽고 빠른길이 될 수 있고 처리 성능 등에 대한 장점이 어마어마 하기 때문에 가히 매력적이라 할 만합니다.

 

 

얘기가 상당히 샛길로 빠지고 있는데요.

 

 

요는,

아이디어는 있으나 테스트 해볼만한 실력이 안되거나 데이터가 없거나 하는 등의 상황에 처한 분들께 도움을 드리고자

제가 가진 데이터를 기반으로 시뮬레이션을 해보고 본 카테고리를 통해 결과값을 공개 하도록 하겠습니다.

 

 

상세한 값은 최초 아이디어를 제공하신분의 지적재산권 보호 차원에서 비공개로 하되 큰틀에서 대략적인 부분은 공개하는 조건부로 "별도의 비용이 전혀 없이 무료"로 진행합니다.

 

 

아이디어를 기반으로 시뮬레이터를 작성하는데 짧게는 몇분에서 길게는 며칠이 소요될 수 있으며,

시뮬레이터를 구동함에 있어서 짧게는 몇분에서 길게는 알 수 없는 시간이 소요되며 시뮬레이션의 양에 따라 달라질 수 있습니다.

 

 

시뮬레이션이 가능한 범위는,

국내 주식, 선물, 옵션의 틱/분/일 데이터를 기반으로 하면 상관없습니다.

 

 

해외 선물과 옵션의 데이터는 확보된 데이터가 있으나 그 양이 적은 관계로 추가 확보를 위해 노력중이며 이 부분은 추후 재공지토록 하겠습니다.

 

 

현재 돛단배 한척밖에 가진게 없다 하더라도,

더 큰 바다에 나가 더 큰 파도와 멋진 한판 승부를 해보고 싶은 분들의 많은 관심 바랍니다.

 

 

감사합니다.

 

 

Posted by 투자의神