전체 목록

바이브 코딩, 25년 차 개발자와 처음 하는 사람이 다른 단 한 가지

인공지능에게 이 한 줄을 쳐 봤다.

5일선을 돌파하면 사고, 5일선을 이탈하면 파는 자동매매 프로그램 만들어 줘

5분 만에 프로그램이 나왔다. 돌려 보니 잘 돌아간다. 요즘 말하는 바이브 코딩, 코드를 몰라도 말로 시키면 프로그램이 나온다는 건 사실이다. 나도 요즘은 코드를 거의 직접 치지 않는다.

그런데 이걸 그대로 계좌에 연결했다면 곤란해졌을 것이다. 2000년부터 프로그램을 만들어 온 입장에서 보면, 같은 인공지능에게 같은 걸 시켜도 결과가 갈리는 이유는 코드 실력이 아니다. 시키기 전에 설계도를 그렸느냐다.


1. 인공지능은 솜씨 좋은 목수다

목수에게 "집 지어 줘" 한마디만 하면 목수는 집을 짓는다. 문도 있고 창문도 있다. 그런데 수도관이 어디로 지나가는지, 차단기는 어디 있는지, 불이 나면 어디로 나가는지는 목수 마음대로 정해진다. 살아 보기 전에는 모른다.

인공지능이 딱 그 목수다. 솜씨는 좋다. 하지만 정해 주지 않은 건 자기 마음대로 정하고, 그걸 말해 주지 않는다.

위의 한 줄만 봐도 그렇다. 사람에게는 분명한 문장인데, 프로그램으로 옮기려면 정해지지 않은 게 네 가지나 나온다.

사람은 당연하다고 생각하지만인공지능이 마음대로 정해 버리는 것
"5일선"하루 단위 5일선인가, 5분 단위인가?
5일 평균장중엔 오늘 종가가 아직 없다. 현재가를 넣나, 빼나?
"돌파"장중에 한 번 넘으면 돌파인가, 마감 가격으로 넘어야 돌파인가?
사고팔기기준선 근처를 오르내리면 하루에 몇 번 사고파나?

2. 개발자는 시키기 전에 이 여섯 가지를 정한다

① 어디서 돌릴 것인가

내 컴퓨터에서 돌리면 쉽다. 그런데 컴퓨터가 꺼지거나 절전에 들어가면 프로그램도 멈춘다. 한 줄로 부탁하면 인공지능은 이걸 묻지 않는다.

② 바깥 서비스와 무엇으로 연결할 것인가

연결에는 보통 두 길이 있다. 요청을 보내고 답을 받는 길, 그리고 실시간 자료가 계속 흘러 들어오는 길. 정해 둘 게 있다.

  • 연결이 끊기면 누가 다시 잇는가
  • 접속 인증은 만료되는데 누가 갱신하는가
  • 상대 서비스가 정한 호출 횟수 제한을 누가 지키는가

정하지 않으면 조용히 끊기고, 프로그램은 끊긴 줄도 모른다.

팁 — 재시도는 적게, 천천히. 연결이 끊기면 다시 붙어야 한다. 그런데 인공지능에게 "끊기면 다시 시도해"라고만 하면 쉬지 않고 계속 두드리는 코드를 만든다. 짧은 시간에 요청이 몰리면 증권사는 이를 비정상 접속으로 보고 접속을 막거나 계좌 이용을 제한할 수 있다. 그래서 미리 정해 둔다.

  • 재시도 사이 간격을 점점 늘린다 (1초 → 2초 → 4초 …)
  • 재시도 횟수에 상한을 둔다 (예: 5번). 넘으면 멈추고 알림을 보낸다
  • 주문은 자동으로 다시 보내지 않는다. 먼저 체결 내역을 조회해 이미 들어갔는지 확인한다

③ 무엇을, 어디에 저장할 것인가

가장 많이 빠지는 칸이다. 한 줄로 만든 프로그램은 자기가 한 일을 머릿속(메모리) 에만 기억한다. 껐다 켜면 다 잊는다. 그래서 먼저 정한다.

  • 기록은 SQLite(파일 하나로 된 작은 데이터베이스)에 남긴다
  • 내 기록과 바깥의 원본(예: 은행 잔고)이 다르면 원본이 맞다. 켤 때마다 대조한다

④ 부품을 어떻게 나눌 것인가

받기 → 판단 → 실행 창구 → 기록 → 알림. 다섯 부품으로 나누고, 핵심은 실행 창구는 하나라는 것이다. 모든 실행이 한 창구를 거치면 같은 일이 두 번 실행되지도, 방금 한 일을 다른 부분이 취소하지도 않는다. 한 줄로 만든 프로그램은 이게 전부 한 덩어리다.

⑤ 비밀 열쇠는 어디에 둘 것인가

접속 열쇠는 코드 안이 아니라 따로 떨어진 파일에 둔다. 코드는 보여 줘도 되지만 열쇠 파일은 절대 안 된다. 처음부터 나눠 둬야 실수로도 새지 않는다.

⑥ 비상 브레이크

  • 정해 둔 한도를 넘으면 그날은 멈춘다
  • 버튼 하나로 전부 멈춘다
  • 처음엔 무조건 연습 모드, 실제 연결은 스위치를 따로 켜야만

3. 설계도는 "지시서"가 되어 인공지능에게 간다

설계도가 나오면 인공지능에게 이렇게 준다.

  • 실행 위치: 인터넷 서버. 매매는 증권시장 영업일 08:00~20:00에만 (휴장일과 그 밖의 시간엔 주문하지 않음)
  • 연결: 주문·계좌 조회·거래내역 조회·차트 조회 등은 증권사 REST API로, 실시간 체결 정보는 웹소켓으로 만든다. 끊기면 자동 재연결, 인증은 만료 전 갱신, 호출 제한 준수
  • 저장: SQLite(파일 하나로 된 작은 데이터베이스). 켤 때마다 원본과 대조, 다르면 원본을 따른다
  • 부품: 받기·판단·실행 창구·기록·알림. 실행은 반드시 창구 하나로만
  • 시각: 전부 한국 시각 기준
  • 열쇠: 코드 밖 별도 파일
  • 안전장치: 한도, 전체 정지, 기본은 연습 모드
  • 순서: 한꺼번에 만들지 말고 부품 하나씩, 만들 때마다 시험 방법도 같이 보여 줄 것

마지막 줄이 가장 중요하다. 부품 하나 만들 때마다 확인하고 다음으로 넘어간다.

처음 하는 사람은 인공지능에게 결과를 주문한다. 개발자는 설계도를 주고 부품을 주문한다. 차이는 그것뿐이다.

물론 이렇게 해도 한 번에 끝나지는 않는다. 실제로 돌려 보면 주문이 일부만 체결됐을 때의 처리, 장 시작과 마감 직전의 예외, 증권사마다 다른 응답 형식처럼 설계도에 미리 다 적을 수 없는 디테일한 부분들을 계속 수정해야 한다. 돌려 보고, 확인하고, 고치는 과정을 여러 번 거친다. 설계도는 그 수정이 엉뚱한 곳으로 번지지 않게 잡아 주는 뼈대다.


4. 설계도가 없으면 생기는 일

한 줄로 만든 프로그램을 열어 보면, 문제는 전부 설계도의 빈칸에서 나온다.

  1. 날짜가 어제로 잡힌다. 컴퓨터 기본 시계는 한국보다 9시간 늦다. 아침인데 프로그램은 아직 어제라고 생각한다. 오류도 안 뜨고 조용히 틀린다. → "한국 시각 기준" 한 줄이 막는다.
  2. 같은 실행이 수십 번 반복된다. 실패하면 친절하게 다시 시도하는데, 실패 이유가 "이미 처리 중"이었다면 계속 쌓인다. → 실행 창구가 하나면 생기지 않는다.
  3. 방금 한 일을 스스로 취소한다. 서로 반대인 두 신호가 거의 동시에 오면 서로를 지운다. → 이것도 실행 창구 문제다.
  4. 비밀 열쇠가 코드에 그대로 적혀 있다. 코드를 누군가에게 보내는 순간 권한이 넘어간다. → 열쇠 칸이 비어 있었다.
  5. 껐다 켜면 한 일을 잊는다. → 저장 칸이 비어 있었다.

그리고 하나 더. 과거 자료로 돌려 본 "모의 성적"은 한 번 더 의심해야 한다. 과거 자료로 돌릴 땐 그 가격에 당연히 됐다고 치지만 실제로는 안 됐을 수 있고, 계산하는 순간엔 알 수 없던 미래 정보가 몰래 섞이기도 한다. 이 두 가지를 걸러 내면 멀쩡해 보이던 성적이 사라지는 경우가 많다.


5. 직접 부딪혀 보고 알게 된 것들

설계도에 넣어 두면 좋은, 실제로 만들어 돌리면서 배운 것들이다. 증권사마다 조건은 조금씩 다르니 쓰는 증권사의 안내서를 꼭 확인하자.

  1. 접속하는 곳의 주소(IP)를 증권사에 등록해야 하는 경우가 많다. 집 인터넷은 주소가 가끔 바뀌는데, 바뀌는 순간 접속이 막히고 프로그램은 멈춘다. 주소가 고정된 서버에서 돌리는 이유 중 하나다.
  2. 인증 열쇠(토큰) 발급에도 횟수 제한이 있다. 요청할 때마다 새로 발급받는 코드를 만들면 금방 막힌다. 한 번 받아 저장해 두고, 만료되기 전에만 새로 받는다.
  3. 실시간으로 받을 수 있는 종목 수에 한도가 있다. 한도를 넘겨 등록하면 오류도 없이 시세가 그냥 안 온다. 프로그램은 조용한 시장이라고 착각한다. 감시 종목 수를 한도 안에서 관리해야 한다.
  4. 거래소가 두 곳이다. 08:00~20:00 중 정규장 밖의 시간에는 다른 거래소(넥스트레이드) 가격으로 거래된다. 같은 종목도 거래소마다 가격이 다를 수 있으니, 어느 거래소 가격으로 판단하고 어디로 주문하는지 정해 둔다.
  5. 분봉은 늦다. 1분봉은 그 1분이 끝나야 확정되고, 조회해서 받으면 더 늦어진다. 빠르게 판단해야 하는 건 분봉이 아니라 실시간 체결 정보로 한다.

6. 개발을 몰라도 시키기 전에 이 여섯 가지만

  1. 어디서 돌리나? 내 컴퓨터가 꺼지면 어떻게 되나?
  2. 바깥과 어떻게 연결하나? 끊기면 누가 다시 잇나?
  3. 무엇을 어디에 저장하나? 껐다 켜도 기억하나? 원본과 대조하나?
  4. 부품을 어떻게 나누나? 실행 창구는 하나인가?
  5. 비밀 열쇠는 어디 두나? 코드 밖에 있나?
  6. 브레이크는 있나? 한도, 전체 정지, 연습 모드 먼저.

그리고 끝에 한 줄 덧붙이자. "한꺼번에 말고, 하나씩 만들고 시험 방법도 같이 보여 줘."

인공지능 덕분에 이제 누구나 만들 수 있다. 하지만 만드는 것과 믿어도 되는 것은 다르다. 25년 동안 배운 건 코드 치는 법이 아니라, 무엇을 의심해야 하는지였다.


이 글은 특정 투자 방법이나 종목을 권하지 않습니다. 예시로 든 매매 규칙은 설명을 위한 것입니다.

1조회·0댓글

댓글0

댓글을 쓰려면 로그인이 필요합니다. 로그인

아직 댓글이 없어요. 가장 먼저 댓글을 남겨보세요.

← 목록으로