돈 파쇄기 개발 성공
어반자카파의 Get 노래를 들으면 독기가 기분좋게 충전되서 좋다.
한 번쯤 그냥 미친 사람처럼 해본다는 가사가 좋다.
최근 백테스팅, 모의투자 결과가 좋아서 돈 복사기를 개발했다는 착각에 빠져 살았다.
그러다 3.5 , 3.6 모의투자에서 예상치 못한 괴리가 발생해 박살이 나고,
모의투자로 테스트 돌렸단 점에 감사하며, 다시 겸손하게 돈 파쇄기를 돈 복사기로 고쳐보려 한다.
25-03-05
실제 투자 내역
종목 | 매수 시간 | 매수 평단 | 매도 시간 | 매도가 |
HJ중공업 | 09:10 | 9075 | 09:46 | 8968 |
LIG넥스원 | 10:21 | 301776 | 11:10 | 301737 |
포스코인터내셔널 | 11:42 | 60613 | 12:15 | 59165 |
한국가스공사 | 12:45 | 40837 | 12:50 | 39806 |
HJ중공업 | 12:52 | 9277 | 12:53 | 9180 |
레인보우로보틱스 | 13:02 | 355395 | 13:06 | 354920 |
HJ중공업 | 13:11 | 9078 | 13:12 | 9148 |
HJ중공업 | 13:42 | 9138 | 13:46 | 9093 |
포스코인터내셔널 | 13:50 | 60240 | 14:01 | 60048 |
클로봇 | 14:04 | 14:42 | ||
포스코인터내셔널 | 15:02 | 61177 | 15:18 | 60984 |
모의 투자
종목 | 매수 시간 | 매도 시간 |
HJ중공업 - A097230 |
09:20 | 09:55 |
클로봇 - A466100 |
10:40 | 11:25 |
포스코인터내셔널 - A047050 |
11:50 | 12:00 |
한국가스공사 - A036460 |
12:45 | 13:35 |
포스코인터내셔널 - A047050 |
13:50 | 14:15 |
포스코인터내셔널 - A047050 |
15:00 | 15:20 |
Backtesting은 2달에 약 140%라는 수익을 냈는데, 모의 투자를 돌려보니 가끔 백테스팅과 다르다.
코드 실수로 싱크가 안 맞는 부분을 찾고, 그 외에 모의 투자에서 고려해야 할 부분을 생각해서 메꿔야 한다.
아래는 고려가 필요한 가설이다. 할 일이 많다...
가설 처리 프로세스는 아래와 같다.
가설 -> 데이터 로그 확인 -> 코드 변경 -> 백테스팅 -> 코드 업데이트 -> PR 정리
1. Trading bot 로그 업데이트
- 코드 symbol 대신에 주식 이름 명시. 실시간 확인이 어려움
- 현재 종목에 속하는 테마 정보 명시
2. 매수 타점 세분화 필요
- 백테스팅은 매수 시점에 호가와 무관하게 모두 매수한다고 고려하지만, 실제는 그렇지 않다.
3. 테마 선정 로직 고도화
- 하드코딩
- LLM 활용
- 테마 선정 수식 업데이트
- stock_list 순위 가중치 추가
4. Trading bot 코드 오류 확인
- 일일 데이터가 정확히 time 기준으로 sorting 되었는지 확인 필요
- 이전 종목 관리 데이터가 shallow copy 되었는지 확인 필요 (이상 없음)
5. Trading bot latency 고려
- 백테스팅은 5분봉 단위로 5분 데이터 확인
- 매수 로직 조정
Problem1. 데이터 무결성 확인
- 백테스팅 시, 분봉이 이상한 차트 발견
- util 함수에 sorting 로직 추가하여, dataframe 생성 시 모두 sorting 되게 처리함
Problem2. 테마 선정 로직 고도화
3.6 매매의 주요 테마는 '가스관사업'이었지만, '4차산업 수혜주' 테마와 내가 계산한 식의 수치가 비슷해, 대장주가 계속 바뀌어 매매에 큰 영향을 주는 이슈가 있었음.
매매의 시작이 되는 테마 선정은 수식 계산 고도화는 중요한 문제다.
시의성을 가진 테마를 구분하기 위해 고민한 방법은 아래 3가지다.
1. 하책: 하드코딩으로 시의성이 없는 매매는 거래 금지한다.
- 장점: 코딩이 쉽다.
- 단점
- 손실이 난 이후에 수동으로 처리해야한다. 소 잃고 외양간 고치는 격
- 자동화가 아니게 되고, 계속 시장 테마를 파악해야 한다.
2. 중책: LLM을 활용해서 시의성을 가진 테마를 구분한다.
- 장점: Scoring 최적화 안 해도 된다.
- 단점
- 개발 난이도가 매우 올라간다.
- ML을 사용 안 한 이유가 재현 불가능한 블랙박스 영역이 생겨서인데 쓰기 싫다.
3. 상책: 수식을 개선한다.
- 장점 : 로직 코드만 변경하면 된다.
- 단점 : 최적화 식을 찾기까지 백테스팅이 꽤 필요하다.
상책으로 간다.
현재는 상승분 평균 중 최고값을 당일 테마로 판단했지만,
테마가 겹치는 종목이 많으며 & 특정 종목만 높게 상승한 경우 테마가 형성됐다고 보기는 어렵다.
수식에 표준편차를 반영한다.