맨위로버튼이미지

1. 들어가지 전에

   여러분들이 파도를 탄다면 어떤 방식으로 파도를 탈까요? 여러분들은 모험을 좋아하나요? 저는 땅에서 발을 뛰는 행위 자체를 싫어 합니다. 그래도 돈에 대해서는 모험을 즐깁니다. 또 신기하게도 저는 오른손 잡이 지만 돈에 관련된 거의 대부분의 것은 왼손 잡이 입니다. 돈을 세는 것도 나도 모르게 왼손을 사용하고 있었습니다. 심지어는 화투폐도 왼손으로 돌립니다. 제 돈의 뇌는 아마도 오른쪽에 있나 봅니다. 자 여러분은 지금 Bitcoin이라는 파도를 타야 합니다. 어떤 보드를 선택하실 건가요? 저는 초기에는 5분데이터에 MACD로 파도타기를 했지만 성적은 좋지 않았습니다. 여러 파라메트를 변경해 보았지만 결국 MACD의 최대 약점은 가짜 매수, 매도가 발생하여 수익률이 떨어지지만 일정하게 매매가 발생하여 어느 정도 평균 수익을 만들 수는 있었습니다. 문제는 Bithum의 수수료였습니다. Bithum의 경우 0.25%로 매수,매도를 할 경우 0.5%의 수수료가 발생하고 요즘 주식 수수료가 0.015%인 것에 비하면 엄청난 금액입니다. 저 같은 경우 0.05% 수수료라는 말에 50만원짜리 정액 쿠폰을 싸서 거래를 했지만 결국 반 정도밖에 사용하지 못해서 수수료 할인을 거의 이용하지 못했습니다. 거래 금액 10억까지 무료였지만 거래금액이 5억이 되는데는 몇일이 걸리지 않았습니다. 지금은 upbit로도 프로그램을 돌리는데 upbit의 경우 모든 KRW시장거래에 0.05%의 수수료를 적용하고 있고 정액쿠폰 같은 것은 판매하지도 않기 때문에 훨씬 편리한것 같더군요. 결국 매매 후 금액이 수수료를 초과하지 않으면 이 게임은 실패입니다. 그래서 제가 생각한 방법은 종가최대최소값 밴딩 방법입니다.

 

2. 종가최대최소값 밴딩 이란?

  pandas의 rolling함수를 이용하면 특정 구간에 min값 max값 평균값을 구할 수 있습니다. 

self.logger.debug("Close Min Max 구하기:%s"  % time.ctime(time.time()))
df['clsmax'] =  df.high.rolling(window=Const.MINMAX_RANGE, min_periods=Const.MINMAX_MINIMUM_DATA).max()
df['clsmin'] =  df.low.rolling(window=Const.MINMAX_RANGE, min_periods=Const.MINMAX_MINIMUM_DATA).min()
df['clsmininc'] = df.clsmin - df.clsmin.shift()
df['clsmin_degrees'] = df['clsmininc'].apply(lambda x: math.degrees(math.atan2(x, Const.DEGREES_X))) 
df['clsmaxinc'] = df.clsmax - df.clsmax.shift()   
df['clsmax_degrees'] = df['clsmaxinc'].apply(lambda x: math.degrees(math.atan2(x, Const.DEGREES_X))) 
df['max_rate'] = df.apply(lambda x: (x['clsmax'] - x['close']) * 100 / (x['clsmax'] - x['clsmin']), axis=1)
df['min_rate'] = df.apply(lambda x: (x['close'] - x['clsmin']) * 100 / (x['clsmax'] - x['clsmin']), axis=1)

위의 내용처럼하면 해당 구간의 최고가와 최소가를 구할 수 있습니다. max값을 예로 들어보면 해당 구간의 max값은 한번 최고점을 찍으면 f(n+1)=f(n)의 공식이 성립되면서 min값과 같이 일종의 밴드(쌍으로 같이 움직이는 그래프)를 만듭니다. 두 곡선의 절대 만나지 않습니다. 비트코인이 망하지만 안는다면 말이죠. 비트코인처럼 변이가 심한 자산의 경우 절대 수익을 보장하는 매수,매도 공식이 가능하지만 가끔 박스권을 형성하는 경우가 발생하면 매매가 발생하지 않는게 약점이죠. 상단과 하단이 한번 형성된 후 계속 그 사이를 왔다 갔다하면서 상단과 하단을 터치하지 않으면서 가격만 계속 오르거나 내리는 경우가 가끔 있습니다. 그럼 그날 수익은 제로 인 거죠. 지금 이 공식은 제 프로그램중 ETF자동매매 프로그램에도 적용이 되어 있습니다. 이상적인 상황에서 이상적인 수익을 가져 주지만 급변 구간이 문제 입니다. 급변 구간의 해답은 앞 5장에 있는 내용을 참고 바랍니다. 하지만 sma1200_degrees의 경우 가격의 급변 보다는 에너지(돈의 수급)의 총량에 더 가깝다고 봐야 합니다. 급등시 급등 신호가 감지 되지만 전체 기간중 앞 15~30%에서 최고가가 형성됩니다. 그렇다고 매도를 하게 되면 그 순간 더 상당으로 달아 날 수도 있기 때문에 sma1200_degrees가 40º를 넘는 경우는 일단 매매를 멈춥니다. 50º가 넘었다면 무조건 멈춰야 합니다. 

3. 기존의 방식중 절대하지 말아야 하는 방법들

  1. 변동성 돌파 전략

   이 전략은 주식전용 전략 입니다. 절대로 코인에 적용하면 안됩니다. 주식에도 적용하기가 그렇습니다. 코인은 24시간 체재입니다. 절대로 변동성 전략이 통할리 없습니다. 주식에서도 이 전략은 한달안에 거지되기 쉽상입니다. 요즘 주식은 아고점저(아침에 고점 점심때 저점)의 시대 입니다. 함부로 변동성 돌파 전략을 사용하면 아침에 고점에 물려서 오후 3시20분에 매도 되어 손실을 기록하게 됩니다. 

 2. MACD 오실로스코프 매매

   이 매매 전략은 12, 30, 15 정도의 값으로 macd를 생성하고 하루 거래 발생 건수를 고려하여 배율을 조정하면 어느 정도의 수익을 보장합니다만 폭락장에서는 전혀 맞지 않습니다. 5월~7월사이에 코인 가격이 반토막이 난 것을 생각하면 지금은 깡통이겠죠?

3. 주식 보조 지표가 코인에서는 안맞는 이유

  어떻게 보면 당연한 이야기 입니다. 기존의 매매 방식은 주식의 것이고 주식의 경우 9시부터 3시반까지만 거래가 되고 거래가 끝나고 5시쯤에 찌라시가 돕니다. 지금은 기존의 보조지표 매매도 전혀 맞지 않는게 주식 시장입니다. 그런데 그 보조지표가 코인에서 맞을 가요? 저는 모든 지표를 거의 새로 만들었습니다. 주식에서 통용되던 보조 지표들은 코인의 것이 아니니까요?

 

4. 마치며

  수학자들 중에서는 미지의 소수를 찾는 작업을 평생연구하는 사람들이 꽤 많다는 말을 들었습니다. 게임의 법칙으로 노벨 경제학상을 탄 수학자 존 내시 박사도 소수에 어떤 공식이 있을 것이라며 평생을 받쳤지만 정작 친구들과 여자 꼬시기 방법을 재미로 연구한 게 노벨을 상을 받게 되었습니다. 기존의 확률은 존재하는 것에만 적용을 하지만 존 내시 박사의 게임에 법칙에서는 100명의 여자 중 최고의 신부를 고려는 방법으로 30명을 일단 만난 다음 차회 부터는 지금까지 만난 사람중 1이라도 나은 최고의 사람을 만난다면 무조건 결혼하는 법칙 즉 모수가 100일 수 없는 확률을 완성할 수 있는 방법을 제시합니다. 물론 소수를 구하는 공식 따위는 만들지 못했습니다. 일부 수학자는 소수가 짧은 주기와 긴 주기를 간격으로 해서 계속 반복되고 있다는 것은 밝혔지만 역시나 공식으로 이것을 증명하지는 못했습니다.  소수를 찾는 이론은 다양하게 많지만 지금의 슈퍼컴퓨터로도 다음 소수의 위치를 밝히지는 못했습니다. 근데 이 무모한 짓은 왜하는 것일까요? 우리처럼 주가나 비트코인의 가격을 예측하는 게 더 정상적이지 않을까요?

 

반응형
LIST

+ Recent posts