-
[부록] 주식의 매매주문 단위, 호가(Tick size)Project/부록 2020. 9. 26. 00:30반응형
0. 들어가는 글
주식의 매매주문 단위, 호가(Tick size)에서 밝힌 것처럼 호가를 이용해 무언가를 해보려고 하기는 하는데 아직 당장은 쓸만한 전략이 떠오르지는 않는다.
그러니 우선은 해둘 수 있는 작업부터 해두려고 하는데, 그 첫번째로 우선 호가를 일반화하려고 한다.
이걸 왜 해두냐면 주가는 정수값을 갖기는 하지만 모든 정수를 취하지는 않는다. 이전 글에서 말했듯이 주식시장에서 이뤄지는 거래가격은 표준화를 해두었기 때문이다. 예를 들어 57905원은 주가로 거래될 수가 없다.
따라서 주식가격은 호가의 합들로 표현하면 실제로 거래되는 주식가격을 표현할 수 있을 것이다.
이 작업을 해두려는 가장 큰 동기는 내가 파이썬도 쓰기는 하지만 주로 R 유저이기 때문이다.
가장 손쉽게(?) 거래가능한 주가를 택하는 방법은 선택가능한 모든 주가를 적어뒀다가 불러오면 된다. 생각보다 그렇게 많지는 않을테니 하면 되지만, 그런 식의 데이터를 저장해뒀다가 불러오는 게 R에는 적합하지 않다. 쓸데없는 메모리만 잡아 먹을 테니까.
두번째 이유는 이걸 해두면, 나중에 어딘가 쓸모가 있지 않을까(?)하는 기대때문이다. 나중에 최선의 거래전략을 위해 최적화를 하거나 해를 찾아야 할 때 쓸모가 있지 않을까 하는 작은 기대가 있으니 우선 구하고 보자는 생각이다. 그리고 무엇보다 구하기가 그렇게 어렵지도 않다.
1. 호가를 식으로 만들어보자
우선 주식의 매매주문 단위, 호가(Tick size)에서 본 호가 표를 다시 소환해보자.
구간 주가 호가 1구간 1,000원 미만 1 2구간 1,000원 이상 5,000원 미만 5 3구간 5,000원 이상 10,000원 미만 10 4구간 10,000원 이상 50,000원 미만 50 5구간 50,000원 이상 100,000원 미만 100 6구간 100,000원 이상 500,000원 미만 500 7구간 500,000원 이상 1000 여기서 볼드 & 밑줄처리 된 호가들의 일반항을 구해보려고 한다.
우선은 저 값들을 나열해서 수열로 만들어 볼 건데 해당 수열의 원소는 Tick을 의미하는 $T_n$이라고 하자. 여기서 $n$은 구간을 나타낸다. 요컨대 $P_1$은 1구간의 호가를 말하므로, 1원이다. 아무튼 나열하면 다음과 같다.
$$ \{T_n\} = 1, 5, 10, 50, 100, 500, 1000 $$
이렇게만 보면 무언가 규칙이 보일 듯 하면서 보이지 않는다. 고등학교 때 흔히 배우는 등차수열이나 등비수열이 아니니, 다른 방식으로 접근해봐야 겠다. 적어도 3번째 항부터는 10을 곱한 값으로 나오니, 10의 지수형태로 바꿔보자.
$$ \{T_n\} = 10^0, 10^{log5}, 10^1, 10^{1+log5}, 10^2, 10^{2+log5}, 10^3 $$
$logX$는 밑이 10인 상용로그를 말한다. 즉 $logX = log_{10}X$을 말한다. 이 중에 지수만 다시 수열로 만들건데, 그 수열을 $a_n$이라고 해보자.
$$ \{a_n\} = 0, log5, 1, 1+log5, 2, 2+log5, 3 $$
이 수열의 특징을 보니 "정수 + 로그"의 형태이고 짝수일 때만 $log5$를 더한다. 그러니 정수부분과 로그부분으로 나눠보자. 정수 부분을 $I_n$, 로그 부분을 $L_n$이라고 하자. 그러면 다음과 같다.
$ \{I_n\} = 0, \quad 0, \quad 1, \quad 1, \quad 2, \quad 2, \quad 3 $
$\{L_n\} = 0, \quad log5,\quad 0,\quad log5,\quad 0,\quad log5,\quad 0$
$ a_n = I_n + L_n$우선 $L_n$부터 일반화해보자. 짝수일 때는 0, 홀수일 때는 $log5$가 되면 될텐데 다음과 같이 표현해볼 수 있다.
$$ L_n = \frac{1}{2}(log5 + (-1)^{n}log5) $$
나를 믿을 수 없으니 확인을 해보자. $n$이 짝수면 괄호 안 두번째 항이 $log5$일테니 괄호 안의 값은 $2log5$가 될거고, 이걸 2로 나눠주면 되니 $log5$가 나온다. $n$이 홀수이면 괄호 안의 값이 0이 된다.
자 이제 $I_n$을 일반항을 구할건데 고등학교 때 배우던 계차수열을 적용해볼 생각이다. 가만 보니까, $I_1$에서 $I_2$로 넘어갈 때는 0을 더하고, $I_2$에서 $I_3$으로 넘어갈 때는 1을 더한다. 즉 0과 1이 번갈아 가면서 등장하는 수열, 진동하는 수열의 합을 해주면 될 것 같다. 계차수열은 대충 아래와 같은 형태를 갖는다.
$$ \alpha_n = \alpha_1 + \sum_{k=1}^{n-1}\beta_k $$
이대로 바로 쓰면 좋은데, 우변의 두번째 항에 나오는 $n-1$이 조금 거슬린다. 왜냐면 $n$이 1부터 적용되지 않기 때문이다. 따라서 임의로 $\alpha_0$이 있다고 치고, $n-1$을 $n$으로 놓고 계산해보자. 즉 $I_0 $을 생각해하면 된다.
여기서 $\beta_k$는 0 또는 1의 값이 번갈아 나오는 수열이므로 $I_0 = -1$이어야 한다. 그러므로 $L_n$을 구했을 때 처럼 다음과 같이 쓸 수 있다.
$$I_n = -1 + \sum_{k=1}^{n}\frac{1}{2}(1 - (-1)^k) = -1 + \frac{n}{2} - \frac{1}{2}\sum_{k=1}^{n}(-1)^{k}$$
여기서 다시 합의 꼴로 표현된 세번째 항인 $\sum_{k=1}^{n}(-1)^{k}$를 보면, $n$의 값이 홀수 일 때는 -1, 짝수일 때는 0이다. 따라서 다음과 같이 쓸 수 있다.
$$\sum_{k=1}^{n}(-1)^{k} = -\frac{1}{2}(1 - (-1)^n) $$
앞선 내용들을 종합해보면 $I_n$은 다음과 같다.
$$ I_n = \frac{n}{2} -1 - \frac{1}{2}\{-\frac{1}{2}(1 - (-1)^n)\} $$
$$ = \frac{n-2}{2}+\frac{1}{4}(1-(-1)^n)$$이미 보기 좋은 식은 아니지만(...) 그래도 보기좋게 정리하면 다음과 같다.
$$I_n = \frac{2n-3-(-1)^n}{4}$$
이제 $L_n$과 $I_n$을 더해서 정리하면 되겠다.
$$a_n = I_n + L_n$$
$$= \frac{2n-3-(-1)^n}{4} + \frac{log5 +(-1)^{n}log5}{2}$$
$$= \frac{2n-3-(-1)^n +2(log5 + (-1)^{n}log5)}{4}$$
아주 지저분하다(...). $n$이 주어졌을 때 바로 계산 가능하게 만들기 위해서 이렇게 하긴 했는데, 영 복잡해보이긴 한다. 지시함수를 써서 표기하면 다음과 같다.
$$a_n = \frac{n-1}{2} +\mathbb{I}[n = 짝수](log5 - \frac{1}{2}) $$
$\mathbb{I}[condition]$은 대괄호 안의 $condition$을 만족하면 1, 그렇지 않으면 0의 값을 갖는 지시함수를 말한다.
아무튼 이렇게 구한 $a_n$은 원래의 수열인 $T_n$의 지수를 나타내므로여태껏 구한 게 고작 지수라니$T_n$은 다음과 같다.
$T_n = 10^{a_n} = 10^{\frac{2n-3-(-1)^n +2(log5 + (-1)^{n}log5)}{4}} = 10^{\frac{n-1}{2} +\mathbb{I}[n = 짝수](log5 - \frac{1}{2})}$반응형'Project > 부록' 카테고리의 다른 글
[부록] 리밸런싱의 수익성 조건 ① (0) 2020.07.30