kuri
kuri
🏅 AI 마스터
📹 SNS 찐친

[문과생도AI]사례3: 어맛, 이건 꼭 사야해: 자동매매 플그램


Background

저의 부캐 중 하나는 트레이더 입니다.

첫 번째 사례발표였던 [문과생도AI] 사례1: 적정주가 계산툴, Fairy Fair Price의 마지막에서 다음 프로젝트는 '증권사 API를 이용해서 자동매매하는 코드를 짜보는 것'이라고 말씀 드렸습니다.

그.뤠.써!

간단히 API 가지고 퀀트 트레이딩에서 선택한 전략종목 리스트를 주고 간단히 시장가로 매수 정도만 하는 프로그램을 짜보았습니다.


Target

1. 증권사 API로 퀀트 전략종목 리스트를 그대로 시장가로 매수하는 프로그램
2. 매수 후 결과를 csv 파일로 저장하여 보관


과정

0. 기본코딩

일단은 지난 번 [문과생도AI] 사례2: API 없이 앱푸시 (App Push) 비스무리끄리한 메시지 보내기에서처럼 프로그램을 직접 실행시킬 때를 가정하면서 순서대로 짜달라고 시켰습니다.


1. 숨은 에러찾기 및 수정


코드문법이 안맞는다, 뭐가 틀렸다, 그런 거 없다, 못찾겠다, ...


자기가 짜놓은 코드 가지고 뭐 그렇게 말이 많은지...
에러가 나는 족족 집요하게 물어보면서 수정합니다.
이번에는 에러가 하도 많고, 딱히 도움이 될 만한 것도 없으니 그냥 6개만 보여드립니다.


2. 추가 기능 요청

에러를 수정하면서 중간중간 생각나는 추가기능도 요청했습니다.

1. 초기 투자자금을 넣지 않고, 엔터키를 치면 에러메시지 대신 계속 숫자 넣으라고 물어보기

2. 투자금 분배과정에서 동일비중 (same size)이나 동일주식수 (same share) 중 선택할 수 있게 수정요청

3. 리스트에 있는 주식 중에서 일부분만 매수하는 상황이 발생해서 리스트에 있는 주식 모두를 사라고 요청


그래도, 뭐 고쳐달라고 하면 군소리 없이 잘 고쳐줌.

그리고 내가 또 뭐라고 싫은 소리하면 바로 사과함...성격은 좋은 듯.


에러나고 수정하고, 테스트하고 또 에러나고...
이 과정들을 생략해서 간단해 보이지만, 나름 무한에러의 축복이 끝이없네?


괜시리 시간 낭비는 아닐까~하는 생각이 들면서, '이건 그냥 안되나보다 다른 주제로 만들어 볼까'하고 있었습니다.

그.뤈.뒈!!!

문과생도AI의 동기이신 킵고잉님의 [문과생도AI] 코딩 초보 문과생이 겁XXX 없이 1티어 보스몹을 잘 못 건드렸다..?(삽질의 기록)를 읽고 나니 도전이 되더군요.
마음이 왠지 웅장해지면서 저도 그냥 킵고잉하기로 했습니다.

그후로도 몇 번의 에러와 수정, 테스트와 에러, 수정의 루프를 계속하다가...
결국 성공했습니다. !!!


확인해 보니, API를 제공한 증권사 웹사이트에 로그인 해도 제대로 주문이 체결되어 있는 것을 볼 수 있습니다.


그래서 중요한 건 뭐다?


3. 스트림릿 적용

이왕이면 다홍치마라고, 스트림릿 환경에서 사용할 수 있게 변경해 달라고 요청하니 깔끔하게 바꿔줍니다.

마찬가지로 실행해서 확인해도 잘 작동합니다.


4. Cosmetic Adjustment


>이왕이면 매수주문도 테이블로 만들고,

>분할매수 (fractional purchase)가 불가능한 종목의 경우 주 단위로 매수 (whole share purchase)하고,

>사용된 금액의 총합과 초기 투자금 대비 남은 금액까지 표시

>그리고나서 나중에 리밸런싱 (rebalancing)할 때를 대비해서 csv 파일로 저장할 수 있도록 변경해 달라고 합니다.

역시 몇 번의 에러 수정 후, 완성.


5.결정적 에러

즐거운 마음으로 룰루랄라 세 번째 사례글을 쓰고 있었습니다.

그런데 뭐 그런 느낌있잖아요?
뭔가 좀 쎄한 느낌?

가만히 결과물을 들여다 보니...아차!


투자금의 배분 (allocation)에서 동일비중 (same size=equal weight)만 의미가 있지, 동일 주식수 (same share)는 전혀 필요가 없는 부분이었습니다.

아마도 제가 가중치 조정 (weight adjustment)을 생각한 모양입니다만, 저는 그런 복잡한 거 적용할 생각 1도 없음.
그래서 다시 해당 부분을 코드에서 삭제하고 이름을 바꿔달라고 요청합니다.

다시 실행 후 제대로 작동하는 것 확인했습니다.


추가해야 할 기능

1. 매도 기능

  • 신규 리스트를 로딩한 후, 이전 리스트와 비교해서 이전에 매수했지만 신규리스트에 없는 종목은 자동으로 매도한 후, 손익금, AROI (Annual Return on Investment)를 csv 파일에 추가

  • 이전리스트에 없지만, 신규리스트에 있는 종목은 새로 매수

2. 리밸런싱 기능

  • 매도 기능이 가능해지면, 신규 리스트를 업로드하고 자동으로 이전리스트와 비교

  • 비중차이를 계산해서 어느 종목의 비중을 줄이고, 어느 종목의 비중을 늘려야하는 지 결정하고 전체의 매수/매도를 진행

  • 매수/매도 완료후 기존의 리스트를 추가하고 이전 대비 손익금, AROI (Annual Return on Investment)를 csv 파일에 추가


과연 얼마나 적용할 수 있을까는 모르겠지만, 어쨌거나 직접하는 노가다 코딩이 아니라, 노가다는 챗지랑 클로한테 시키니 개꿀입니다.

“코딩(을 시키는 것)이 이렇게 재미있을 줄이야. “


이거 중독성 갑입니다.
요즘 일하다가도 시간만 나면 이것도 하고 싶고, 저것도 하고 싶고..
우후웃~~

B급감성 야매킹, kuri였습니다.


12
15개의 답글

(채용) 콘텐츠 마케터, AI 엔지니어, 백엔드 개발자

지피터스의 수 천개 AI 활용 사례 데이터를 AI로 재가공 할 인재를 찾습니다

👉 이 게시글도 읽어보세요