BLOG main image
ddd (50)
CUDA programming (0)
알고리즘 트레이딩 (5)
Cherry Picker 개발 (23)
TSimulator 개발(종료) (11)
IT 노트 (1)
잡동사니 (2)
사진 (4)
일기 (4)
이력서 (0)
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
'병렬컴퓨팅'에 해당되는 글 1건
2018. 1. 10. 09:44

2014년 4월부터 제도권에서 트레이딩을 한지 5년이 다돼간다. 최근에는 벗어났지만 그 동안 박스권에 갇혀있던 어려운 시장에서도 마이너스 분기실적 없이 잘 견뎌냈다.


현재 사용중인 CherryPicker 는 최초에 개발했던 방향과는 많이 달라졌다(좋은쪽으로). 역시 첫 설계에서 생각했던거와 사용하면서 필요해지는 부분의 차이는 작지 않았다. 아마 이런 툴개발 경험이 없어서인거 같다. 이제는 나뿐만이 아닌 회사 동료분들의 전략 자동화에도 협조하고 있고 그 분들의 요구사항을 반영하면서 기능이 더욱 늘어났다. 특히 수동개입쪽 기능이 많이 추가됐다. 기존의 나는 수동개입은 불허하는 입장이지만 특수한 상황에서는 필요할것 같아 적극 반영을 했다.


사실 트레이딩툴 기본기능은 3년전에 거의 완성됐고 그 이후부터 최근까지는 거의 백테스트에 올인했다고 봐도 좋다. 그 중 분석하기 편하게 GUI 툴 개발과 병렬화에 집중했다. 그래서 테스트 결과를 비쥬얼하게 보여주는 Efreet 가 탄생했고, Efreet 는 결과 분석외에도 테스트 스크립트 기능도 있어서 테스트 설정 및 스케줄이 기록된 스크립트 파일을 읽어서 전략의 백테스트를 진행한다. Efreet 의 백테스트는 복수의 CPU 에 테스트 분량을 분산해서 병렬로 진행하는 기능도 있다. CPU 개수에 따라 테스트에 걸리는 시간이 대폭 줄어든다. 마지막으로 Efreet 의 중요한 기능은 백테스트에서 도출된 경우의수에서 가장 이상적인 경우의수 및 그것들의 조합을 추출하는것이다.. 이 작업 또한 백테스트만큼의 오랜 시간이 소요되는데 역시 CPU 병렬처리를 이용해서 그 시간을 단축시킬 수 있다.


CPU 병렬화는 시뮬레이션의 시간을 단축시켜준다. 위 문단에서 설명한것처럼 CPU개수분의 1의 수준으로 단축된다. 그래도 4코어 CPU 로 많으면 1주일이상의 시간이 소요되는 테스트를 3, 4일로 줄여줄 뿐이다. 물론 이것만으로도 엄청나지만 그래도 목이 마른 법. 며칠이 아닌 1,2 시간 내로 끝내고 싶었다. 언젠가는 계획하고 있지만 당장은 20코어 4프로레서보드 같은 서버를 장만할 수도 없다. 가격도 가격이거니와 최근에 터진 인텔 CPU 보안패치문제 때문에라도 지금은 별 계획이 없다. 그래서 주목하게 된것이 GPU 다.


CPU 보다 훨씬 많은 작은 코어들을 가지고 있는 GPU 의 병렬연산은 알파고의 등장하면서 주목받기 시작했다고 봐도 과언이 아니다. 그래서 나는 약 2년 전부터 이전 증권사에서 연을 맺게 된 분과 CUDA(NVIDIA 에서 개발한 GPU 병렬연산을 쉽게 해주는 언어시스템) 스터디를 시작했다.(현재는 CUDA 스터디를 어느정도 마치고 딥러닝 스터디로 전환) 이 CUDA 가 얼마나 Efreet 의 시뮬레이션 성능을 높혀줄지는 모르겠지만 알파고에서 대량으로 GPU가 운용되는것을 보면 가능성이 있어보인다. 그래서 당분간은 CUDA 프로그래밍에 집중해보려고 한다. 카테고리를 추가해서 관리하고자 한다.


추가로 예전에 올렸다가 지운 CherryPicker 엔진을 사용한 Gaia 의 스냅샷과 Efreet 의 백테스트 결과 분석화면을 올려본다.




Gaia(트레이딩툴) 운용화면






Efreet 백테스트 결과 분석화면(개인적인 부분은 책으로 가림)



prev"" #1 next