본문 바로가기

정보/개발 경험 나눔

해외선물 진법 계산법 명확하게 설명해드립니다

해외선물 상품중에는 특이한 가격 표현이 있죠. 
이런 가격 표현을 보셨나요?


해외선물은 가격에 진법을 적용해서 표시를 하고 있습니다. 그런데 이 진법이란 게 일반적으로 알던 2진법, 8진법, 10진법, 16진법 하는 진법이란 용어를 사용하지만 계산하는 방식이 다릅니다. 그래서 이걸 어떻게 계산하는지 잘 알기가 어렵고, 자료를 찾아봐도 잘 설명이 되어있는 곳이 없는 것 같습니다.
제가 개발자로써 처음에 이 부분에 대해 알기 어려웠고, 자료를 찾아보았으나 명쾌하게 설명해주는 곳을 찾지 못해 오랫동안 헛갈렸던 부분입니다. 이제는 좀 더 명확히 알고 있는 부분이라 정리해서 공유하고자 하니 필요한 분들에게 도움이 되었으면 좋겠습니다.
예를 들며 시작하겠습니다. 사과 하나를 먹고 부족해서 반절을 더 먹고 싶다고 하죠. 반절은 1/2이 되겠죠. 그런데 사과를 8조각을 낸 상태라면 좀 더 명확히 하면 4/8을 먹어야겠죠.
이렇게 어떤 상품을 8조각으로 나눈게 8진법이고, 16조각으로 나누면 16진법, 32 조각으로 나누면 32진법이 됩니다. 이때 온전한 한 개인 것은 그대로 표현하고, 나눈 것에 대해서만 진법이란 표현을 한다고 보시면 됩니다.
보통 32진법을 기초로 한 것이 많으니까, 32진법으로 얘기를 풀어보겠습니다.

32진법을 2로 나누면 64진법, 또 2로 나누면 128진법, 한번 더 나누면 256진법이 되는데, 보통 256 진법까지의 가격이 있고, 512진법은 몇 년 전에 얘기는 나왔지만 진행은 안되고 있는 듯 보입니다.
64진법은 32진법의 1/2, 128진법은 32의 1/4, 256진법은 32의 1/8 형태인데, 이것을 말하는 이유는 해외선물을 서비스하는 증권사마다 표현을 달리하기 때문입니다. 하지만 결국 같은 의미라는 것을 이해하시기 바랍니다.
이해는 그렇게 하시면 되므로, 저는 32진법, 64진법, 128진법, 256진법 형태로만 설명을 이어가겠습니다.
위에서 언급했듯이 진법은 소수 부분에 관한 표현인데, 1을 32로 나누면 값이 어떻게 될까요?
1/32 = 0.03125
네. 0.03125 입니다.
0.03125라는 값은 1을 32로 나눴을 때 32조각이 나는데, 그 한 조각의 가격입니다. 이것을 틱 가치라고 얘기합니다.
그럼. 해외선물에서 32진법일때 0.03125 값으로 표시하나요?
만일 가격이 double기준으로 107.03125이라면 107'1로 표현됩니다.

틱 수 틱 가치 진법 표현 값
1 0.03125 1
2 0.0625 2
3 0.09375 3
4 0.125 4
5 0.15625 5
6 0.1875 6
7 0.21875 7
8 0.25 8
9 0.28125 9
10 0.3125 10
11 0.34375 11
12 0.375 12
13 0.40625 13
14 0.4375 14
15 0.46875 15
16 0.5 16
17 0.53125 17
18 0.5625 18
19 0.59375 19
20 0.625 20
21 0.65625 21
22 0.6875 22
23 0.71875 23
24 0.75 24
25 0.78125 25
26 0.8125 26
27 0.84375 27
28 0.875 28
29 0.90625 29
30 0.9375 30
31 0.96875 31
32 1 32

만일 107.875 라면 108'28 이라고 표현하죠.
그러면 오른쪽의 진법 표현 값은 어떻게 얻을 수 있을까요?


바로 틱가치에 32를 곱하면 됩니다.
그러면 64진법이면 64를 곱하련 될까요?
아닙니다. 32진법까지는 진법에 해당하는 값을 곱하지만, 32진법 이후는 32로만 곱합니다.
즉 64진법 일 때 틱 가치에 32를 곱한다는 의미입니다.
64진법, 128진법, 256진법을 계속해서 볼까요?

틱 수 틱 가치 64 진법 표현 값 틱 가치 128 진법 표현 값 틱 가치 256 진법 표현 값
1 0.015625 0.5 0.0078125 0.25 0.00390625 0.125
2 0.03125 1 0.015625 0.5 0.0078125 0.25
3 0.046875 1.5 0.0234375 0.75 0.01171875 0.375
4 0.0625 2 0.03125 1 0.015625 0.5
5 0.078125 2.5 0.0390625 1.25 0.01953125 0.625
6 0.09375 3 0.046875 1.5 0.0234375 0.75
7 0.109375 3.5 0.0546875 1.75 0.02734375 0.875
8 0.125 4 0.0625 2 0.03125 1
9 0.140625 4.5 0.0703125 2.25 0.03515625 1.125
10 0.15625 5 0.078125 2.5 0.0390625 1.25
11 0.171875 5.5 0.0859375 2.75 0.04296875 1.375
12 0.1875 6 0.09375 3 0.046875 1.5
13 0.203125 6.5 0.1015625 3.25 0.05078125 1.625
14 0.21875 7 0.109375 3.5 0.0546875 1.75
15 0.234375 7.5 0.1171875 3.75 0.05859375 1.875
16 0.25 8 0.125 4 0.0625 2
17 0.265625 8.5 0.1328125 4.25 0.06640625 2.125
18 0.28125 9 0.140625 4.5 0.0703125 2.25
19 0.296875 9.5 0.1484375 4.75 0.07421875 2.375
20 0.3125 10 0.15625 5 0.078125 2.5
21 0.328125 10.5 0.1640625 5.25 0.08203125 2.625
22 0.34375 11 0.171875 5.5 0.0859375 2.75
23 0.359375 11.5 0.1796875 5.75 0.08984375 2.875
24 0.375 12 0.1875 6 0.09375 3
25 0.390625 12.5 0.1953125 6.25 0.09765625 3.125
26 0.40625 13 0.203125 6.5 0.1015625 3.25
27 0.421875 13.5 0.2109375 6.75 0.10546875 3.375
28 0.4375 14 0.21875 7 0.109375 3.5
29 0.453125 14.5 0.2265625 7.25 0.11328125 3.625
30 0.46875 15 0.234375 7.5 0.1171875 3.75
31 0.484375 15.5 0.2421875 7.75 0.12109375 3.875
32 0.5 16 0.25 8 0.125 4

만일 128진법의 상품이 double값이 "107.2109375"이라면 어떻게 표현할까요?
0.2109375에 해당하는 값이 6.75죠. 그러면 정수부 107에 '6.75 부분을 덧붙여 107'6.75가 되는 거죠.
여기서 잠깐!
증권사마다 이것을 동일하게 표현하지 않는다는 사실.
128진법의 상품값이 107'6.75일 때, 어떤 증권사는 107'6.75로 표현하지만, 또 다른 증권사는 107'6.7로 표현을 하고 있습니다. 이는 표현 자릿수를 줄이려는 의도이지, 값이 다른 것은 아닙니다. 내부적으로는 실제값인 107'6.75을 기준으로 처리를 하기 때문입니다. 더 정확히 말하면 "107.2109375" 이란 값으로 계산 처리를 합니다.
. 75와. 7을 표현하는 진법을 보면 그렇게 하더라도 겹치지 않기 때문에 사용할 수가 있는 것입니다.
제가 32진법과 256진법 사이의 진법을 설명했는데, 8진법과 4진법은 동일한 형태로 계산해보시면 됩니다. 소수 부분을 곱할 때 8진법은 8, 4진법은 4를 곱해주면 됩니다.

지금까지 해외선물의 진법 계산과 표현에 대해 설명을 해보았습니다.
제가 해외선물 관련해서 개발을 몇 년 전에 했는데, 최근에 다시 하게 되어 정리를 해보았는데, 필요하다 싶은 자료 요청이 있거나 판단되면 더 정리해서 공유하도록 하겠습니다.
개발자 입장에서 정리한 내용인데, 도움이 되셨길 바랍니다.