본문 바로가기

Quant

Backtesting Debugging (4)

주말에 놀러갔다가, 왜 프로젝트를 열심히 하냐고 물으신 분이 있다.

하다보니 관성이 붙었다라고 대답은 했지만,

왜 다시 열심히 하게 됐더라 생각을 하다가 1년 전에 뉴스를 본 게 떠올랐다.

 

은행 1원 인증 프로세스를 자동화하는 프로그램을 만들어서

일주일에 노리스크 10만원을 벌었다는 사나이의 이야기이다.

혼자 상상만 하고 친구들이랑 장난으로 애기하던 걸 진짜 실천한 사람이 있었다.

불법이 아닐지라도 멋진 일은 아니지만, 이 사나이의 결단력과 실천력에 감탄했다.

가끔 이 사나이가 생각나면 침대에서 폰 보고 밍기적거리다가도 일어나서 코딩을 하게 된다.


Filtering의 조건 1개를 제한 결과, 수익률은 늘었지만 전체 매매 내역에 영향을 주었다.

각 영향을 파악해, 손실 최소화 & 수익 극대화 전략을 정비한다.

 

필터링 조건에서 시가총액 기준을 줄여 매매할 수 있는 내역이 많아졌고, 총 수익률은 증가했다.

시가총액은 필터링 외에도 scoring 로직에도 업데이트하여, 매매 종목 선정을 더 고도화 하려 한다.

 

고도화는 종목 선정을 위한 Scoring 계산식을 튜닝하는 것인데, 직관 & 백테스팅의 반복으로 최적화를 해보려한다.


2024-11-28
- Total Trades: 6
- Winning Trades: 1
- Win Rate: 16.67%
- Total Profit: -2.80%

 

2번째 매매를 제외하고 모두 손실이다.

매매를 했던, 09:25 / 09:50 / 11:00 / 13:30 / 13:40 / 14:55 시간대에 어떤 종목이 고려대상이었고

어떤 결과로 종목을 선정했는지 체크한다. 분석 포커스는 언제 살 지, 팔 지 보다 무엇을 살 지에 맞춘다.

시간대 Backtesting  종목 Backtesting 종목 후보 매매 복기
09:25 A063080
- 컴투스홀딩스
NFT
- A063080: 컴투스홀딩스



아침 급등 이후, 꾸준한 하락
매수하지 말았어야 했다.
How?
- 고민 필요.. 현재 필터링 기준으로는 부족
- 라인 매매를 적용한다면? 괜찮지 않을까

중요 매물대 뚫지 못하고 내려옴
09:50 A047560
- 이스트소프트
모바일게임(스마트폰)
- A063080: 컴투스홀딩스
- A047560: 이스트소프트

차트 안 이쁜 컴투스홀딩스가 아닌, 이스트소프트를 선정한 것은 좋은 판단.

매수/매도 타이밍 최적화로 수익 극대화를 할 수 있을 듯 하다.

11:00 A047560
- 이스트소프트
AI 챗봇
- A035020: 한글과컴퓨터
- A039980: 폴라리스AI
- A047560: 이스트소프트



이스트소프트 손절가를 넘어 당일 고려 종목에서 제외



위에서 순서대로, 이스트소프트/한글과컴퓨터/폴라리스AI를 % price 로 비교한 차트이다.

테마 선정 자체가 잘못되었다.
다른 테마를 선정했거나, 매매를 안 하는게 좋았다.
13:30 A012450
- 한화에어로스페이스
코리아 밸류업 지수
- A012450: 한화에어로스페이스

위가 고려아연, 아래가 한화에어로스페이스

13:30에는 고려아연이 필터링 됐지만, 13:40에는 필터링 풀림. 분봉 기준 필터링으로 사료됨.

변동성 측면에서 보면
고려아연을 매매했어야 하지만,
매수/매도 타이밍으로 손익을 극대화 할 포인트가 있어 보인다.

13:40 A010130
- 고려아연
코리아 밸류업 지수
- A012450: 한화에어로스페이스
- A010130: 고려아연
-
14:55 A010130
- 고려아연
- -

 

Insight

1) 라인 매매를 적용해서 필터링을 강화한다.

- 저항선 뚫지 못했다고 판단되면 필터링 추가

 

2) 매수/매도 로직 최적화로 손익 극대화

 

 


2024-12-05
- Total Trades: 5
- Winning Trades: 4
- Win Rate: 80.00%
- Total Profit: 4.51%

좋지만, 7.5% 수익률에서 줄어든 포인트를 찾아야 한다.

시가총액 기준 변경으로 filtering 기준이 완화되어, scoring 기준을 강화해야 할 것으로 사료된다.

 

시간대 Backtesting  종목 Backtesting 종목 후보 매매 복기
09:55 A389020
- 자람테크놀로지
시스템반도체
- A309020: 자람테크놀로지
 
11:50 A010130 코리아 밸류업 지수
- A010130: 고려아연
- A267260: HD현대일렉트릭


고려아연과 아래가 HD현대일렉트릭.
종목 선정 굳.
12:35 A010130 - -
12:45 A047560 4차산업 수혜주
- A047560: 이스트소프트
이스트소프트 시가 총액은 2,9000억
- 필터링 기준 3,000억 -> 1,500억




이스트소프트를 그대로 뒀어도 상승은 했을 것. 그런데 하필 10분 사이에 생긴 음봉을 묵직하게 맞아서 기분이 별로일 뿐.
- 10분 사이에 발생한 문제까지 세밀하게 조정하면 사이드 이펙트가 우려된다.
13:00 A010130 코리아 밸류업 지수
- A010130: 고려아연
- A267260: HD현대일렉트릭
-

 

테마 변경 시, 너무 자주  바뀌는 것을 우려해 10분의 텀을 둔 것이 대응을 느리게 하고 있다.

단점도 있지만 장점이 명확해서 도입한 것이기에 보류한다.

 

Insight

1) 테마 선정 로직, Parameter Optimization 실행해보기

- 현재는 직관으로 인자, 수치를 지정한 상태

 


2024-12-11
- Total Trades: 2
- Winning Trades: 1
- Win Rate: 50.00%
- Total Profit: 0.5%

3.6% 에서 0.5%로 수익률이 2.1%p 감소했다.

 

시간대 Backtesting  종목 Backtesting 종목 후보 매매 복기
09:25 A047560
- 이스트소프트
보안주(정보)
- A047560: 이스트소프트
- A356680: 엑스게이트


엑스게이트는 장초에 상한가 찍어서 어차피 매매를 못하는 종목. 나이스 필터링



11:55 A001470
- 삼부토건
건설 중소형
- A001470: 삼부토건



손절 이후 지속 하락. 나이스 손절.
-> 당일 고가 저항선을 뚫지 못하고, 떨어짐.
-> 라인 매매 적용 시, 손실 최소화 가능해보임

Insight

1) 라인 매매 적용 가능

- 당일 고가 저항선을 뚫지 못한 경우

 

2) 시가총액 기준 변경으로 인한 테마 변경

- 삼부토건 시가총액 2,400억 -> 주도주 변경됨

- 기존 매매에서는 이스트소트프로만 매매했으나, 변경된 필터링으로 매매 종목 변경됨

- Scoring 이후에도 추가 post filtering을 더하면 어떨까? (라인 매매)


2024-12-26
- Total Trades: 5
- Winning Trades: 4
- Win Rate: 80.00%
- Total Profit: 0.96%

6.8% 수익률에서 0.9%로 약 5.9%p 수익률이 감소했다.

기존 매매에서는 1번의 수익으로 묵직하게 갔으나, 변경된 필터링 로직으로 샀팔샀팔하다가 수익률이 줄었다.

해당 원인 분석에 포커스를 둔다.

시간대 Backtesting  종목 Backtesting 종목 후보 매매 복기
09:50 A065350
- 신성델타테크
로봇(산업형/협동로봇 등)
- A065350: 신성델타테크
- A160190: 하이젠알앤엠
- A466100: 클로봇




5분봉: 신성델타테크
- 자주색: 하이젠알앤엠
- 보라색: 클로봇
% price로 표시한 차트




09:50 시점에서는 신성델타테크를 제외한 나머지 주식은 급락함. 당시 판단은 이게 맞음.
결과론적으로 보면 하이젠알앤엠을 09:50에 매매했다면 다시 반등했겠지만, 하따를 위해 계산식 변경은 과하다.
- 거래대금, 상승률, 시가총액.. 을 다 봐도 신성델타테크가 대장주다.
10:30 A065350 로봇(산업형/협동로봇 등)
- A065350: 신성델타테크
- A160190: 하이젠알앤엠
- A466100: 클로봇
-
12:40 A160190 로봇(산업형/협동로봇 등)
- A065350: 신성델타테크
- A160190: 하이젠알앤


A160190 - Score: 28.265491621810273
A065350 - Score: 28.2358385478358

정확히 이 부분에서 Scoring 로직의 부정확성으로 인해 빨래질을 당한 것으로 추정된다.



기존 매매 종목 신성델타테크를 계속 가지고 있었다면, 20분 후에 먹었을 상승분을 가벼웠던 하이젠알앤엠이 먼저 쏘면서 샀팔샀팔 한 것으로 사료된다.
13:05 A160190 로봇(산업형/협동로봇 등)
- A065350: 신성델타테크
- A160190: 하이젠알앤
-
13:15 A065350 로봇(산업형/협동로봇 등)
- A065350: 신성델타테크
- A160190: 하이젠알앤
-

Insight

1) 가벼운 종목이 먼저 쏘고, 무거운 종목이 천천히 갈 수도 있다. Scoring 로직의 가중치 조정 필요

 


Scoring 최적화를 위한 케이스를 찾아서 만족스럽다. 눈알 빠질뻔했네..

728x90

'Quant' 카테고리의 다른 글

Backtesting Debugging (6)  (0) 2025.02.19
Backtesting Debugging (5)  (0) 2025.02.18
Backtesting Debugging (3)  (0) 2025.02.15
Backtesting Debugging (2)  (0) 2025.02.15
Backtesting Debugging (1)  (0) 2025.02.13