[카테고리:] AI봇 개발기

  • 봇을 만들다, 정작 제가 바뀌었습니다 — 개발기 ⑧ 봇이 가르쳐 준 투자 심리

    봇을 만들다, 정작 제가 바뀌었습니다 — 개발기 ⑧ 봇이 가르쳐 준 투자 심리

    솔직히 고백하겠습니다. 저는 봇에게 시킨 규칙을, 정작 제 돈으로는 단 하나도 못 지키던 사람이었습니다.

    “손실이 이 선에 닿으면 무조건 팔아라.” 봇에게는 이렇게 코드로 못을 박아 두면서, 제 계좌에서는 그 선을 몇 번이고 그냥 지나쳤거든요. “조금만 더 기다리면 오르겠지” 하면서요.

    지난 개발기⑦에서는 봇에게 어디까지 맡기고 어디는 끝까지 안 맡기는지, 그 경계를 이야기했습니다. 오늘은 조금 부끄러운 이야기입니다 — 봇을 가르치다가, 거꾸로 봇이 저를 가르친 이야기.

    거울 앞의 투자자
    Photo: cami / Pexels

    봇에게 시킨 규칙이, 전부 제가 못 하던 것이었습니다

    봇을 만들며 안전장치를 하나씩 넣다 보니 이상한 걸 깨달았습니다. 제가 봇에게 시키는 규칙이 하나같이 “사람이라면 흔들릴 바로 그 순간에 지켜야 하는 것”이더군요.

    봇에게 시킨 세 가지 규칙
    머니노트 · 정보·교육·참고용
    표로 보기
    봇에게 시킨 세 가지 규칙
    항목 설명
    손실이 정해진 선에 닿으면 손절 무조건 판다
    이익이 났을 때 익절 서둘러 팔지 않는다
    연달아 잃으면 멈춤 새로 사는 걸 멈춘다

    세 가지 다 어렵습니다. 그런데 어려운 방향이 사람마다 정반대라는 게 오늘 이야기의 핵심입니다. 하나씩 볼게요.

    규칙 ① 손절 — 사람은 손실을 못 자릅니다

    첫 번째는 손절입니다. 봇은 손실이 정해진 선에 닿으면 봐주는 것 없이 팝니다. 종목 크기에 따라 대략 마이너스 6에서 10퍼센트 선이죠. 여기엔 “이번엔 좀 봐줄까?” 하는 칸이 아예 없습니다.

    사람은 정확히 그 반대입니다. 손실이 난 종목일수록 더 못 팝니다. “팔면 손해가 확정되니까, 오를 때까지 버티자”는 마음이 들거든요. 심리학에서는 이걸 손실 회피라고 부릅니다 — 100을 잃는 아픔이 100을 버는 기쁨보다 훨씬 크게 느껴지는 성질입니다.

    사람의 버릇과 봇의 규칙
    머니노트 · 정보·교육·참고용
    표로 보기
    손실 앞에서, 사람과 봇은 정반대입니다
    단계 내용 설명
    1단계 손실이 선에 닿는다 정해 둔 손절 가격에 도달
    2단계 사람은 망설인다 조금만 더 기다리면 오를 것 같다
    3단계 봇은 그냥 판다 규칙이 즉시 실행한다

    봇에게 이 규칙을 심으면서, 저는 제가 그동안 손절을 못 해서 작은 손실을 큰 손실로 키워 왔다는 걸 인정하게 됐습니다. 봇은 그냥 시킨 대로 자를 뿐인데, 그 담담함이 저에겐 없던 거죠.

    그런데 여기서 반전이 하나 나옵니다. 손절은 그렇다 치고, 봇은 정말 사람보다 늘 현명했을까요? 아니었습니다. 봇도 사람과 똑같은 실수를 하고 있었습니다.

    규칙 ② 익절 — 봇조차 이익을 너무 빨리 팔고 있었습니다

    두 번째는 익절, 즉 이익을 실현하는 문제입니다.

    여기서 저는 제 손으로 만든 봇에게 뒤통수를 맞았습니다. 초기의 봇은 이익이 어느 정도 나면 가진 물량의 대부분을 서둘러 팔아 치우도록 짜여 있었거든요. “이익 났을 때 얼른 챙기자”는, 딱 사람이 하는 생각 그대로였습니다. 제가 무심코 제 조급함을 코드에 심어 둔 겁니다.

    그런데 이 봇의 매매를 가상으로 되짚어 검증해 봤더니, 뜻밖의 방향이 드러났습니다.

    봇도 이익을 서둘러 잘라먹고 있었다
    머니노트 · 정보·교육·참고용
    표로 보기
    봇의 조기익절이 이익을 갉아먹고 있었습니다
    단계 내용 설명
    1단계 이익이 조금 난다 목표에 닿자마자
    2단계 대부분 서둘러 판다 남길 몫까지 함께 정리
    3단계 더 오를 자리를 놓친다 상방을 스스로 접는다

    검증에서 분명해진 건 딱 한 방향이었습니다 — 이익을 서둘러 자르는 습관은 손해 쪽에 가깝다는 것. 반대로 이익을 서두르지 않고 일부는 남겨 추세를 더 태우는 쪽이 나았습니다. 그래서 봇의 청산 원칙을 이 방향으로 잡았습니다 — 목표에 닿아도 전부 팔지 않고, 일부는 남겨 추세가 살아있는 동안 더 들고 가도록요.

    다만 이건 과거 데이터로 되짚은 검증이라 미래 수익을 보장하는 공식이 아닙니다. 실제 적용도 한 번에 확 바꾸지 않고, 데이터를 더 쌓아 가며 조심스럽게 다듬는 중입니다.

    여기서 저는 두 번째 교훈을 얻었습니다. 사람이 이익 앞에서 조급해지는 건 기분 탓이 아니라 뿌리 깊은 습관이라, 코드를 짜는 제 손끝에도 그대로 묻어났다는 것. 봇의 검증이 그 습관을 거꾸로 저에게 비춰 준 셈입니다.

    사람과 봇, 방향이 정확히 반대였습니다

    손절과 익절을 나란히 놓으면 재밌는 그림이 그려집니다.

    사람의 본능과 봇의 규칙은 정반대
    머니노트 · 정보·교육·참고용
    표로 보기
    사람과 봇은 정반대 방향입니다
    항목 설명
    이익은 빨리 판다 사람의 본능 손실은 늦게 자른다
    이익은 늦게까지 들고 간다 봇의 규칙 손실은 빨리 자른다
    본능을 뒤집은 규칙 봇의 설계 감정을 계산에서 뺐다

    사람은 이익은 빨리 챙기고 손실은 오래 붙듭니다. 봇의 규칙은 그 반대죠 — 이익은 늦게까지 들고 가고, 손실은 빨리 자릅니다. 행동경제학에서 사람의 이 버릇을 처분 효과라고 부르는데, 봇을 만들며 저는 이 이름을 머리가 아니라 제 계좌로 이해하게 됐습니다.

    그런데 아직 규칙이 하나 남았습니다. 손절도 익절도 아닌, 잃고 난 직후의 마음에 관한 겁니다.

    규칙 ③ 멈춤 — 잃으면 사람은 흥분합니다

    세 번째는 서킷 브레이커입니다. 봇은 연달아 잃거나 하루에 크게 빠지면, 그날은 새로 사는 걸 멈춥니다. 구체적으로는 세 번 연속 손실이 나거나 하루 손실이 마이너스 3퍼센트에 닿으면 새 매수를 잠급니다.

    왜 이런 걸 넣었을까요? 사람은 잃고 나면 차분해지는 게 아니라 흥분하기 때문입니다. “방금 잃은 걸 당장 만회해야겠다”는 마음에 평소보다 더 크게, 더 급하게 베팅하게 되죠. 잃을수록 판돈을 키우는 이 습관이 계좌를 가장 빨리 망가뜨립니다.

    잃은 직후, 멈추게 만드는 장치
    머니노트 · 정보·교육·참고용
    표로 보기
    잃은 직후에 강제로 멈추는 장치
    단계 내용 설명
    1단계 연달아 잃는다 세 번 연속 손실 또는 하루 마이너스 3퍼센트
    2단계 새 매수를 잠근다 그날은 더 사지 않는다
    3단계 흥분을 식힌다 만회 매매를 규칙이 막는다

    봇에게는 이게 그냥 한 줄의 조건문입니다. 하지만 사람에게 “잃었을 때 오늘은 더 사지 마”라고 말하면, 그 말을 지키기가 얼마나 어려운지 저는 잘 압니다. 봇은 감정이 없어서 쉽게 멈추는 게 아니라, 감정을 아예 계산에 넣지 않도록 설계돼서 멈추는 겁니다.

    정리 — 봇을 가르치다, 제가 배웠습니다

    • 손절: 봇은 정해진 선에서 무조건 자릅니다. 사람은 손실을 못 잘라 작은 손실을 키웁니다.
    • 익절: 봇조차 처음엔 이익을 서둘러 팔았고, 검증해 보니 그게 손해 쪽에 가까웠습니다. 서두르지 않는 방향으로 다듬는 중입니다.
    • 멈춤: 봇은 연달아 잃으면 그날 매수를 멈춥니다. 사람은 잃을수록 흥분해 판돈을 키웁니다.

    돌아보면 저는 봇에게 좋은 투자 습관을 가르치려 했는데, 정작 그 규칙들을 코드로 옮겨 적으면서 제가 그동안 얼마나 그 반대로 살아왔는지를 마주하게 됐습니다. 봇은 감정이 없어서 규칙을 지키는 게 아니라, 규칙을 지키도록 감정을 뺀 자리에 만들어졌을 뿐입니다.

    그러니 이 규칙들은 사실 봇을 위한 게 아니었는지도 모릅니다. 흔들리는 사람을 대신해, 흔들리지 않는 손 하나를 옆에 두는 것 — 제가 봇을 만들며 진짜로 배운 건 그거였습니다.

    ※ 위 손절·서킷 기준 같은 수치는 이 시스템의 설정값을 설명하기 위한 것이며, 특정 매매를 권하는 기준이 아닙니다.

    다음 글 예고 — 시장이 무너진 날, 봇은 무엇을 했을까

    규칙과 심리 이야기는 여기까지입니다. 그런데 이 모든 안전장치가 진짜 시험대에 오르는 날이 있습니다. 바로 시장 전체가 하루아침에 무너지는 급락장이죠.

    다음 편에서는 시장이 크게 빠진 어느 날, 이 봇이 실제로 어떻게 움직였고 무엇을 놓쳤는지를 솔직하게 풀어보겠습니다.

    여러분은 스스로 정한 투자 규칙을 지키고 계신가요? 저는 봇에게는 시키면서 정작 제가 못 지켰습니다.

    ▶ 다음 편 예고
    시장이 무너진 날, 봇은 무엇을 했을까 — 급락장 대응
    모든 안전장치가 한꺼번에 시험대에 오른 날. 봇은 잘 버텼을까요, 아니면 또 넘어졌을까요.

    다음 편을 준비하고 있습니다 ✍️


    근거: V2_진화루프_조기익절_누수 · 4대_안전_백스톱 · AI와_규칙의_역할분담 — 본 글은 개발·운영 과정의 경험 공유이며 투자 자문이 아닙니다.

    이 글은 특정 종목의 매수·매도를 권유하는 글이 아니라, 개인이 만든 시스템의 개발·운영 과정을 공유하는 정보·교육·참고용 글입니다. 투자 판단과 책임은 본인에게 있습니다.

  • AI에게 조금씩 더 맡기고 있습니다 — 개발기 ⑦ 단, 이 선만은 안 넘깁니다

    AI에게 조금씩 더 맡기고 있습니다 — 개발기 ⑦ 단, 이 선만은 안 넘깁니다

    질문 하나로 시작하겠습니다. 이 봇은 새로 주식을 살 때, 열 번 중 몇 번을 AI가 결정할까요?

    지금은 아홉 번입니다. 그런데 처음 이 시스템을 만들 때는, 단 한 번도 안 맡겼습니다. 0번이었죠.

    지난 개발기⑥에서는 이 봇을 한 달 굴리는 데 돈이 어디서 새는지를 뜯어봤습니다. 오늘은 조금 다른 이야기입니다 — 0번에서 9번으로, 봇에게 맡기는 경계를 어떻게 옮겼는지. 그리고 아무리 시간이 흘러도 절대 안 옮긴 선은 무엇인지.

    사람과 로봇이 함께 손잡이를 잡다
    Photo: Tara Winstead / Pexels

    처음엔 한 번도 안 맡겼습니다

    시스템을 만들기 시작할 때 제 원칙은 딱 한 줄이었습니다. “AI는 참고만. 결정은 규칙이.”

    이유는 개발기 에서 자세히 풀었습니다. AI는 똑똑하지만 변덕을 부리고, 모르는 것도 그럴듯하게 지어내니까요. 그런 성격에 내 돈의 결정을 통째로 맡기는 건 무서웠습니다.

    그래서 초기의 봇은 AI에게 “이 종목 어때?”라고 물어보긴 해도, 그 대답을 참고 자료로만 썼습니다. 실제로 사고파는 결정은 처음부터 끝까지 사람이 짠 규칙이 내렸죠. AI는 회의실에 앉아 의견을 내는 사람이었을 뿐, 방아쇠는 만지지 못했습니다.

    그런데 시간이 지나면서, 저는 이 선을 조금씩 옮기게 됩니다.

    지금은 아홉 번을 맡깁니다 — 경계가 움직였습니다

    먼저 지금 상태부터 숫자로 보여드릴게요.

    처음엔 0번, 지금은 9번
    머니노트 · 정보·교육·참고용
    표로 보기
    처음엔 0번, 지금은 9번 맡깁니다
    항목 설명
    처음에 AI가 내린 결정 수 0번 참고만 하고 결정은 규칙이
    지금 AI가 내리는 결정 수 9번 열 번 중 아홉 번입니다
    AI가 판단하는 구간의 비율 94퍼센트 시장은 대부분 애매하다

    왜 이렇게 바뀌었을까요? 개발기 에서 다뤘듯, 실제 시장은 대부분 “사도 될 것 같기도, 아닌 것 같기도 한” 애매한 얼굴을 하고 있었습니다. 딱 떨어지게 좋거나 딱 떨어지게 나쁜 종목은 드물었죠.

    그 애매한 구간에서 “이건 살 만하고, 저건 넘기자”를 가려주는 일 — 그게 제가 AI에게 맡겨 보기로 한 자리였습니다. 그래서 애매한 판단만 AI에게 넘기다 보니, 어느새 새 진입의 열에 아홉이 AI 손을 거치게 된 겁니다.

    여기서 궁금한 게 하나 생깁니다. AI가 그렇게 쓸모 있다면, 왜 한꺼번에 “이제부터 다 네가 결정해”라고 안 했을까요?

    그런데 왜 한꺼번에 안 맡겼을까요?

    이게 이 봇을 만들며 가장 조심한 부분입니다. 저는 경계를 한 번에 확 옮기지 않았습니다. 계단을 오르듯 한 칸씩 옮겼습니다.

    경계는 한 번에 안 옮겼습니다
    머니노트 · 정보·교육·참고용
    표로 보기
    경계는 한 칸씩 옮겼습니다
    단계 내용 설명
    1단계 0단계 AI는 참고만·결정은 규칙이
    2단계 1단계 지금 애매한 구간의 판단을 AI에게
    3단계 2단계 다음 타이밍과 비중까지 맡길 후보
    4단계 먼 단계 사람 대신 팀처럼 주도하는 목표

    이렇게 나눈 데는 이유가 있습니다. 저는 이미 봇을 너무 믿었다가 데인 적이 여러 번 있거든요. 개발기 에서는 첫 모의투자 성적표가 처참했고, 개발기 에서는 봇이 멀쩡히 체결된 주문을 “실패”라 우겼습니다. 개발기 에서는 사람이 안 보는 사이 봇이 조용히 몇 주씩 고장 나 있기도 했죠.

    그런 경험이 저를 겁쟁이로 만든 게 아니라 신중하게 만들었습니다. 그래서 다음 단계로 올라가는 조건을 기분이 아니라 데이터로 정했습니다.

    증거가 쌓여야 다음 칸을 엽니다
    머니노트 · 정보·교육·참고용
    표로 보기
    증거가 쌓여야 다음 칸을 엽니다
    항목 설명
    다음 단계 전 필요한 매매 기록 수 20건 이상 충분히 겪어봐야 안다
    그 기록이 넘어야 할 문턱 승률 55퍼센트 운에만 기대지 않았는지 본다
    백테스트와 실측을 대조 검증 통과 숫자로 확인된 뒤에만

    “매매를 스무 건은 넘겨 보고, 그중 절반을 웃도는 성적(승률 55퍼센트)을 냈는지 확인한 다음에야 다음 칸을 연다.” 이런 식입니다. 성급하게 건너뛰지 않는 것 — 그게 봇에게 권한을 주는 첫 번째 규칙이었습니다.

    그리고 여기에 하나가 더 있습니다. 데이터가 그 조건을 채웠다고 해서 봇이 스스로 다음 칸을 열지는 않습니다. 조건이 갖춰져도, 실제로 단계를 한 칸 올릴지는 마지막에 사람이 결정합니다. 자동화된 시스템이지만, “이제 더 맡겨도 되겠다”는 그 판단만은 사람 몫으로 남겨 둔 거죠.

    그런데 여기서 더 중요한 게 있습니다. 경계가 아무리 위로 올라가도, 아예 손대지 않기로 못 박은 선이 따로 있거든요.

    아무리 똑똑해져도 못 넘는 선

    봇이 앞으로 훨씬 똑똑해져서 언젠가 사람처럼 주도적으로 판단하게 되더라도, 끝까지 AI에게 안 넘기기로 한 안전장치가 있습니다.

    아무리 똑똑해져도 못 넘는 선
    머니노트 · 정보·교육·참고용
    표로 보기
    아무리 똑똑해져도 못 넘는 선
    항목 설명
    시장이 위기면 새로 안 산다 거시 신호등 유가·환율·금리·공포지수 임계값
    연달아 잃으면 멈춘다 서킷 브레이커 3연속 손실 또는 하루 마이너스 3퍼센트
    정해진 선에 닿으면 판다 손절 하드캡 종목 크기별 마이너스 6에서 10퍼센트
    위기·손절을 작동시키는 핵심 코드 안전장치 코드 사람이 짠 규칙이 관리한다

    이 넷은 어느 단계로 올라가든 절대 안 바꾸기로 한 것들입니다.

    • 거시 신호등 — 유가·환율·금리·공포지수가 위험한 선을 넘으면, 시장 전체가 위기라는 뜻이라 새로 사는 걸 규칙이 막습니다.
    • 서킷 브레이커 — 연달아 잃거나 하루에 크게 빠지면, 봇이 흥분해 폭주하지 못하게 규칙이 멈춰 세웁니다.
    • 손절 하드캡 — 손실이 정해진 선에 닿으면, 봐주는 것 없이 규칙이 팝니다.
    • 안전장치 코드 — 위 세 안전장치를 실제로 작동시키는 핵심 코드는, AI가 아니라 규칙이 관리합니다.

    이유는 개발기 에서 말한 것과 같습니다 — 안전장치가 상황을 봐가며 변덕을 부리면, 그건 이미 안전장치가 아니니까요. 흔들릴 만한 순간일수록, 판단은 빼고 규칙만 남겨야 합니다.

    AI가 고르고, 방아쇠는 규칙이 당깁니다

    그래서 지금 이 봇의 경계는 정확히 이렇게 생겼습니다.

    AI가 고르고 방아쇠는 규칙이 당깁니다
    머니노트 · 정보·교육·참고용
    표로 보기
    AI가 고르고, 방아쇠는 규칙이 당깁니다
    단계 내용 설명
    1단계 AI가 후보를 고른다 애매한 구간을 판단
    2단계 안전 백스톱을 통과한다 위험 신호가 없어야 다음
    3단계 규칙이 실제 주문을 낸다 마지막 방아쇠는 알고리즘

    사실 지금 AI의 판단은 실제 돈이 0원인 모의계좌에서 검증받는 중입니다. 다만 종이 위에서 “이렇게 샀다면 어땠을까”를 세어보기만 하는 건 아닙니다. 증권사로 진짜 주문이 나가고 실제로 체결됩니다 — 돈만 가짜일 뿐, 주문이 오가는 길은 실전과 똑같이 씁니다. 그래서 실전에서야 터졌을 사고를 미리 겪어볼 수 있고, 방아쇠를 당기는 마지막 손은 여전히 규칙 쪽에 있습니다.

    말하자면 AI는 회의실에서 “이거 삽시다”라고 손을 드는 참모이고, 그 결정이 안전장치를 다 통과해야 실제 주문으로 이어집니다. 참모에게 점점 더 많은 판단을 맡기더라도, 위기에 브레이크를 밟는 손만은 끝까지 규칙 쪽에 둡니다.

    정리 — 경계는 움직이되, 선은 남깁니다

    • 처음엔 AI에게 결정을 0번 맡겼습니다. “AI는 참고만, 결정은 규칙”이었죠.
    • 지금은 애매한 구간이 시장의 대부분이라, 새 진입의 열에 아홉을 AI 손이 거칩니다.
    • 그 경계를 한 번에 옮기지 않고, 매매 기록과 승률 같은 데이터가 쌓여야 한 칸씩 올렸습니다.
    • 그래도 거시 신호등·서킷·손절 같은 안전장치는 어느 단계에서도 AI에게 안 넘깁니다. 지금은 실제 주문을 내는 일까지 규칙이 맡고 있고요.

    돌아보면 “AI에게 맡길까 말까”는 애초에 반쪽짜리 질문이었습니다. 진짜 질문은 “경계를 어디까지, 얼마나 천천히 옮기고, 무엇은 끝까지 안 옮기느냐” 였습니다. 봇에게 판단을 점점 더 맡기면서도, 위기에 멈춰 세우는 안전장치만은 끝까지 규칙에게 남겨 두는 것 — 그 아슬아슬한 균형을 지금도 계속 다듬고 있습니다.

    다음 글 예고 — 봇을 만들다, 정작 내가 바뀐 이야기

    봇에게 규칙을 가르치다 보니, 이상하게도 제 자신의 투자 습관이 먼저 부끄러워졌습니다. “손실이 이 선에 닿으면 무조건 판다”를 봇에게는 시키면서, 정작 저는 그걸 한 번도 못 지켰거든요.

    다음 편에서는 봇을 만들며 제가 사람의 투자 심리에 대해 새로 배운 것들을 풀어보겠습니다.

    여러분이라면 사람과 기계의 경계를 어디에 그으시겠어요? 저는 그 선을 몇 번이나 다시 그었습니다.

    ▶ 다음 편 예고
    봇을 만들다, 정작 내가 바뀐 이야기 — 사람의 투자 심리
    봇에게는 시키면서 나는 못 지킨 규칙들. 봇이 거꾸로 사람을 가르친 이야기입니다.

    다음 편을 준비하고 있습니다 ✍️


    근거: 스톡봇_진화_로드맵 · AI와_규칙의_역할분담 · 4대_안전_백스톱 — 본 글은 개발·운영 과정의 경험 공유이며 투자 자문이 아닙니다.

    이 글은 특정 종목의 매수·매도를 권유하는 글이 아니라, 개인이 만든 시스템의 개발·운영 과정을 공유하는 정보·교육·참고용 글입니다. 투자 판단과 책임은 본인에게 있습니다.

  • 이 봇, 한 달에 얼마가 들까요? — 개발기 ⑥ 진짜 비싼 건 서버가 아니었습니다

    이 봇, 한 달에 얼마가 들까요? — 개발기 ⑥ 진짜 비싼 건 서버가 아니었습니다

    질문 하나로 시작하겠습니다. 24시간 돌아가는 이 봇, 한 달에 제일 돈이 많이 드는 곳이 어디였을까요?

    저는 당연히 서버인 줄 알았습니다. 컴퓨터를 24시간 켜 두는 값이 제일 클 거라고요. 그런데 한 달 영수증을 뜯어보니, 서버는 의외로 조용했고 엉뚱한 데서 돈이 슬금슬금 새고 있었습니다.

    지난 개발기⑤에서는 이 봇이 사람 없이 24시간 어떻게 도는지를 다뤘습니다. 오늘은 그 24시간을 굴리는 데 한 달에 얼마가 드는지, 그리고 그 돈이 어디로 새는지를 솔직하게 까 보겠습니다.

    한 달 운영비 영수증
    Photo: www.kaboompics.com / Pexels

    운영비는 성격이 다른 세 덩어리였습니다

    먼저 큰 그림부터요. 이 봇의 한 달 비용은 성격이 완전히 다른 세 덩어리로 나뉩니다.

    운영비 세 덩어리
    머니노트 · 정보·교육·참고용
    표로 보기
    운영비는 세 덩어리였습니다
    항목 설명
    컴퓨터를 24시간 켜 두는 값 서버 매달 똑같은 고정비
    봇이 판단을 물어보는 값 AI 쓴 만큼 늘어나는 변동비
    시세와 뉴스를 받아오는 값 데이터 대부분 무료로 해결
    • 서버 — 봇이 사는 컴퓨터 값입니다. 한 번 정하면 매달 똑같이 나갑니다. 집세 같은 거죠.
    • AI — 봇이 “이거 사도 될까?”를 AI에게 물어볼 때마다 드는 값입니다. 쓴 만큼 늘어납니다. 수도 요금 같은 거죠.
    • 데이터 — 시세와 뉴스를 받아오는 값입니다. 다행히 대부분 무료로 해결됩니다.

    집세(고정비)는 미리 알 수 있어서 무섭지 않습니다. 진짜 무서운 건 쓴 만큼 나오는 수도 요금(변동비)입니다. 얼마 나올지 모르니까요. 그리고 제 봇에서 그 수도 요금 역할을 한 게 바로 AI였습니다.

    서버는 생각보다 조용했습니다

    먼저 제가 겁냈던 서버부터요. 이 봇은 콘타보(Contabo)라는 곳의 가상 서버 한 대에서 삽니다. 메모리 12GB짜리 평범한 리눅스 컴퓨터 한 대죠. 대단한 슈퍼컴퓨터가 아닙니다.

    이 컴퓨터 한 대가 봇의 모든 걸 합니다 — 시세를 받고, 계산하고, 매일 새벽 3시에 스스로를 백업까지 합니다. 그런데도 값은 매달 똑같은 고정비 한 줄로 끝났습니다. 커피 몇 잔 값 수준의 예측 가능한 비용이라, 한 번 정한 뒤로는 신경 쓸 일이 없었습니다.

    서버는 컴퓨터 한 대였습니다
    머니노트 · 정보·교육·참고용
    표로 보기
    봇이 사는 곳은 컴퓨터 한 대였습니다
    항목 설명
    봇이 사는 가상 서버 수 1대 시세·계산·백업 전부 담당
    서버 메모리 크기 12GB 평범한 리눅스 컴퓨터 수준
    스스로 백업하는 시각 매일 3시 그날치 데이터를 안전하게 보관

    여기서 반전이 시작됩니다. 제가 그렇게 겁냈던 서버는 이렇게 조용한데, 정작 영수증에서 슬금슬금 커지던 건 따로 있었습니다. 봇이 AI에게 말을 거는 값이었습니다.

    봇은 하루에도 수없이 AI에게 말을 겁니다

    이 봇은 혼자 판단하지 않습니다. 개발기 에서 다룬 것처럼, 여러 AI 도우미에게 물어보고 그 답을 모아 결정합니다. “지금 시장 분위기 어때?”, “이 종목이 왜 오르는 거야?”, “오늘 하루 복기 좀 해 줘.” 이렇게 말을 걸 때마다 요금이 붙습니다. 통화 요금처럼요.

    문제는 이게 쓴 만큼 늘어난다는 겁니다. 봇이 부지런할수록, 볼 종목이 많을수록 요금은 올라갑니다. 실제로 한 종류의 AI 요금만 따로 봐도, 어느새 한 달에 50달러(약 7만 원) 안팎까지 슬금슬금 올라와 있었습니다.

    그래서 이 영수증을 처음으로 제대로 뜯어봤습니다. 그리고 두 가지 뜻밖의 사실을 발견했습니다.

    첫 번째 반전 — 질문은 싼데, 대답이 5배 비쌌습니다

    AI 요금은 크게 두 부분으로 나뉩니다. 봇이 집어넣는 질문(입력) 값과, AI가 뱉어내는 대답(출력) 값입니다.

    저는 당연히 둘이 비슷할 줄 알았습니다. 그런데 뜯어보니 대답이 질문보다 다섯 배나 비쌌습니다.

    질문보다 대답이 비쌌습니다
    머니노트 · 정보·교육·참고용
    표로 보기
    질문은 싼데, 대답이 5배 비쌌습니다
    항목 설명
    질문 넣기 같은 양을 넣을 때 1배
    대답 받기 같은 양을 받을 때 5배

    말을 거는 건 쌉니다. 문제는 AI가 길게 대답할수록 요금이 확 뛴다는 거죠. 사람으로 치면 “질문하는 건 싼데, 상담사가 길게 대답할수록 요금이 붙는” 셈입니다.

    이 사실 하나가 나중에 아주 중요해집니다. 비용을 줄이려면 질문을 아끼는 게 아니라, 대답을 아껴야 한다는 뜻이었으니까요. 그런데 저는 이걸 모른 채, 엉뚱한 곳에 테이프를 붙이는 헛수고를 먼저 했습니다.

    두 번째 반전 — 아낀다고 붙인 테이프가 헛것이었습니다

    처음 떠올린 절감 아이디어는 이거였습니다. “봇이 매번 비슷한 질문을 하니까, 똑같은 질문은 저장해 뒀다가 재사용(캐싱)하면 값을 아낄 수 있지 않을까?

    그럴듯했습니다. 그래서 실제로 계산해 봤는데 — 아낀 돈이 0원이었습니다.

    이유가 두 겹이었습니다. 첫째, 이 재사용 할인은 질문이 아주 길 때(정해진 기준 이상)만 걸리는데, 제 질문은 그보다 훨씬 짧아서 할인 자체가 안 걸렸습니다. 둘째, 설령 걸렸어도 이 할인은 질문(입력) 값만 깎아 줍니다. 그런데 방금 봤듯이 진짜 비싼 건 대답(출력) 이었죠. 큰 쪽은 손도 못 대는 할인이었던 겁니다.

    헛다리 짚은 캐싱
    머니노트 · 정보·교육·참고용
    표로 보기
    아낀다고 붙인 테이프가 헛것이었습니다
    항목 설명
    재사용 할인으로 아낀 값 0원 기대와 달리 전혀 못 아낌
    질문이 짧아서 할인 조건 미달 할인 자체가 안 걸림
    할인은 질문 값만 깎음 큰 쪽은 그대로 정작 비싼 대답은 못 건드림

    여기서 배운 게 있습니다. 아끼기 전에 어디서 돈이 새는지부터 정확히 재야 한다는 것. 새지도 않는 곳에 아무리 테이프를 붙여 봐야 소용없으니까요. 그래서 저는 방향을 완전히 틀었습니다.

    진짜 절감은 “AI를 옮기는 것”이었습니다

    돈이 새는 곳을 정확히 재 보니, 새로운 그림이 보였습니다. AI가 하는 일은 크게 두 종류였습니다.

    하나는 관찰입니다. “이 테마가 왜 오르지?”, “오늘 시장 복기해 줘.” 같은, 보고 설명하는 일이죠. 매매에 직접 쓰이진 않고, 제가 이해를 돕는 용도입니다. 뜯어보니 이 관찰 기능 넷을 다 합쳐도 한 달에 6~11달러 정도였습니다. 생각보다 작았죠.

    다른 하나는 판단입니다. “이 종목, 실제로 살까 말까?”를 결정하는, 봇의 진짜 두뇌 역할입니다. 정확한 액수는 아직 다 밝히지 못했지만, 큰 몫은 관찰이 아니라 이 판단 쪽에 몰려 있는 것으로 보였습니다.

    관찰은 작고, 판단이 컸습니다
    머니노트 · 정보·교육·참고용
    표로 보기
    큰돈은 판단하는 두뇌 쪽이었습니다
    항목 설명
    관찰 네 기능의 한 달 합 6~11달러 보고 설명하는 일은 작았다
    판단하는 두뇌 쪽 더 큰 몫 살지 말지 정하는 일에 몰림
    판단 쪽 정확한 액수 아직 미규명 숫자는 계속 뜯어보는 중

    그런데 정작 그 큰 판단 쪽은 함부로 건드릴 수 없었습니다. 여기서 돈을 아끼려다 판단 품질이 떨어지면 훨씬 큰 손해가 나니까요. 그래서 저는 방향을 틀었습니다 — 일단 아낄 수 있는 곳부터.

    여기서 절감의 열쇠가 나왔습니다. 관찰처럼 매매에 직접 안 쓰이는 일은, 유료 AI 대신 제 맥북에 이미 깔린 구독 AI로 옮기면 되지 않을까? 이미 매달 내고 있는 구독료라, 여기로 옮기면 추가로 나가는 현금이 0원이거든요. 유료 전화 대신 이미 있는 무전기를 쓰는 셈이죠.

    물론 이게 공짜 점심은 아닙니다. 새 요금이 안 붙을 뿐, 이미 매달 내는 구독의 사용량 한도를 나눠 쓰는 겁니다. 그리고 혹시 제 컴퓨터가 꺼져 있으면, 서버가 저렴한 예비 AI로 대신 처리하도록 안전장치도 함께 뒀습니다.

    절감은 옮기는 것이었습니다
    머니노트 · 정보·교육·참고용
    표로 보기
    진짜 절감은 AI를 옮기는 것이었습니다
    단계 내용 설명
    1단계 어디서 새나 먼저 잰다 관찰은 작고 판단이 컸다
    2단계 관찰은 내 컴퓨터로 옮긴다 이미 낸 구독료라 추가 현금 0원
    3단계 판단하는 두뇌는 그대로 둔다 여긴 품질이 돈보다 중요하다

    핵심은 마지막 칸입니다. 매매를 판단하는 두뇌는 옮기지 않았습니다. 여긴 돈을 아끼려다 판단 품질이 떨어지면 훨씬 큰 손해가 나는 곳이니까요. 아낄 곳과 아끼면 안 될 곳을 가른 것 — 그게 이번 절감의 진짜 알맹이였습니다.

    정리 — 비용은 “쓴 만큼”에서 샜습니다

    • 봇의 한 달 비용은 서버(고정비)·AI(변동비)·데이터(대부분 무료) 세 덩어리였습니다.
    • 제가 겁냈던 서버는 컴퓨터 한 대의 조용한 고정비로 끝났습니다.
    • 정작 슬금슬금 커진 건 AI에게 말을 거는 값이었고, 뜯어보니 대답(출력)이 질문(입력)보다 5배 비쌌습니다.
    • 아낀다고 붙인 재사용 할인은 헛다리(0원 절감) 였습니다. 안 새는 곳에 테이프를 붙인 셈이죠.
    • 진짜 절감은 매매에 직접 안 쓰는 일만 골라 내 컴퓨터로 옮긴 것이었습니다. 판단하는 두뇌는 품질 때문에 그대로 뒀습니다.

    돌아보면 자동화 비용의 교훈은 하나였습니다 — 무서운 건 매달 똑같은 고정비가 아니라, 나도 모르게 늘어나는 변동비라는 것. 그리고 그걸 잡는 첫걸음은 아끼기 전에 어디서 새는지부터 정확히 재는 것이었습니다.

    다음 글 예고 — 봇을 믿었다가 크게 데인 날

    여기까지 오면 봇이 제법 그럴듯하게 도는 것처럼 보입니다. 하지만 저는 이 봇을 너무 믿었다가 크게 데인 적이 있습니다. 다음 편에서는 “사람이 개입해야 할 순간과, 봇에게 맡겨야 할 순간을 어떻게 갈랐는가” — 그 아슬아슬한 경계 이야기를 풀어 보겠습니다.

    여러분이 예상한 한 달 운영비는 얼마였나요? 저는 서버 값을 걱정했는데, 진짜 비싼 건 다른 데 있었습니다.

    ▶ 다음 편 예고
    봇을 믿었다가 크게 데인 날 — 사람과 봇의 경계
    어디까지 봇에게 맡기고, 어디서 사람이 끼어들어야 할까요. 그 경계에서 데인 이야기입니다.

    다음 편을 준비하고 있습니다 ✍️


    근거: StockBot_서버_구조 · AI_비용_분해 · 비용_절감_로컬이관 — 본 글은 개발·운영 과정의 경험 공유이며 투자 자문이 아닙니다.

    이 글은 특정 종목의 매수·매도를 권유하는 글이 아니라, 개인이 만든 시스템의 개발·운영 과정을 공유하는 정보·교육·참고용 글입니다. 투자 판단과 책임은 본인에게 있습니다.

  • 새벽 3시, 봇은 자기 자신을 검사합니다 — 개발기 ⑤ 사람 없이 도는 24시간

    새벽 3시, 봇은 자기 자신을 검사합니다 — 개발기 ⑤ 사람 없이 도는 24시간

    질문 하나로 시작하겠습니다. 제가 잠든 사이, 이 봇은 하루에 시장을 몇 번이나 들여다볼까요?

    한 번? 장 열릴 때 한 번, 닫힐 때 한 번? 아닙니다. 낮에는 15분마다, 밤 미국장은 20분마다 시장을 순찰합니다. 그리고 새벽 3시엔 더 이상한 일을 합니다 — 자기 자신을 검사합니다.

    지난 개발기④에서는 “주문은 됐는데 봇은 실패라 우겼다”는 배관 사고를 다뤘습니다. 오늘은 한 걸음 물러서서, 사람이 아무도 없는 24시간 동안 이 시스템이 대체 뭘 하고 있는지 시계로 펼쳐 보겠습니다.

    밤에도 켜져 있는 서버실
    Photo: panumas nikhomkhai / Pexels
    봇이 하루에 시장을 보는 리듬
    머니노트 · 정보·교육·참고용
    표로 보기
    사람은 자는데, 봇은 쉬지 않습니다
    항목 설명
    낮 국내장 순찰 간격 15분 장이 열린 동안 계속
    밤 미국장 순찰 간격 20분 밤 10시부터 새벽까지
    새벽 자기점검 범위 5영역 서버·기능·매매까지 스스로

    자동매매의 진짜 질문은 “매매”가 아니었습니다

    처음엔 저도 자동매매의 핵심이 “언제 사고 언제 파느냐”라고 생각했습니다. 그 규칙만 잘 짜면 끝인 줄 알았죠.

    그런데 막상 사람 없이 돌려 놓고 보니, 훨씬 더 골치 아픈 질문이 있었습니다. “내가 자거나 딴 일을 하는 사이에, 뭔가 조용히 어긋나면 어떻게 알아채지?”

    자동화는 흔히 “한 번 켜 두면 알아서 도는 것”이라고 생각합니다. 절반만 맞습니다. 알아서 돌긴 하는데, 틀린 채로도 알아서 잘 도는 척을 합니다. 이게 오늘 이야기의 출발점입니다.

    봇의 하루를 시계로 펼치면

    먼저 하루 전체를 펼쳐 보겠습니다. 핵심은 아무 때나 움직이지 않는다는 겁니다. 할 일마다 정해진 시각이 있고, 그 시각이 되면 알아서 깨어납니다.

    봇의 하루 24시간
    머니노트 · 정보·교육·참고용
    표로 보기
    봇의 하루를 시계로 펼치면
    단계 내용 설명
    1단계 새벽 2~3시 스스로 5가지를 점검하고 휴대폰으로 보고
    2단계 아침 9시 반 장 초반에 매매용 데이터를 맞춤
    3단계 낮 장중 15분마다 국내 시장을 순찰
    4단계 밤 10시~새벽 20분마다 미국 시장을 순찰
    5단계 다시 새벽 하루를 닫고 점검부터 다시 시작

    시계 방향으로 한 바퀴를 돌면 이렇습니다.

    • 아침 장 초반(9시 반) — 매매에 쓸 데이터를 한 번 맞춥니다. 낡은 값으로 하루를 시작하지 않도록요.
    • 낮 장중 — 장이 열려 있는 동안 15분마다 시장을 순찰합니다. 가지고 있는 종목 가격을 확인하고, 손절선에 닿았는지·정리할 때가 됐는지를 살핍니다.
    • 밤 10시~새벽 — 이번엔 미국장 차례입니다. 20분마다 같은 순찰을 돕니다. 한국이 자는 시간에 미국이 열려 있으니까요.
    • 새벽 — 그리고 아무도 없는 새벽에, 봇은 하루를 닫고 자기 점검부터 다시 시작합니다.

    여기서 궁금해지는 게 있습니다. 왜 굳이 15분, 20분마다일까요? 그냥 실시간으로 계속 보면 안 될까요?

    왜 “계속”이 아니라 “15분마다”일까요

    계속 들여다보고 싶은 마음은 굴뚝같습니다. 하지만 매번 시장 데이터를 불러오는 데는 시간도, 비용도 듭니다. 1초마다 전 종목을 확인하면 정확하겠지만, 봇이 데이터를 부르느라 정작 중요한 순간에 느려지는 웃픈 상황이 벌어집니다.

    그래서 “너무 자주도, 너무 드물게도 아닌” 간격을 찾은 게 낮 15분·밤 20분입니다. 손절이나 정리 매도처럼 놓치면 안 되는 일을 제때 살펴볼 만큼은 촘촘하고, 시스템이 지치지 않을 만큼은 여유 있는 간격입니다.

    간격은 왜 15분일까
    머니노트 · 정보·교육·참고용
    표로 보기
    너무 자주도, 너무 드물게도 아닌 간격
    항목 설명
    1초마다 전 종목 확인 너무 자주 느려지고 비용만 폭증
    한참 만에 한 번 너무 뜸하게 급한 변화를 놓침
    낮 15분·밤 20분 딱 좋게 놓칠 것 없이 여유 있게

    한 가지 더. 순찰과는 별개로, 아침에 데이터를 맞추는 작업에는 놓쳐도 따라잡는 장치를 뒀습니다. 이 작업이 서버 재시작 같은 이유로 제때 못 돌면, 그냥 건너뛰지 않고 한 시간 안에 다시 시도합니다. “한 번 놓쳤으니 다음 날 보자”가 아니라, 그 자리에서 만회하는 거죠.

    그런데 바로 이 대목에서, 자동화의 가장 무서운 함정이 숨어 있었습니다.

    조용히 고장 나면, 아무도 모릅니다

    조용히 고장 나는 함정
    머니노트 · 정보·교육·참고용
    표로 보기
    자동화의 진짜 함정은 조용한 고장입니다
    단계 내용 설명
    1단계 어딘가 조용히 굳음 겉은 도는데 속은 낡은 채로
    2단계 아무도 모른 채 방치 봇은 멀쩡한 척 계속 돎
    3단계 한참 뒤에야 드러남 뒤늦게 점검하다 발견

    사람이 직접 매매하면, 뭔가 이상할 때 바로 눈에 띕니다. 화면이 멈추거나, 숫자가 안 맞으면 “어? 이상한데?” 하게 되죠.

    자동 시스템은 다릅니다. 겉으론 매일 멀쩡하게 도는데, 속은 낡은 채로 굳어 있을 수 있습니다. 그래서 겉으로는 아무 문제 없어 보이죠. 정작 사고는 “고장” 자체가 아니라, 그 고장을 아무도 눈치채지 못하는 것이었습니다.

    말로만 하면 와닿지 않으니, 제가 실제로 겪은 두 가지를 보여드리겠습니다. 둘 다 한참 뒤에야 드러났고, 그전까지는 어떤 경고도 없었습니다.

    겉은 멀쩡, 속은 굳어 있던 것들
    머니노트 · 정보·교육·참고용
    표로 보기
    겉은 멀쩡, 속은 굳어 있던 것들
    항목 설명
    종목 명단이 안 바뀐 기간 3주 매일 사진은 찍는데 원본이 그대로
    새 매수가 멈춘 채 방치된 기간 한 달+ 점검마저 못 알아챔
    점검이 넘겨버린 함정 신호 0건 멈춤을 정상으로 착각
    • 종목 명단이 3주째 그대로였습니다. 매일 새벽, 시스템은 명단 사진을 꼬박꼬박 찍고 있었습니다. 그래서 겉으론 완벽히 정상이었죠. 그런데 정작 그 명단을 새로 만드는 작업이 스케줄에 아예 빠져 있어서, 원본은 3주 전 값 그대로 낡아가고 있었습니다. “매일 도는 것”과 “제대로 새로 만드는 것”은 다른 문제였습니다.
    • 새로 사는 게 한 달 넘게 멈춰 있었습니다. 위험을 감지하면 새 매수를 잠그는 안전장치(개발기②·에서 다룬 서킷 브레이커)가, 풀려야 할 때 안 풀린 채 굳어 있었습니다. 더 서늘한 건 — 매일 도는 자기점검조차 이걸 한 번도 못 잡았다는 겁니다. “거래 0건”을 “이상 없음”이 아니라 “확인할 게 없음”으로 슬쩍 넘겨버렸거든요.

    둘 다 매매 규칙이 틀린 게 아닙니다. “멈춰 있다는 사실 자체를 아무도 몰랐던 것”이 문제였습니다. 그래서 저는 원칙을 하나 새겼습니다 — “0건은 정상이 아니라, 아직 확인 못 한 것이다.” 조용한 0이야말로 가장 의심해야 할 숫자였습니다.

    그래서 봇이 봇을 검사하게 했습니다

    해결책은 단순했습니다. 사람이 매일 아침 챙기던 점검표를 기계에게 넘긴 겁니다.

    이제 매일 새벽, 정해진 시각이 되면 봇은 매매를 멈추고 자기 자신을 다섯 영역으로 나눠 훑습니다. 그리고 이상이 있든 없든 결과를 제 휴대폰(메신저)으로 보냅니다. 사람이 안 봐도 알 수 있게요.

    봇이 봇을 점검한다
    머니노트 · 정보·교육·참고용
    표로 보기
    그래서 봇이 봇을 검사하게 했습니다
    단계 내용 설명
    1단계 서버 살아 있고 응답하나
    2단계 기능 수집·계산이 제대로 도나
    3단계 에이전트 판단 도우미들이 정상인가
    4단계 매매 주문·정리가 기록과 맞나
    5단계 휴대폰으로 보고 이상 있으면 즉시 알림

    다섯 영역은 이렇습니다.

    • 서버 — 컴퓨터가 살아 있고 제대로 응답하나.
    • 기능 — 데이터 수집과 계산이 빠짐없이 돌고 있나.
    • 에이전트 — 판단을 돕는 여러 도우미(개발기②의 다섯 전문가 같은)가 정상인가.
    • 매매 — 실제 주문과 정리 기록이 장부와 어긋나지 않나.
    • 인사이트 — 시장에 새로 눈여겨볼 게 없나.

    핵심은 마지막입니다. 문제가 있을 때만 저를 부른다는 것. 평소엔 “이상 없음” 한 줄이면 됩니다. 사람이 24시간 감시탑에 앉아 있는 대신, 봇이 알아서 감시탑을 돌고 뭔가 이상할 때만 알람을 울리는 구조로 바꾼 거죠.

    물론 이 점검도 처음부터 완벽하진 않았습니다. 방금 본 “한 달째 조용한 0” 같은 건 점검마저 놓쳤고, 그 뒤로 “0도 의심하라”는 규칙을 점검에 새로 심었습니다. 감시망은 한 번 짜고 끝이 아니라, 놓친 걸 발견할 때마다 계속 촘촘해집니다.

    순찰이 곧 완벽은 아닙니다

    여기서 오해를 하나 꼭 풀어야 합니다. “15분마다 순찰한다”는 건 봐야 할 걸 제때 본다는 뜻이지, 본 대로 늘 완벽히 실행된다는 뜻은 아닙니다.

    순찰이 아무리 촘촘해도, 정작 “팔아라”는 신호가 실제 주문으로 이어지는 마지막 배관이 막혀 있으면 소용이 없습니다. 저는 실제로 그 마지막 배관에서 넘어진 적이 있습니다 — 봇이 팔라고 판단했는데 정작 주문은 안 나가던 문제였죠. 그 부끄러운 이야기는 개발기④에 자세히 적어 두었습니다.

    그래서 저는 “잘 돌고 있다”는 말을 이제 함부로 안 씁니다. 잘 도는 것처럼 보이는 것정말 잘 도는 것은 다르니까요. 그 둘을 갈라주는 게 바로 이 새벽 점검입니다.

    정리 — 자동화의 절반은 “감시”였습니다

    • 이 봇은 낮 15분·밤 20분마다 시장을 순찰하고, 새벽엔 자기 자신을 다섯 영역으로 점검합니다.
    • 자동매매의 어려움은 “언제 사고 파느냐”만이 아니라, 사람이 없을 때 조용히 어긋나는 걸 어떻게 알아채느냐였습니다.
    • 실제로 종목 명단이 3주째 안 바뀌거나, 새 매수가 한 달 넘게 멈춘 채 방치되는 일이 아무 경고 없이 벌어졌습니다.
    • 그래서 점검표를 기계에게 넘기고, 이상할 때만 휴대폰으로 부르게 했습니다.
    • 다만 순찰이 곧 완벽한 실행은 아닙니다. 그 경계에서 넘어진 이야기는 개발기④에 있습니다.

    돌아보면 자동화는 “손을 떼는 것”이 아니라 “손을 떼도 되도록 감시를 심어 두는 것”에 더 가까웠습니다. 사람이 자는 새벽에도, 봇이 봇을 지켜보게 하는 것 — 그게 24시간을 사람 없이 버티는 진짜 비결이었습니다.

    다음 글 예고 — 이 봇, 한 달에 얼마가 들까요?

    여기까지 오면 자연스레 드는 질문이 있습니다. “이걸 24시간 돌리는 데 돈은 얼마나 드는데?” 서버 비용, AI에게 물어보는 비용, 데이터 값까지 — 자동매매 봇의 한 달 운영비를 솔직하게 까 보겠습니다. 생각보다 비싼 것도, 의외로 싼 것도 있었습니다.

    여러분은 잠든 사이에 돌아가는 것을 어디까지 믿으시나요? 저는 아직도 아침마다 로그부터 엽니다.

    ▶ 다음 편 예고
    이 봇, 한 달에 얼마가 들까요? — 자동매매 봇의 진짜 운영비
    서버·AI·데이터 값까지, 24시간 봇을 굴리는 한 달 비용을 솔직하게 까 봅니다.

    다음 편을 준비하고 있습니다 ✍️


    근거: StockBot_개발_개요 · 자동매매_시스템이란 · 자동화_운영_파이프라인 — 본 글은 개발·운영 과정의 경험 공유이며 투자 자문이 아닙니다.

    이 글은 특정 종목의 매수·매도를 권유하는 글이 아니라, 개인이 만든 시스템의 개발·운영 과정을 공유하는 정보·교육·참고용 글입니다. 투자 판단과 책임은 본인에게 있습니다.

  • 주문은 됐는데 봇은 ‘실패’라 우겼다 — 개발기 ④ 배관을 고치고, 안전장치를 다시 배우다

    주문은 됐는데 봇은 ‘실패’라 우겼다 — 개발기 ④ 배관을 고치고, 안전장치를 다시 배우다

    첫 글에서 왜 이 시스템을 만들기 시작했는지 이야기했습니다. 오늘은 실제로 굴려보니 어디가 새고 있었는지, 그리고 제가 “안전장치”라고 믿었던 것들이 사실은 제 생각과 달랐다는 것을 데이터로 알게 된 이야기를 풀어보겠습니다.

    낡은 배관을 고치는 손
    Photo: Anıl Karakaya / Pexels

    배관 ① 주문은 됐는데, 봇은 “실패”라고 우겼다

    가장 골치 아팠던 배관부터 말씀드리겠습니다. 이건 눈에도 잘 안 보였습니다.

    봇이 증권사에 “이 종목 사줘”라고 주문을 보냅니다. 증권사는 실제로 체결(매매 성사)을 해줍니다. 그런데 “다 됐어요”라는 확인 답장이 정해진 시간(10초) 안에 오지 않았습니다. 그러자 봇은 성급하게 단정합니다. “답이 없네. 주문 실패했나 보다.”

    나중에 증권사 계좌를 직접 열어보고 알았습니다. 주식은 이미 사져 있었습니다. 즉 이건 “체결 실패”가 아니라 “체결 확인 실패”였습니다. 택배를 이미 받아놓고 “안 왔다”고 우기는 것과 같습니다.

    여기서부터가 정직하게 말씀드릴 부분입니다. 최초 버전에서 저는 “실제로 산 가격을 다시 조회해 기준을 바로잡게 고쳤다”고 썼는데, 사실이 아닙니다. 실제로 넣은 조치는 훨씬 소박합니다.

    • 답장이 없을 때 잔고를 조회해 “혹시 이미 샀나?”를 확인하고,
    • 샀다면 그 종목을 격리해서 똑같은 걸 또 사는 것만 막고,
    • 저에게 알림을 보냅니다.

    그게 전부입니다. 손절선을 다시 긋거나 장부에 자동으로 등록하는 일은 하지 않습니다. 그건 “체결 생명주기 일원화”라는 훨씬 큰 공사인데, 아직 보류 중입니다.

    왜 안 했냐면 — 어설프게 자동으로 고치는 게 더 위험하기 때문입니다. 봇이 잘못 판단해 장부를 자동으로 주무르기 시작하면, 틀렸을 때 사람이 손쓸 수 없습니다. 그래서 지금은 “봇은 멈추고 사람을 부른다”까지만 해뒀습니다. 자동화에서 제일 어려운 건 기능을 넣는 게 아니라 어디까지만 자동으로 할지 선을 긋는 일이었습니다.

    배관 ② 값이 밀리는 순간엔, 주문을 취소한다

    두 번째 배관은 슬리피지입니다. 내가 사려던 가격과 실제 체결 가격 사이의 틈이죠.

    그래서 급락 가드를 덧댔습니다. 봇은 전날 “이거 사자”고 정해두고 다음 날 아침 실제로 주문을 넣는데, 그 사이에 가격이 결정 시점보다 8% 넘게 빠져 있으면 주문을 아예 취소합니다. 불이 붙은 프라이팬에 손을 넣지 않는 것과 같은 상식입니다. (최초 버전에는 “잠깐 멈춘다”고 썼지만 정확히는 취소이고, 이 장치는 제 시스템의 일부 트랙에만 적용돼 있습니다.)

    배관 ③ 멈춘 계좌 — 사실은 터지고 나서 알았습니다

    세 번째는 어이없지만 치명적이던 배관입니다. 모의투자 계좌가 3개월 만기로 조용히 끝나자, 어느 날부터 모든 주문이 거부됐습니다. 봇은 벽에 대고 소리치고 있었습니다.

    최초 버전에서 저는 “매일 장 열리기 전 건강검진을 붙였다”고 썼습니다. 이것도 사실이 아닙니다. 실제로는 이렇습니다.

    • 만기를 미리 알아챈 게 아니라, 주문 6건이 전부 거부된 기록을 보고 나서야 알았습니다. 즉 사후 발견이었습니다.
    • 지금 돌아가는 점검 장치는 장이 끝난 뒤(오후 4시) 계좌와 장부를 대조해 어긋나면 알려주는 것이고, 읽고 알리기만 합니다.
    • 다음 만기(10월 초)를 대비한 알림은 아직 안 만들었습니다. 할 일 목록에만 있습니다.

    배관은 터지고 나서 고치는 것보다 터지기 전에 점검하는 게 싸다 — 맞는 말인데, 저는 아직 그걸 못 하고 있습니다.

    이제 진짜 주인공, 안전장치

    저는 개발 내내 하나의 원칙을 붙들고 있었습니다. “많이 버는 것보다, 크게 잃지 않는 것이 먼저다.” 그리고 그 원칙을 지켜주는 세 가지 장치를 자랑스럽게 여겼습니다.

    그런데 이 글을 쓰려고 기록을 다시 뒤지다가, 셋 다 제가 잘못 알고 있었다는 걸 알았습니다. 하나는 작동 방식을 반대로 알고 있었고, 하나는 효과가 없다는 게 데이터로 증명돼 있었고, 하나는 아예 작동하지 않고 있었습니다.

    안전장치 ① 손절 — 여기까지 떨어지면 판다

    손절은 “여기까지 떨어지면 감정 없이 판다”는 규칙입니다. 왜 중요할까요? 손실과 회복이 대칭이 아니기 때문입니다.

    반토막의 산수
    머니노트 · 정보·교육·참고용
    표로 보기
    반토막이 나면, 두 배로 올라야 겨우 본전
    항목 설명
    반토막 손실 원금이 절반으로 줄면 -50%
    본전까지 회복 다시 원금으로 돌아오려면 100%

    원금이 반토막(-50%) 나면 본전으로 돌아오는 데 두 배(+100%)가 필요합니다. -20%만 잃어도 +25%를 벌어야 제자리입니다. 잃는 건 쉽지만 되찾는 건 훨씬 어렵다 — 이 산수가 손절이 필요한 이유의 전부입니다. 그래서 여기엔 AI를 절대 넣지 않았습니다. 손절이 “이번만 봐줄까?” 하고 변덕을 부리면 그건 이미 안전장치가 아니니까요.

    여기까지가 원리입니다. 그런데 원리가 맞다는 것과, 그게 실제로 작동한다는 건 완전히 다른 이야기였습니다.

    이 글을 정리하다가 바로 어제 확인한 사실입니다. 제 모의투자 트랙에서 손절은 사실상 한 번도 걸리지 않고 있었습니다. 이유가 셋입니다.

    • 파는 주문이 전부 거부되고 있었습니다. 증권사엔 “주식 가격은 이 단위로만 적어라”는 호가 단위 규칙이 있는데, 제 봇이 그걸 안 맞췄습니다. 기록을 세어보니 매도 주문 26건 중 성공 0건. 사는 주문은 멀쩡히 나갔습니다. 그래서 더 못 알아챘습니다.
    • 저는 “증권사에 손절 주문을 미리 걸어뒀으니 괜찮다”고 믿고 자체 감시를 껐습니다. 그런데 그 손절 주문이 위 문제로 애초에 등록된 적이 없었습니다. 믿는 구석이 비어 있었던 겁니다.
    • 설계상 손절은 물량의 20%에만 걸려 있었습니다. 나머지 80%는 “이 가격까지 오르면 팔자”는 익절 예약이라, 폭락하면 팔리지 않습니다. 즉 80%는 손절이 없었습니다.
    손절은 있다고 믿었을 뿐, 사실은 비어 있었다
    머니노트 · 정보·교육·참고용
    표로 보기
    손절이 있다고 믿었지만, 사실은 없었습니다
    항목 설명
    성공한 매도 주문 0건 26건이 전부 거부됐다
    손절 걸린 물량 20%만 나머지 80%는 무방비
    등록된 손절 주문 0건 믿고 자체 감시까지 껐다

    정리하면 — 저는 “손절이 있는 전략”을 검증하고 있다고 믿었지만, 사실은 손절이 없는 전략을 검증하고 있었습니다.

    안전장치는 달아두는 게 아니라, 진짜 작동하는지 확인해야 비로소 안전장치입니다. 그 확인을 안 하면, 있다고 믿는 것만으로 오히려 더 위험해집니다 — 저처럼 자체 감시까지 꺼버리게 되니까요.

    안전장치 ② 서킷브레이커 — “전원을 내린다”가 아니었습니다

    서킷브레이커는 전기가 위험할 때 내려가는 두꺼비집에서 온 말입니다. 최초 버전에서 저는 “연달아 잃으면 그날은 매매를 멈추고 전원을 내린다”고 썼습니다. 이건 반대로 쓴 것입니다.

    정확히는 이렇습니다. 연달아 세 번 잃거나 하루 손실이 -3%를 넘으면, 봇은 “새로 사는 것”만 멈춥니다. 이미 들고 있는 것을 파는 일은 계속합니다.

    왜 그럴까요? 이게 이 글에서 제일 중요한 대목입니다. 손절과 익절은 자본을 지키는 장치입니다. 그런데 서킷이 켜졌다는 건 지금이 위험 구간이라는 뜻입니다. 위험할수록 파는 기능은 필요합니다. 여기서 파는 것까지 막아버리면 어떻게 될까요?

    실제로 그 사고가 있었습니다. 예전 버전에서 서킷이 켜지자 청산 점검까지 통째로 멈췄습니다. 그때 봇은 종목 12개를 들고 있었고 대부분 평가익 상태였는데, 익절 조건이 왔는데도 팔지 못했습니다. 게다가 더 고약한 건 — 파는 걸 막으면 이익 나는 거래가 영영 생기지 않고, 그러면 연속 손실 기록이 영원히 초기화되지 않아 서킷이 영구히 안 풀립니다. 안전장치가 스스로를 가둬버린 겁니다.

    그래서 지금은 순서가 이렇습니다. ① 팔 것부터 판다 → ② 그 결과로 서킷을 다시 판단한다 → ③ 서킷이 꺼져 있을 때만 새로 산다. 그리고 서킷은 세 가지 경우에 자동으로 풀립니다 — 다음 날이 되거나, 청산 중에 이익 거래가 하나라도 나오거나, 들고 있는 게 하나도 없거나.

    서킷이 켜져도 파는 것부터 한다
    머니노트 · 정보·교육·참고용
    표로 보기
    서킷이 켜지면, 파는 것부터 합니다
    단계 내용 설명
    1단계 먼저 판다 들고 있던 것부터 청산
    2단계 서킷 재판단 판 결과로 다시 계산
    3단계 꺼지면 산다 풀렸을 때만 신규 매수

    “안전장치는 무조건 다 잠그면 된다”가 아니라, 무엇을 잠그고 무엇을 열어둘지가 안전장치의 본체였습니다.

    안전장치 ③ 리스크 필터 — 제가 완전히 틀렸습니다

    마지막이 가장 이야기하고 싶은 부분입니다. 그리고 가장 크게 틀린 부분입니다.

    안전망
    Photo: Dhruv Pulipaka / Pexels

    리스크 필터는 오를 종목을 찾는 게 아니라, 크게 떨어질 종목을 미리 걸러내는 장치입니다. 상방이 아니라 하방을 막는 보험이라는 발상 자체는 지금도 맞다고 생각합니다.

    문제는 “그래서 이 필터가 실제로 작동했는가”였습니다. 최초 버전에서 저는 “경고를 무시하고 들어갔던 사례를 되짚어 보니 경고가 켜졌던 쪽이 훨씬 더 크게 무너져 있었다”고 썼습니다. 데이터로 확인해 보니 정반대였습니다.

    제가 그렇게 믿은 근거는 실전 24건이었습니다. 24건. 그 안에서 경고가 켜진 쪽이 유독 나빠 보였고, 저는 “역시 필터가 옳았다”고 결론 내렸습니다. 그런데 이 필터는 AI 판단이 아니라 정해진 규칙으로 돌아가는 장치라, 과거 4년치에 그대로 다시 적용해볼 수 있었습니다. 종목 1,416개, 판정 49,048건을 재현했습니다.

    결과는 이랬습니다.

    • 경고(WARN)가 켜진 쪽의 평균 성과가 오히려 더 좋았습니다. 경고 없음 +3.97% vs 경고 켜짐 +5.65%.
    • 재무가 부실하다는 경고는 특히 반대였습니다 — 오히려 반등하는 경향(+6.05%)이 나왔습니다.
    • 딱 하나만 진짜였습니다: 변동성. 주가가 심하게 출렁이는 종목(ATR이 높은 종목)만 실제로 더 깊게 무너졌습니다.
    경고가 켜진 쪽이 오히려 더 올랐다
    머니노트 · 정보·교육·참고용
    표로 보기
    경고가 켜진 쪽이 오히려 더 올랐습니다
    항목 설명
    경고 없음 필터가 조용한 종목 3.97
    경고 켜짐 위험하다던 종목 5.65
    재무 부실 경고 가장 반대였던 신호 6.05

    24건은 우연이었습니다. 표본이 적으면 아무 규칙이나 그럴듯해 보입니다. 만약 제가 그 24건만 믿고 “경고 뜨면 진입 금지”를 켰다면, 예측력이 전혀 없는 필터 때문에 진입 기회의 절반 가까이를 헛되이 버릴 뻔했습니다. 그래서 그 계획은 폐기했습니다.

    지금 남은 건 “심하게 출렁이는 종목은 피한다” 하나뿐입니다. 화려하지 않지만, 이건 4년치가 뒷받침합니다.

    일반 투자자에게 드리는 참고

    투자 시스템이나 전략을 볼 때 “얼마나 벌었나”에만 눈이 가신다면 오늘 이야기를 떠올려 주세요. 정작 중요한 건 두 가지입니다.

    첫째, “크게 잃을 때 무엇이 나를 멈춰 세우는가.” 둘째 — 오늘 제가 배운 것 — “그 장치가 정말 작동한다는 증거가 몇 건짜리인가.” 스무 몇 건을 보고 “이 규칙은 통한다”고 말하는 건 저처럼 틀리기 쉽습니다. 표본이 적으면 착각이 확신처럼 보입니다. 다시 말씀드리지만 이 글은 특정 종목 이야기가 아니라 시스템을 만드는 사람의 참고용 경험담입니다.

    정리 — 고친 것, 아직 못 고친 것, 잘못 알고 있던 것

    • 배관 ① 체결 “확인” 실패 → 이중 매수만 막고 사람을 부른다. 자동 복구는 위험해서 보류 중
    • 배관 ② 급락 → 결정가보다 8% 넘게 빠지면 주문 취소(일부 트랙 적용)
    • 배관 ③ 만료된 계좌 → 사후에 발견했다. 장 열리기 전 점검은 아직 없다
    • 안전장치 ① 손절 → 원리는 맞다. 그런데 실제로는 걸리지도 않고 있었다(매도 주문 전량 거부·물량 80%엔 손절 없음)
    • 안전장치 ② 서킷브레이커 → “새로 사는 것”만 멈춘다. 파는 건 계속한다
    • 안전장치 ③ 리스크 필터 → 경고 대부분은 예측력이 없었다. 진짜는 변동성 하나

    이 글의 최초 버전에서 저는 “배관을 고쳤고 안전장치가 작동했다”고 썼습니다. 다시 확인해 보니 배관은 절반만 고쳤고, 안전장치는 셋 다 제 생각과 달랐습니다.

    그래서 이 글의 결론은 처음에 쓰려던 것과 완전히 달라졌습니다. 자동매매의 진짜 실력은 안전장치를 많이 다는 데서 나오지 않습니다. 그 장치가 정말 작동하는지 의심하고, 기록을 열어 확인하는 데서 나옵니다. 저는 그걸 안 해서 “있다고 믿는 안전장치”에 기대어 몇 달을 보냈습니다. 없는 것보다 나쁜 건, 있다고 믿는 것이었습니다.

    다음 글 예고 — 사람 없이 24시간, 봇의 하루

    배관을 손보고 안전장치를 다시 배웠으니, 이제 이 모든 걸 제가 잠든 사이에도 알아서 돌아가게 만들 차례였습니다. 다음 글에서는 새벽에 데이터를 모으고, 아침에 판단하고, 장중에 매매하고, 밤에 저에게 보고하는 봇의 24시간 하루를 풀어보겠습니다.

    여러분이 믿고 있는 안전장치는 실제로 작동한 기록이 있나요? 저는 열어 보고 나서야 알았습니다.

    ▶ 다음 편 예고
    사람 없이 24시간 — 봇의 하루
    새벽에 데이터를 모으고, 아침에 판단하고, 장중에 매매하고, 밤에 보고하는 봇의 하루.

    다음 편을 준비하고 있습니다 ✍️

    이 글은 특정 종목의 매수·매도를 권유하는 글이 아니라, 개인이 만든 시스템의 개발 과정을 솔직하게 공유하는 정보·교육·참고용 글입니다. 투자 판단과 책임은 본인에게 있습니다.


    근거: StockBot_개발_개요 · 슬리피지 · 손절 · 서킷브레이커 · 리스크_관리 — 본 글은 개발 과정의 경험 공유이며 투자 자문이 아닙니다.

  • 백테스트에선 만점, 실전은 낙제 — 개발기 ③ 제가 지목한 범인 3명은 전부 무죄였습니다

    백테스트에선 만점, 실전은 낙제 — 개발기 ③ 제가 지목한 범인 3명은 전부 무죄였습니다

    첫 글에 이어, 오늘은 부끄러운 이야기입니다. 그런데 이 글을 정정하면서 부끄러움이 두 배가 됐습니다. 실전이 안 됐던 것도 부끄러운데, 왜 안 됐는지에 대한 제 설명까지 틀렸기 때문입니다.

    모의고사는 좋았고, 실전은 나빴습니다

    백테스트는 과거 데이터로 내 전략을 미리 돌려보는 모의고사입니다. 제 전략의 모의고사 성적표는 아주 좋았습니다. 그런데 실제 시세로 돌리는 모의투자(진짜 시세, 가상의 돈)를 켜자 결과는 정반대였습니다.

    여기까지는 사실입니다. 문제는 그다음입니다. 저는 범인 세 명을 자신 있게 지목했습니다. 그리고 그게 전부 틀렸습니다.

    지목한 범인 3명의 알리바이
    머니노트 · 정보·교육·참고용
    표로 보기
    제가 지목한 범인 3명, 전부 알리바이가 있었습니다
    항목 설명
    데이터 창고 불일치 다른 전략의 진단이었음
    과최적화 그럴듯해서 지목·확인 안 함
    현실의 배관 방향이 반대·시점 안 맞음

    무죄 ① “데이터 창고가 달랐다” — 다른 전략 얘기였습니다

    최초 버전에서 저는 이렇게 썼습니다. 백테스트는 A 창고 주가로 채점하고 실전은 B 창고 주가로 매매해서, 같은 날 같은 종목인데 숫자가 미세하게 달라 신호가 어긋났다고요.

    이 현상 자체는 실재합니다. 다만 다른 전략에서 벌어진 일이었습니다. 제 시스템엔 성격이 다른 전략이 여럿 있는데, 창고 불일치가 진짜 문제였던 건 그중 하나였고, 이 글이 다룬 전략은 아니었습니다.

    더 결정적인 건, 나중에 직접 검사를 해봤다는 사실입니다. 이 전략의 국내 주식 거래 82건을 두 창고 숫자로 각각 다시 돌려 신호가 뒤집히는지 봤습니다. 결과는 82건 중 뒤집힌 것 0건. 창고를 바꿔도 판단이 그대로였습니다. 명백한 알리바이입니다.

    창고 검사 결과
    머니노트 · 정보·교육·참고용
    표로 보기
    창고를 바꿔도 판단은 그대로였습니다
    항목 설명
    판단 그대로 82건 82
    신호 뒤집힘 0건 0

    왜 이런 차이가 났냐면, 이 전략은 신호를 넉넉한 폭으로 잡습니다. 몇 십 원 차이로는 결론이 안 바뀌게 설계돼 있었던 거죠. 저는 옆 전략의 진단서를 이 전략의 진단서인 양 가져다 썼습니다.

    무죄 ② “과거를 외운 규칙이었다” — 그럴듯해서 지목했을 뿐입니다

    두 번째로 지목한 건 과최적화입니다. 지나간 시험지 정답에만 딱 맞게 규칙을 다듬는 것이죠. 이 개념 설명은 지금도 유효합니다.

    문제는 이 전략의 부진은 그것 때문이 아니었다는 겁니다.

    기록을 다시 보니 결론이 분명히 남아 있었습니다. 이 전략의 실전 부진은 “설정값을 잘못 맞춘 문제가 아니다”라고요. 즉 규칙을 과거에 억지로 맞춰서 생긴 일이 아니었습니다.

    그런데 저는 왜 과최적화를 범인으로 지목했을까요? 그럴듯했기 때문입니다. “백테는 만점인데 실전은 낙제”라는 말을 들으면 누구나 과최적화를 떠올립니다. 저도 그 반사신경을 따랐고, 확인은 하지 않았습니다.

    가장 유력해 보이는 용의자가, 가장 확인을 안 하게 되는 용의자였습니다.

    과거 데이터와 미래
    Photo: Arturo Añez. / Pexels

    무죄 ③ “현실의 배관” — 방향이 반대이거나, 시점이 안 맞았습니다

    세 번째로 배관 문제 셋을 들었습니다. 하나씩 보겠습니다.

    • “주문이 막혀 체결이 안 됐다”반대였습니다. 주식은 이미 사졌고, 답장이 늦어서 봇이 “실패했나 보다”라고 오해한 것이었습니다. 체결 실패가 아니라 체결 확인 실패입니다. (다음 글에서 자세히)
    • “슬리피지가 수익을 갉아먹었다” → 이 전략은 정해진 기준 가격으로 사고파는 방식이라, 애초에 그 틈이 생기는 구조가 아니었습니다. 없는 범인을 지목했습니다.
    • “계좌가 만료됐다” → 만료는 사실입니다. 그런데 이 성적을 측정하고 3주쯤 지난 뒤에 일어난 일입니다. 나중에 생긴 일이 이전의 결과를 망칠 수는 없습니다.

    그럼 진범은 누구인가 — 아직도 모릅니다

    여기가 이 정정에서 제일 중요한 부분입니다. 그리고 최초 버전의 가장 큰 거짓말이기도 합니다.

    저는 진범을 모릅니다. 기록에도 모른다고 적혀 있었습니다.

    기록은 이 격차를 여러 원인이 겹친 결과로 보고 후보만 늘어놓았을 뿐, “이게 범인이다”라고 순위를 매기지 않았습니다. ①백테스트가 미래를 훔쳐본 것 ②데이터 차이 ③산 직후에 급락한 것 ④백테스트가 실전의 청산 방식을 그대로 흉내 내지 못한 것. 오히려 나중 기록은 이 중 ③(산 직후 급락)을 더 눈여겨봤고, ④는 다시 따져보니 오히려 성적을 개선하는 쪽이라 범인이 아니었습니다. 어느 하나로 딱 좁혀지지 않았다는 뜻입니다.

    그리고 기록 한가운데에 이렇게 못박혀 있었습니다 — “관찰만 할 것. 인과를 단정하지 말 것.”

    저는 그 문장을 그냥 지나쳤습니다. 그리고 범인 셋을 지목하는 글을 썼습니다.

    그래도 하나는 소개하고 싶습니다 — 미래 훔쳐보기

    후보 중 하나만 설명드리겠습니다. 확정된 범인이라서가 아니라, 투자자라면 알아둘 값어치가 있어서입니다. 어려운 말로 look-ahead(룩어헤드)라고 합니다.

    모의고사를 채점할 때, “이 날 샀어야 했나?”를 판단하면서 그 날 이후의 데이터를 슬쩍 참고하고 있었던 겁니다. 신호를 찾을 때 앞뒤 며칠을 함께 봤는데, 그 “뒤 며칠”이 당시엔 알 수 없는 미래였습니다. 회사 실적 지표도 오늘 시점의 값을 과거 전체에 적용하고 있었습니다.

    시험 중에 뒷장의 정답을 보면서 문제를 푼 셈입니다. 당연히 만점이 나옵니다. 그리고 진짜 시험엔 뒷장이 없습니다.

    백테스트가 만점이던 이유
    머니노트 · 정보·교육·참고용
    표로 보기
    백테스트가 만점이던 진짜 이유
    단계 내용 설명
    1단계 미래를 슬쩍 참고 채점하며 뒷장의 정답을 봄
    2단계 당연히 만점 시험지 위에선 완벽
    3단계 실전은 낙제 뒷장이 없으니 무너짐

    다만 다시 강조합니다 — 이것도 후보일 뿐, 범인으로 확정된 게 아닙니다. 이번엔 같은 실수를 반복하지 않겠습니다.

    그런데 여기서 더 중요한 것 — 그 숫자는 겨우 18건짜리였습니다

    마지막이 오늘 제가 가장 크게 배운 부분입니다.

    “실전 성적이 처참했다”는 그 숫자는 거래 18건에서 나온 것이었습니다. 열여덟 건.

    모든 판단의 근거가 딱 18건이었습니다
    머니노트 · 정보·교육·참고용
    표로 보기
    모든 판단의 근거가 딱 18건이었습니다
    항목 설명
    이 모든 판단의 근거 18건 실전 거래 딱 열여덟 번
    "안 됐다"를 아는 데는 충분했다 18건으로도 분명했다
    "왜 안 됐나"를 아는 데는 턱없었다 원인은 못 가린다

    오해는 마세요. 성적이 나빴던 것은 사실입니다. 열여덟 번이라도 결과가 그 정도로 처참하면 “이거 잘 안 됐다”는 건 분명히 알 수 있습니다. 문제는 그다음이었습니다. 저는 거기서 멈추지 않고 “왜 안 됐는지”까지 열여덟 건으로 단정했습니다. 범인을 셋이나 지목하고, 글까지 썼죠.

    “안 됐다”를 아는 것과 “왜 안 됐는지”를 아는 것은 전혀 다른 문제입니다. 앞은 열여덟 번으로도 보이지만, 뒤는 열여덟 번으로는 어림도 없습니다. 원인을 하나로 가려내려면 훨씬 더 많은 사례가 필요한데, 저에겐 열여덟 건밖에 없었습니다.

    기록에도 정직하게 남아 있었습니다 — 이 원인 분석은 “해석일 뿐, 인과를 단정하지 말 것”이라고요. 저는 그 단서를 무시하고 원인을 단정했습니다.

    일반 투자자에게 드리는 참고

    어디선가 “이 전략, 과거 수익률 몇백 %!” 같은 광고를 보신다면 오늘 이야기를 떠올려 주세요. 물어볼 것은 두 가지입니다.

    첫째, 그 성적은 미래를 훔쳐보지 않고 나온 건가요? 과거 데이터로 채점할 때 그 시점에 알 수 없던 정보가 섞이면, 성적표는 얼마든지 아름다워집니다. 둘째, 그거 몇 건짜리인가요? 결과가 좋아 보여도 사례가 몇 건뿐이면, 그게 실력인지 운인지 가릴 수 없습니다. 저는 열여덟 건을 두고 원인까지 단정했다가 이렇게 정정문을 쓰고 있습니다.

    백테스트 성적표는 참고 자료일 뿐, 미래의 약속이 아닙니다.

    정리 — 첫 실패가 남긴 것 (정정판)

    • 백테스트 만점 ≠ 실전 성공 — 이건 여전히 사실입니다
    • 제가 지목한 범인 3명은 전부 무죄였습니다 — 옆 전략 진단서 / 확인 없이 찍은 것 / 방향·시점 불일치
    • 진범은 아직 모릅니다. 기록은 여러 원인의 겹침으로 보고 “단정하지 말라”고 명시해 뒀습니다
    • 그리고 그 성적은 겨우 18건짜리 — 안 됐다는 건 알아도, 왜 안 됐는지 원인을 가리기엔 턱없이 부족한 표본이었습니다

    부끄러운 실패였는데, 정정하면서 더 부끄러워졌습니다. 하지만 하나는 확실히 배웠습니다. 틀린 답보다 위험한 건, 틀린 이유를 확신하는 것입니다. 다음 글에서는 이 배관들을 실제로 어떻게 손봤는지, 그리고 제가 자랑하던 안전장치 셋이 알고 보니 어땠는지를 풀어보겠습니다.

    여러분도 실패한 이유를 자신 있게 짚었다가 나중에 그 진단마저 틀렸던 경험이 있으신가요?

    ▶ 다음 편 예고
    있다고 믿었던 안전장치 — 배관을 고치고 안전장치를 다시 배우다
    주문은 됐는데 봇은 실패라 우겼습니다. 제가 자랑하던 안전장치 셋의 진짜 정체.

    다음 글 읽기 →


    근거: StockBot_개발_개요 · 백테스트 · 과최적화 · 슬리피지 — 본 글은 개발 과정의 경험 공유이며 투자 자문이 아닙니다.

    이 글은 특정 종목의 매수·매도를 권유하는 글이 아니라, 개인이 만든 시스템의 개발 과정을 솔직하게 공유하는 정보·교육·참고용 글입니다. 투자 판단과 책임은 본인에게 있습니다.

  • AI에게 매매를 안 맡기려다, 회색지대는 맡기게 된 이야기 — 개발기 ②

    AI에게 매매를 안 맡기려다, 회색지대는 맡기게 된 이야기 — 개발기 ②

    질문 하나로 시작하겠습니다. 제가 만든 자동매매 봇은, 새로 주식을 살 때 열 번 중 몇 번을 AI가 결정할까요?

    한 번? 세 번? 절반?

    정답은 열 번 중 아홉 번, 정확히는 94%입니다. 그런데 재밌는 건, 처음 이 시스템을 만들 때 제 계획은 “AI에게 매매 결정은 단 한 번도 안 맡긴다”였다는 겁니다.

    지난 글에서 “그래서 AI가 알아서 종목을 골라 매매하는 거야?”라는 질문을 예고했었죠. 오늘은 0%에서 94%로 제 마음이 어떻게 뒤집혔는지, 그 이야기입니다.

    인공지능과 데이터
    Photo: Pixabay / Pexels

    처음엔 AI를 못 믿었습니다

    시스템을 만들기 시작할 때 저는 AI에게 매매 결정을 맡길 생각이 전혀 없었습니다. 이유가 있었습니다. AI는 똑똑하지만, 돈을 맡기기엔 불안한 성격이 셋 있거든요.

    • 변덕 — 똑같은 질문을 두 번 해도 답이 조금씩 달라질 수 있습니다.
    • 거짓말(환각) — 모르는 것도 아주 그럴듯하게 지어냅니다.
    • 느림과 비용 — 한 번 물어볼 때마다 시간이 걸리고 돈도 듭니다.
    돈을 맡기기 전 알아야 할 AI의 세 가지 성격
    머니노트 · 정보·교육·참고용
    표로 보기
    돈을 맡기기 전, AI의 세 가지 성격
    항목 설명
    같은 질문, 다른 답 변덕 믿고 맡기기 불안
    모르는 걸 지어냄 환각 없는 근거로 매수?
    물어볼 때마다 돈 비용 매 순간 부를 수 없음

    사람과 대화할 땐 괜찮은 성격입니다. 하지만 내 돈을 사고파는 순간이라면 이야기가 완전히 달라집니다. “이번엔 왠지 오를 것 같아요”라고 AI가 변덕을 부리는 순간, 그건 이미 감정에 지는 사람과 똑같으니까요.

    그래서 저는 아주 분명한 선을 하나 그었습니다.

    명백한 것은 규칙에게, 애매한 것만 AI에게. 안전장치는 무조건 규칙에게.

    그런데 이 선을 긋고 실제로 시장에 돌려보니, 예상 못 한 일이 벌어졌습니다. 그 이야기를 하려면 먼저 제가 매매를 어떻게 쪼갰는지부터 봐야 합니다.

    매매를 세 칸으로 나눴습니다

    핵심은 매매를 한 덩어리로 보지 않고 세 칸으로 나눈 것입니다. 칸마다 누가 결정할지를 따로 정했습니다.

    매매를 세 칸으로 나누다
    머니노트 · 정보·교육·참고용
    표로 보기
    결정을 세 칸으로 나눴습니다
    단계 내용 설명
    1단계 초록불 조건이 충분하다
    2단계 노란불 애매하다
    3단계 빨간불 위험 신호가 있다
    • 초록불 칸 — 살 이유가 충분하고 위험 신호가 없으면, 규칙이 그냥 삽니다. AI에게 물어보지도 않습니다.
    • 빨간불 칸 — 위험 신호가 하나라도 켜지면, 규칙이 그냥 막습니다. 역시 AI 없이요.
    • 노란불 칸 — 살 이유가 좀 부족한데 위험하지도 않은, 딱 잘라 말하기 애매한 상태. 여기서만 AI가 “그래도 살까, 말까”를 판단합니다.

    제 머릿속 계획은 이랬습니다. “초록불과 빨간불이 대부분일 테고, 노란불은 어쩌다 한 번이겠지. 그러니 AI가 나설 일은 거의 없을 거야.”

    완전히 빗나갔습니다.

    그런데 노란불이 대부분이었습니다

    이게 제가 마음을 바꾼 결정적인 이유입니다.

    실제로 이 시스템이 새로 산 종목들을 세어 보니, 열에 아홉은 노란불 칸에서 나온 결정이었습니다. 초록불처럼 딱 떨어지는 경우는 생각보다 드물었습니다. 시장은 대부분 “사도 될 것 같기도 하고 아닌 것 같기도 한” 애매한 얼굴을 하고 있었거든요.

    진입 결정은 어디서 나오나
    머니노트 · 정보·교육·참고용
    표로 보기
    진입의 94%가 노란불 칸에서 나옵니다
    항목 설명
    노란불에서 결정 AI가 판단한 진입 94
    초록불에서 결정 규칙이 즉시 매수 6

    만약 제가 고집을 부려 “노란불에서는 아무것도 사지 마”라고 규칙을 짰다면, 이 시스템은 거의 아무것도 못 사는 겁쟁이가 됐을 겁니다. 반대로 “노란불이면 일단 다 사”라고 했다면 분별없는 도박꾼이 됐겠죠.

    그 사이에서 “이 노란불은 살 만하고, 저 노란불은 아니다”를 가려주는 역할 — 그게 AI에게 맞는 일이었습니다. 사람이 회의실에서 자료를 놓고 “이건 하자, 저건 넘기자”를 정하는 것과 똑같습니다.

    그런데 여기서 걱정이 하나 생깁니다. 앞에서 AI는 변덕을 부린다고 했는데, 그런 AI에게 열 번 중 아홉 번의 결정을 맡긴다니 — 불안하지 않을까요? 저도 그게 불안했습니다. 그래서 한 가지 장치를 더 뒀습니다.

    AI는 혼자가 아니라 여럿입니다

    바로 AI 하나에게 “살까 말까?”를 통째로 물어보지 않는 것입니다. 그러면 그 하나의 변덕에 휘둘리니까요.

    대신 서로 다른 다섯 명의 전문가 AI에게 각자의 눈으로 보게 했습니다.

    다섯 전문가와 한 명의 조장
    머니노트 · 정보·교육·참고용
    표로 보기
    다섯 전문가 + 한 조장
    항목 설명
    전문가 AI 5명 기술·위험·수급·거시·업종
    종합 조장 AI 1명 다섯 의견을 모아 결론
    이 팀이 나서는 곳 노란불 애매한 구간만
    • 기술 전문가 — 차트 모양과 추세를 봅니다.
    • 위험 전문가 — 이 종목이 얼마나 크게 빠질 수 있는지, 재무는 튼튼한지 봅니다.
    • 수급 전문가 — 외국인·기관이 사는지 파는지 봅니다.
    • 거시 전문가 — 시장 전체 분위기가 위험하진 않은지 봅니다.
    • 업종 전문가 — 이 종목이 속한 분야가 순풍인지 역풍인지 봅니다.

    이 다섯이 각자 “괜찮다 / 조심 / 안 된다”를 내면, 조장 역할의 AI가 그걸 모아 최종적으로 노란불 종목의 진입 여부를 정합니다. 한 명의 감이 아니라 여러 관점을 모은 판단이라는 게 핵심입니다.

    그래도 절대 안 맡긴 곳 — 안전장치

    여기까지 읽으면 “결국 AI에게 다 맡긴 거 아냐?”라고 생각하실 수 있습니다. 아닙니다. 딱 한 곳, 안전장치는 여전히 AI를 완전히 배제했습니다.

    • 손절 — 손실이 정해진 선에 닿으면 무조건 팝니다.
    • 서킷 브레이커 — 연달아 잃으면 새로 사는 것을 멈춥니다.

    이 두 가지에는 AI가 한 발짝도 못 들어옵니다. 이유는 지난 글에서 말한 것과 같습니다 — 안전장치가 상황을 봐가며 변덕을 부리면, 그건 이미 안전장치가 아니기 때문입니다.

    “손실이 이 선에 닿으면 무조건 판다”는 원칙은, 사람이라면 흔들릴 바로 그 순간에도 예외 없이 지켜져야 의미가 있습니다. 여기에 “이번엔 좀 봐줄까?” 하고 판단하는 AI를 넣으면, 결국 사람이 손절 못 하는 실수를 기계가 반복하게 됩니다.

    안전장치엔 AI가 못 들어옵니다
    머니노트 · 정보·교육·참고용
    표로 보기
    안전장치는 한 방향으로만 흐릅니다
    단계 내용 설명
    1단계 손실이 선에 닿음 미리 정한 손절 가격에 도달
    2단계 판단은 건너뜀 봐주는 칸이 아예 없음
    3단계 무조건 매도 규칙이 즉시 실행

    정리 — 마음을 바꾼 이유

    • 처음엔 AI에게 매매 결정을 안 맡기려 했습니다. 변덕·환각·비용 때문에요.
    • 그런데 실제 시장은 대부분 애매한 노란불이었고, 여기서 AI를 빼면 시스템이 아무것도 못 샀습니다.
    • 그래서 명백한 초록불·빨간불은 규칙에게, 애매한 노란불만 AI에게 맡겼습니다. 그것도 한 명이 아니라 다섯 전문가 + 조장이 함께요.
    • 안전장치(손절·서킷)만은 끝까지 AI를 배제했습니다.

    돌아보면, “AI를 쓰느냐 마느냐”는 애초에 잘못된 질문이었습니다. 진짜 질문은 “매매의 어느 칸을 AI에게 맡기고, 어느 칸은 끝까지 안 맡기느냐” 였습니다. 그 선을 긋는 데 시간이 꽤 걸렸고, 지금도 계속 다듬고 있습니다.

    다음 글 예고 — 첫 모의투자, 생각대로 되지 않았습니다

    이렇게 역할을 나눠 시스템을 만들었으니 이제 잘 굴러갈 줄 알았습니다. 그런데 실제 시세로 돌려보는 첫 모의투자에서, 저는 보기 좋게 넘어졌습니다. 성적표는 처참했고, 저는 그 이유를 자신 있게 셋이나 지목했다가 — 전부 틀렸습니다.

    다음 글에서는 그 부끄러운 실패와, 실패의 이유마저 틀렸던 이야기를 솔직하게 풀어보겠습니다.

    여러분이라면 AI에게 어디까지 맡기시겠어요? 저는 “한 번도 안 맡긴다”에서 출발했는데, 기록을 열어 보니 정반대였습니다.

    ▶ 다음 편 예고
    백테스트 만점, 실전은 낙제 — 첫 모의투자에서 넘어진 이야기
    처참한 성적표. 그 이유를 자신 있게 셋이나 지목했다가, 전부 틀렸습니다.

    다음 글 읽기 →


    근거: StockBot_개발_개요 · AI와_규칙의_역할분담 · 자동매매_시스템이란 · 백테스트 — 본 글은 개발 과정의 경험 공유이며 투자 자문이 아닙니다.

    이 글은 특정 종목 매수·매도를 권유하는 글이 아니라, 개인이 만든 시스템의 개발 과정을 공유하는 정보·교육·참고용 글입니다. 투자 판단과 책임은 본인에게 있습니다.

  • AI로 주식 자동매매 봇을 만들었습니다 — 개발기 ① 왜 시작했나

    AI로 주식 자동매매 봇을 만들었습니다 — 개발기 ① 왜 시작했나

    혹시 이런 경험 있으신가요? 분명히 “여기서 손절하자”고 다짐했는데, 막상 그 순간이 오면 손이 안 나갑니다. 반대로 급등하는 종목을 보면 계획에도 없던 매수 버튼을 누릅니다. 그리고 후회하죠. 저도 그랬습니다. 그래서 아예 컴퓨터에게 매매를 맡겨보기로 했습니다.

    주식 트레이딩과 기술
    Photo: StockRadars Co., / Pexels

    이 글은 제가 AI 주식 자동매매 시스템을 직접 만들어 온 과정을 기록하는 개발기의 첫 번째 이야기입니다. 오늘은 “왜 이걸 시작했는가”부터 풀어보겠습니다.

    사람은 자기가 세운 규칙을 잘 못 지킨다

    주식에서 지는 이유는 대부분 실력이 아니라 감정입니다. 공포와 욕심이 이성보다 빠르게 움직이기 때문입니다.

    • “조금만 더 기다리면 오르겠지” → 손절 실패
    • “이건 무조건 간다” → 계획에 없던 추격 매수
    • “지금 안 사면 후회할 거야” → 고점 매수
    감정이 규칙을 이기는 세 순간
    머니노트 · 정보·교육·참고용
    표로 보기
    감정이 규칙을 이기는 세 순간
    항목 설명
    "조금만 더 기다리면" 손절 실패 팔아야 할 때 못 판다
    "이건 무조건 간다" 추격 매수 계획에 없던 뒤늦은 매수
    "지금 안 사면 후회" 고점 매수 비쌀 때 뒤늦게 올라탄다

    머리로는 다 아는 규칙인데, 왜 못 지킬까요? 사람이라서 그렇습니다. 그렇다면 규칙을 지키는 일만 감정 없는 컴퓨터에게 시키면 어떻게 될까요?

    자동매매 시스템이란 무엇인가

    자동매매 시스템은 사람이 정한 규칙을 컴퓨터가 대신 지켜 사고파는 프로그램입니다. “손실이 정해진 선에 닿으면 예외 없이 판다” 같은 원칙을, 사람이라면 흔들릴 순간에도 기계적으로 그대로 실행합니다.

    크게 네 부분으로 이루어집니다.

    • 신호 판정 — 언제 사고팔지 규칙으로 계산
    • 안전장치 — 손절·서킷브레이커(연속 손실 시 신규 매수 중단)
    • 주문 실행 — 증권사와 연결해 실제 주문
    • 검증 — 규칙이 진짜 통하는지 백테스트로 확인
    자동매매 시스템의 4대 구성
    머니노트 · 정보·교육·참고용
    표로 보기
    자동매매 시스템은 네 부분으로 움직입니다
    항목 설명
    신호 판정 언제 사고팔지 계산
    안전장치 손절·연속손실 시 매수중단
    주문 실행 증권사 연결 실제주문
    검증 백테스트로 규칙 확인

    가장 중요한 것은 ‘버는 것’보다 ‘크게 잃지 않는 것’

    투자와 리스크 관리
    Photo: Kindel Media / Pexels

    만들면서 가장 신경 쓴 부분은 놀랍게도 수익이 아니라 안전이었습니다. 아무리 좋은 규칙도 단 한 번의 큰 손실로 무너질 수 있기 때문입니다.

    그래서 손절선, 그리고 연속으로 손실이 나면 새로 사는 것을 멈추는 장치처럼 여러 겹의 안전장치를 세웠습니다. “돈 버는 기능”보다 “크게 잃지 않는 기능”에 무게를 둔 것이죠. (구체적인 수치나 내부 설정은 오남용을 막기 위해 공개하지 않습니다.)

    여기서 하나만 짚어두겠습니다. 서킷브레이커는 “매매를 통째로 멈추는” 장치가 아닙니다. 새로 사는 것만 멈추고, 이미 들고 있는 것을 파는 일은 계속합니다. 위험 구간일수록 손절은 필요하기 때문입니다. 이 이야기는 개발기 ④에서 실제 사고와 함께 자세히 다룹니다.

    느낌이 아니라 숫자로 검증한다

    새로운 매매 규칙이 떠올랐다고 바로 실전에 넣지 않습니다. 반드시 백테스트를 거칩니다. 백테스트는 새 규칙을 과거 데이터에 돌려보는 모의고사입니다. 승률과 손익비를 숫자로 확인해, 그저 느낌이 좋은 규칙인지 실제로 통하는 규칙인지 가려냅니다.

    단, 과거에만 잘 맞게 규칙을 억지로 맞추는 ‘과최적화’라는 함정이 있어서, 검증 기간을 나눠 다시 확인하는 과정을 거칩니다.

    다음 글 예고 — AI에게 무엇을 맡기고, 무엇을 안 맡길 것인가

    지금 이 시스템은 실전에 큰돈을 넣기 전, 모의투자로 성적과 안정성을 쌓는 검증 단계에 있습니다.

    여기서 많은 분들이 궁금해하십니다. “그래서 AI가 알아서 종목을 골라 매매하는 거야?”

    이 질문에 저는 한동안 “아니요, 중요한 결정엔 AI를 안 씁니다”라고 답해 왔습니다. 그런데 기록을 다시 열어보니 그건 초기에 정해둔 임시 방침이었고, 지금은 달라져 있었습니다. 제가 제 시스템을 잘못 설명하고 있었던 거죠.

    다음 글에서는 그 경계선이 어디였고, 어떻게 옮겨졌으며, 무엇만은 끝까지 기계에게 남겨뒀는지를 정직하게 이야기하겠습니다. 자동매매에 관심 있는 분들께 작은 참고가 되길 바랍니다.

    ▶ 다음 편 예고
    0%에서 94%로 — AI에게 안 맡기려다 결국 맡기게 된 이야기
    "중요한 결정엔 AI를 안 쓴다"고 믿었는데, 기록을 열어보니 정반대였습니다.

    다음 글 읽기 →

    여러분은 투자하면서 “이건 차라리 규칙으로 만들어 두는 게 낫겠다” 싶었던 순간이 있으신가요? 저는 그 생각 하나로 시작했습니다.


    근거: StockBot_개발_개요 · 자동매매_시스템이란 · 백테스트

    이 글은 특정 종목 매수·매도를 권유하는 글이 아니라, 개인이 만든 시스템의 개발 과정을 공유하는 정보·교육·참고용 글입니다. 투자 판단과 책임은 본인에게 있습니다.