python
-
백테스팅시 주의해야할 슬리피지(Slippage)와 수수료주식 2022. 8. 30. 16:22
슬리피지(Slippage)란 내가 체결하려는 금액과 실제 체결된 금액과의 가격차이를 말한다. 예를 들어 내가 매수주문을 100원에 하였지만 마켓의 상황(거래량이 적거나, 급격한 변동성, 체결타이밍)등으로 인해 95원에 체결이 되었다면 5원의 슬리피지 비용이 발생하는 것이다. 퀀트 전략에 따라 다르겠지만 매수/매도가 잦거나 시장가를 체결해야되는 전략이 있다면 슬리피지는 충분히 고려해야 할 사항이다. 또한 수수료도 백테스팅을 할때에 중요한 요소이다. 실제로 매수/매도가 꽤 잦은 전략을 시뮬레이션 돌렸고 수익률이 7.8%가 나왔다. 하지만 이는 수수료를 고려하지 않았을때였고 수수료를 고려하게되면 3%까지 떨어지게 되었다. 심지어 어떤 전략은 수익에서 손실까지로 시뮬레이션 결과가 바뀌니 수수료를 무시하지말고 백..
-
Gevent / Celery 에 대하여programming 2019. 3. 13. 19:18
Python framework 를 이용하여 개발을 하다보면 Gevent, Celery를 붙여서 개발할 경우가 있다. 보통 mailing or push 서버처럼 많은 메세지를 처리해야 하는경우 메세지큐를 이용하고 Celery통해 worker들을 생성하여 다량의 메세지를 빠르게 처리 하며 대량의 네트워크 요청을 처리하기 위해 Gevent를 사용하여 성능개선을 한다. 그리고 이 둘을 결합하여 사용하는 케이스들이 있다.하지만 대략적인 개념만 알고 쓰다보니 어느날 Gevent on Celery 구조의 프로젝트를 수정하려다보니 헷갈리는 부분이 있어서 정리하고자 포스팅을 한다.What is gevent?gevent is a coroutine -based Python networking library that uses..
-
정렬알고리즘(sorting algorithm) 정리algorithm 2019. 3. 13. 19:14
1.버블정렬(Bubble sort)버블정렬은 가장 쉬운 정렬 알고리즘이지만 시간복잡도가 좋은 퍼포먼스를 내지 못해서 실제로는 잘 사용되지 않는다.시간복잡도는 O(n²)이며 공간복잡도는 하나의 배열만 사용하여 정렬을 진행하기 때문에 O(n)이다.버블정렬 소스코드def bubbleSort(alist): for loop_count in range(len(alist)-1, 0, -1): for idx in range(loop_count): if alist[idx] > alist[idx+1]: tmp = alist[idx] alist[idx] = alist[idx+1] alist[idx+1] = tmp return alist버블정렬 테스트결과각 테스트는 n = 10000으로 진행하였다. — — Finished! ..
-
Timsort python sorted 알고리즘programming 2019. 3. 13. 19:06
요즘 Programming peals 책을 읽고 있는데 정렬에 대한 언급이 나와서문득 Python을 사용하면서 데이터 sorting을 할때 bulit-in function인 sorted만 사용하고 있는것을 깨달았다.생각해보면 Python으로 되어있는 오픈소스 코드에서도 sorting할때 sorted를 사용하지 않는 경우는 딱히 못본거 같다.sorted 함수의 원형은 아래와 같다.sorted(iterable[, cmp[, key[, reverse]]])Pamater를 통해 key를 지정해주면 해당 key 기준으로 sorting을 해주고 reverse가 필요하면 reserver 옵션만 넣어주면 오름차순,내림차순 또한 마음대로 받아볼 수 있다.그렇다면 sorted 내부 sorting algorithm은 뭐가 ..