내 자동매매 봇은 왜 맨날 돈을 녹일까?
코스피 6000 돌파 뉴스에 휩쓸려 또 봇을 만들고 깨달은 점
어제 글을 작성하고, “오늘은 진짜 10시간 동안 엉덩이 붙이고 공부만 한다!!” 라고 굳게 다짐했다.
그런데 아침에 코스피가 6000을 넘었다는 뉴스를 보고… 또 참지 못해버렸다.
그렇게 또 점심시간에 이상한 걸 끄적끄적 만들기 시작하다가 금쪽같은 시간을 다 보내버렸다.
시즌 12371번째 자동 매매 봇 국장(국내 주식) 버전이다.
만들어놓고 보니까 오후 1시가 조금 넘었길래, 모의 투자로 2시간 정도 테스트를 돌려봤다.
결과는? 1시간도 안 지나서 모의 투자 계좌가 아주 살살 녹아내렸다.
생각해보면 매번 이런 식이었다.
열심히 코딩해서 만들고 -> 테스트 돌려보고 -> 계좌 녹이고 -> 봇 유기하기.
근데 진짜 이해가 잘 안 된다.
사실 내가 주식이나 코인 같은 금융 쪽은 잘 모르는 영역이기도 하고… 내가 좋아하고 그나마 할 줄 아는 건 코드 짜면서 날밤 까는 것뿐이니까.
‘그냥 기계가 감정 없이 알아서 기술적 지표만 보고 기계적으로 거래하게 만들면, 무조건 돈을 버는 거 아니야?’ 라는 생각이 드는데…
도대체 왜 내 자동 매매봇은 맨날 이렇게 돈을 살살 녹일까???
그래서 오늘은(오늘도…) 공부도 안 되겠다, 도대체 왜 내 봇이 돈을 까먹는지 그 이유를 좀 파봤다.
1. 차트 지표는 시장의 ‘눈치(Context)‘를 전혀 못 본다
그동안 나는 주식을 1도 모르면서 아는 척 좀 한다고 “RSI가 30 밑으로 떨어지면(과매도) 무조건 산다!” 같은 단순 무식한 봇만 만들었었다.
근데 오늘 좀 찾아보니까, 실전에서 돈을 쓸어 담는 진짜 고수들은 지표 숫자 하나만 보고 무지성으로 매수 버튼을 누르는 게 아니더라.
그 사람들은 호가창에 숫자가 와다다다 꽂히는 속도, 반대편에 쌓여있는 매수벽의 두께, 심지어 그날 아침의 싸~한 시장 분위기까지 ‘직관’이라는 이름으로 싹 다 종합해서 낌새를 채고 판단한다.
근데 내 봇은 그딴 ‘눈치’가 없다.
코스피가 폭락해서 세상이 무너지는 와중에 뜨는 RSI 20이나, 그냥 지루한 횡보장에서 뜨는 RSI 20이나 내 봇한테는 똑같이 “오! 살 타이밍(True)!”일 뿐이다.
상황에 대한 ‘맥락’을 1도 이해하지 못하고 칼같이 뛰어드니, 고수들이나 세력들이 털고 나가는 함정 물량의 아주 훌륭한 설거지 대상(짬처리)이 되었던 것이다.
2. 도트뎀이 좀 많이… 아프다.. 세금과 수수료 (그리고 슬리피지?)
단타는 기본적으로 조금 먹고 조금 잃는 짤짤이 싸움이다.
1% 먹고 0.5% 손절 치는 지난한 과정인데, 내가 과거 데이터(백테스트)를 돌리면서 아주 크게 간과하고 있던 깡패 같은 적이 하나 있었다.
바로 ‘거래 비용’이다.
한국 주식은 팔 때 무조건 0.18%의 세금을 떼어간다고 한다. 수수료도 따로 나간다.
“어? 그럼 0.18% 이상 올랐을 때만 팔면 무조건 이득이네?” 라고 순진하게 생각했는데, 여기엔 ‘슬리피지’라는 무서운 놈이 숨어있었다.
이게 뭐냐면, 내 봇이 “아싸 지금 10,000원에 사야지!” 하고 시장가 주문을 빡 던지는 그 0.1초 사이에, 이미 발 빠른 다른 사람들이 먼저 사가면서 호가가 10,020원으로 밀려버려 내가 원하던 가격에 못 사는 현상이다.
결국 승률이 좀 나오는 구간에서도, 잦은 매매로 세금 뜯기고 슬리피지로 손해 보고 하다 보면 계좌가 슬금슬금 우하향할 수밖에 없는 가슴 아픈 구조였다.
3. 나는 방구석 노트북인데… 상대는 슈퍼 컴퓨터다.
순간 이런 생각도 들었다. “그럼 차라리 내 봇의 반응 속도를 미친 듯이 끌어올리면 어떨까?”
“돈 좀 모아서 최고 사양 PC를 맞추고, 최신 클라우드 AI나 내 컴퓨터 로컬 AI한테 수백 개 지표를 순간적으로 연산해서 0.01초 만에 매매하게 만들면 저 기관들을 이길 수 있지 않을까?”
근데 이건 애초에 나 같은 방구석 학생, 어설픈 개인이 비빌 수 있는 싸움판이 아니었다. ‘기울어진 운동장’ 그 자체였다.
- 클라우드 AI의 한계: AI한테 1분봉 차트를 넘겨주고 “지금 살래말래?” 물어보면, 똑똑하게 대답은 잘해주는데 통신 딜레이 때문에 판단까지 최소 3초~5초가 걸린다. 0.1초 단위로 피 튀기는 단타판에서 5초 뒤에 봇이 “지금 당장 사세요!”라고 외쳐봤자 이미 버스는 저 멀리 종점으로 떠나고 없다.
- 물리적 인프라라는 넘사벽: “그럼 딜레이 없게 내 최고사양 PC에서 로컬 AI를 돌리면?” 애석하게도 진짜 돈 많은 기관 형님들(프랍 데스크)은 아예 주식 거래소 서버 바로 옆방에 수백억짜리 전용 광케이블을 다이렉트로 꽂고 슈퍼컴퓨터로 초당 수백만 번 연산을 돌린다고 한다.
방구석에서 공유기 인터넷 랜선 꽂고 파이썬으로 request 찔끔찔끔 날리는 내 주문은, 이미 그 무자비한 로봇 형님들이 맛있는 거 다 빼먹고 남은 빈 껍데기만 줍는 꼴이었다.
💡 깨달음: 개인 개발자가 접근해야 할 방식은 달랐다
이번에 봇을 대대적으로 뜯어고치면서 확실히 느꼈다. 코딩 좀 만질 줄 안다고 일개 개인이 월스트리트나 여의도의 스캘핑 머신들과 ‘속도’로 싸우는 건 그냥 돈 바치러 가는 짓이다.
대신 나 같은 주식 초보자도 코딩과 AI를 무기로 비벼볼 만한 영역은 따로 있었다.
바로 시간적인 여유와 방대한 데이터 분석이다.
- 초 단위로 호가창 긁어오는 무의미한 짓은 그만두고,
Open DART(전자공시시스템)에서 분기별 재무제표와 현금흐름을 긁어오게 만들었다. - AI를 1분봉 차트 리딩에 혹사시키는 대신, 사업보고서 수백 장을 통째로 읽히고 이 회사가 진짜 돈을 잘 버는 구조인지 점수화하도록 시켰다.
- 하루에 수십 번 샀다 팔았다 하는 단타 봇 대신, 매일 아침 9시 정각에 내가 미리 세운 포트폴리오 비중대로 딱 한 번만 일괄 매매를 돌려서 세금과 슬리피지 누수를 차단했다.
결국 코딩과 AI는 남들보다 0.1초 빨리 주식을 낚아채려고 쓰는 게 아니었다.
방대하고 머리 아픈 재무제표와 공시들을 나 대신 꼼꼼히 읽어주고, 시장이 흔들려도 감정에 휘둘리지 않으며, 내가 내 본업에 집중하는 동안에도 내가 정한 원칙을 흔들림 없이 수행해 주는 자동화 도구로 쓰는 게 맞았다.
마침. (이제 돌려만 놓고 쳐다도 안볼거임. 진짜.)