프로그래밍 with C#2018. 6. 10. 10:20

 

 

개인적으로 좋은 개발자는 아닙니다.

 

 

때문에 개발에 관련한 내용을 적을 때마다 놓치거나 실수한 부분은 없는지 신경을 많이 쓰는 편입니다만 개발은 잘 하지만 금융이나 주식쪽에 대해 이해도가 낮은 개발자 혹은 학생들의 반복적인 문의가 많아 글을 남깁니다.

 

 

 

개발은 부수적인 수단일 뿐이다.

 

시장의 생리와 메커니즘을 이해하지 못하면 아무리 개발을 잘 한다 한들 소용이 없습니다.

 

어떤 작동원리를 가지고 있는지 이해 해야 합니다.

 

포커나 훌라, 고스톱 게임에 참여 하면서 룰을 이해하지 못하는 것과 같습니다.

 

조금은 안다 하더라도 시시각각으로 변화하는 상황에 맞춰 어떤 게임 운영 방법이 승리의 결과로 이어지게 할 수 있을지 알아야 되겠지요.

 

 

 

주문 프로그램의 개발 언어에 집착하지 마세요.

필자 역시 Assembly, C, C++, VB, PHP, JAVA, VC++, Python, Ruby, C# 등 많지는 않지만 다양한 언어들을 접해봤지만 결국 중요한 것은 애초에 구상한대로 프로그램이 작동하도록 구현하느냐의 차이일 뿐 ms (milli second) 단위의 접근에 집착할 필요가 없습니다.

 

 

예를 들어, 매일 종가에 사고 팔기로 한 로직을 가지고 있다면 어떤 언어를 선택하더라도 주문을 내는데는 큰 차이가 없습니다.

 

 

 

소 단위로 분리 구분 하세요.

 

주문 프로그램은 개발 언어의 장벽과 무관하다 할 수 있지만 시장의 시세 및 여러 정보 데이터를 수신하는 프로그램이나 분석을 위한 프로그램은 그렇지 않습니다.

 

프로그래밍 언어마다의 특성이 있는데요.

 

대체적으로 C언어가 빠르다고 알려져 있습니다.

 

그리고 Java라던지 Python은 '상대적'으로 느리다고 알려져 있지요.

 

주문 프로그램은 Java나 Python을 사용해도 됩니다.

 

HFT (High Frequency Trading)이 아닌 이상 말이지요.

 

그런데 조건이 단순하다면 모를까 알파고처럼 엄청난 경우의 수에 대해 연산을 하던 혹은 몇가지의 팩터에 대해서만 단순히 판독하던 '분석'의 영역에서는 가급적이면 빠른 처리가 필요합니다.

 

여러가지 프로그래밍 언어를 다룰 줄 안다면 가장 빠른 언어로 모든것을 처리 하거나 혹은 각각의 영역에서 가장 적합한 언어를 사용하여 처리하면 될 일입니다.

 

 

 

목적에 맞게 사용하세요.

 

HTS가 그러했듯  API를 이용하여 주식, 선물, 옵션, 암호통화 거래를 시도하는 사람들이 많이 증가 하였는데 한가지 언어만 고집하는 경우를 더러 목격하게 됩니다.

 

C언어가 대체적으로 빠르다고 하지만 경우에 따라서는 C언어보다 더 빠른 상황이 연출될 수 있습니다.

 

혹은 빠른 속도보다는 안정적인 운용이 중요할 수도 있고 동시 다발적으로 쏟아지는 각종 데이터를 잘 처리해야 될 때도 있는 등 여러 상황이 존재 할 수 있습니다.

 

이런 상황을 고려하여 개발을 진행해야 하는데 대부분 한가지의 언어나 상황만을 고집하는 경우를 제법 많이 보게 됩니다.

 

필자의 경우 시장 데이터의 수집은 C계열로, 분석은 Python과 TensorFlow로, 데이터베이스(DataBase)는 MySQL로, 주문은 C계열로 처리하고 있는데 이것이 정답은 아니겠지만 편의상 또한 목적에 맞게 사용중인 것으로 생각하고 있고 추후 언제라도 변경될 수 있는 부분입니다.

 

독자분들도 한가지만 고집할 것이 아니라 보다 효율적인 처리를 위해 고민을 많이 해보기를 권합니다.

 

 

어떤 라이브러리를 사용하시나요?

 

각자가 '다름'을 가지고 있듯 매매에도 '개성'이라는 것이 필요 합니다.

 

남들이 생각하지 못한 부분, 누군가 놓친 포인트에 +@가 있는 것이지 누구나 사용할 수 있는 공개 라이브러리에서 성배를 찾으려고 하지 말고 직접 부딪쳐 보세요.

 

그렇다고 시장에 성배가 있다고 생각하지는 않습니다.

 

계속 발전하도록 노력해야 하고 적어도 다른 사람들보다 한발짝 앞선 위치에서 진행할 수 있도록 노력해야 겠지요.

 

 

API vs DMA

 

이 부분은 필자가 사용하고 있는 DMA에 대해 경험이 적기 때문에 추후에 별도의 포스팅으로 대체 합니다.

 

 

컴퓨팅 파워의 선택이 중요합니다.

 

독자분들이 사용하고 있는 로직의 복잡도는 제각가일 것입니다만 어떤 일을 처리하기에 접합한가에 대해 고려하지 않는 경우를 제법 마주하게 됩니다.

 

고밀도 연산이 필요하면 컴퓨팅 파워가 매우 중요합니다만 앞서 언급한 종가 거래 정도라면 어지간한 컴퓨터로도 충분합니다.

 

컴퓨터의 사양 등으로 고민하지 마세요.

 

 

 

제일 중요한 것은 로직입니다.

 

위에 여러 부분들에 대해 말했지만 가장 중요한 것은 지속적으로 수익을 낼 수 있는 로직을 가지고 있는가이지 다른 부분에 대해서는 뭐가 어쩌고 저쩌고 해봐야 별 의미 없다고 생각합니다.

 

이에 덧붙여 얘기 하자면 필자의 '알고리즘 자동매매 시스템'에 대해 필자는 어느정도 만족하지만 그와 동시에 불만족 스러운 부분이 있고 이를 개선하기 위해 나름대로 고군분투중에 있습니다.

 

평균의 데이터로 접근해보면 최근 수개월간은 횡보 내지는 우하향하고 있기 때문인데요.

 

기본적으로 실제와 가장 유사한 형태로 시뮬레이션을 했고 그것을 시스템화 했으며 규모의 경제 영역에 발을 들이고 있기에 손익률의 관점에서 접근하고 있지는 않습니다.

 

이렇든 저렇든 가장 중요한 것은 수익 로직이므로 여러 고민들은 접어두고 열심히 시장 데이터를 모으고 분석하는 것이 우선이라는 말씀 드리고 싶습니다.

 

 

호가창에서 뵙겠습니다.

 

 

 

덧1)

 

블로그 독자분들을 대상으로 시장 데이터 수집 프로그램, 매매 프로그램, 분석 대행, 알고리즘의 교정 등 여러 도움을 드리고 있는데요.

 

프로젝트 단위로는 시간을 내어 드릴 수 있지만 자잘한 그리고 반복적인 질문에는 응대 해드리지 않습니다.

 

 

덧2) 향후 언젠가는 시세 데이터의 드리거나 분석 대행을 해드리거나 하지 않으려고 합니다.

 

도움을 드리고 싶은 마음은 있지만 전혀 준비되지 않은 상황에서 모든것을 다 만들어 달라고 하는 부류의 욕심 때문이겠지요.

 

아마 당분간은 하던대로 하겠지만 언제든 "STOP"을 외칠 준비를 하겠습니다.

 

Posted by 투자의神