
지난번에는 관찰 후보를 저장하고, 이후 기간 데이터를 붙여 다시 확인하는 구조를 만들었다. 처음에는 후보를 잘 뽑는 기준을 만드는 게 핵심이라고 생각했는데, 막상 해보니 후보를 저장하고 다시 보는 과정도 꽤 중요했다.
관찰 후보를 CSV로 저장하고, 이후 기간 수익률과 거래량, 변동폭을 다시 계산했다. 그다음 여러 review CSV를 summary CSV로 모으고, 사람이 보기 편하도록 HTML 리포트까지 만들었다. 여기까지 하고 나니 후보를 뽑는 것에서 끝나는 게 아니라, 후보가 이후에 어떻게 움직였는지 기록으로 남길 수 있게 됐다.
그런데 복기 결과를 보다 보니 또 하나 걸리는 게 있었다. 후보의 이후 수익률만 보면 해석이 애매했다. 후보 평균 수익률이 마이너스라도 같은 기간 시장 전체가 더 많이 빠졌다면 다르게 봐야 하고, 반대로 후보 평균 수익률이 플러스라도 시장이 훨씬 더 강했다면 마냥 좋게 볼 수는 없었다.
후보 수익률만 보면 부족했다
처음 복기 리포트는 후보들의 이후 수익률을 중심으로 봤다. 예를 들어 2026년 2월 관찰 후보를 2026년 3월 데이터로 다시 확인했을 때, 전체 평균 이후 수익률은 -12.01%였다. 숫자만 보면 꽤 약한 흐름처럼 보인다.
그런데 같은 기간 KOSPI도 약했다면 이야기가 조금 달라진다. 실제로 2026년 3월 구간에서는 KOSPI도 -12.77%였다. 그러면 후보 평균이 마이너스라는 사실만으로는 부족하고, KOSPI 대비로 얼마나 차이가 났는지를 봐야 한다.
반대로 2026년 4월 관찰 후보를 2026년 5월~6월 데이터로 다시 확인했을 때는 후보 평균 이후 수익률이 양수였다. 처음에는 괜찮아 보였다. 하지만 같은 기간 KOSPI가 더 강하게 올랐다면, 후보가 올랐다는 사실만으로는 충분하지 않다.
그래서 review summary에 KOSPI 이후 수익률을 붙였다. 그리고 후보 평균 이후 수익률에서 KOSPI 이후 수익률을 뺀 값을 계산했다.
KOSPI 대비 차이 = 후보 평균 이후 수익률 - KOSPI 이후 수익률
KOSPI와 비교해보니 해석이 달라졌다
KOSPI 수익률을 붙이고 나니, 기존 결과가 조금 다르게 해석됐다.
2026년 2월 관찰 후보를 2026년 3월에 복기한 결과는 전체적으로 음수였다. 하지만 KOSPI 대비 차이를 보면 일부 정렬 방식에서는 플러스로 나타났다.
2026-02 관찰 → 2026-03 이후
common: KOSPI 대비 +1.23%p
stability_first: KOSPI 대비 +3.27%p
volume_first: KOSPI 대비 -2.00%p
즉 후보 평균 수익률은 전반적으로 음수였지만, common과 stability_first는 KOSPI보다 덜 약한 흐름으로 볼 여지가 있었다. 물론 이걸 “좋았다”고 말할 수는 없다. 마이너스는 마이너스고, 기간도 하나뿐이다. 다만 절대 수익률만 봤을 때보다 조금 더 조심스럽게 해석할 수 있게 됐다.
반대로 2026년 4월 관찰 후보를 2026년 5월~6월에 복기한 결과는 후보 평균 수익률만 보면 양수였다. 그런데 KOSPI 대비 차이를 붙이니 다른 그림이 나왔다.
2026-04 관찰 → 2026-05~06 이후
common: KOSPI 대비 -20.80%p
stability_first: KOSPI 대비 -21.71%p
volume_first: KOSPI 대비 -8.37%p
후보 평균 수익률은 양수였지만, 같은 기간 KOSPI와 비교하면 모두 마이너스 차이였다. 이 결과를 보고 나니 “후보가 올랐다”는 사실만으로는 복기가 부족하다는 생각이 들었다. 시장 전체가 더 강했다면, 후보가 올랐더라도 시장 대비로는 약한 흐름일 수 있다.
그런데 KOSPI도 완전히 중립적인 기준은 아니었다
여기서 또 한 번 멈췄다. KOSPI와 비교하면 더 공정한 복기가 될 것 같았는데, KOSPI 자체도 완전히 중립적인 비교 기준은 아닐 수 있었다.
최근 한국 증시는 삼성전자와 SK하이닉스 같은 대형 반도체주의 영향이 매우 크다. 이 두 종목이 KOSPI에서 차지하는 비중이 커지면, KOSPI 수익률은 시장 전체의 평균적인 움직임이라기보다 대형 반도체주의 흐름을 강하게 반영할 수 있다.
그렇다면 내가 계산한 “KOSPI 대비 차이”도 조심해서 해석해야 한다.
후보 평균 수익률 - KOSPI 수익률
이 계산은 겉으로는 시장 대비 차이를 보는 것처럼 보인다. 하지만 KOSPI가 특정 대형주에 크게 끌려간 구간이라면, 실제로는 “후보 평균 수익률과 대형 반도체 중심 지수 흐름의 차이”에 가까워질 수 있다.
여기에 한 가지가 더 있다. 삼성전자나 SK하이닉스처럼 KOSPI에 큰 영향을 주는 종목도, 기간에 따라 거래량 조건이나 KOSPI 대비 변동성 조건에서 제외될 수 있었다. 또는 criteria는 통과했더라도 top-N 정렬에서는 뒤로 밀릴 수 있었다.
이런 경우 관찰 후보 평균과 KOSPI 수익률을 단순 비교하면, 후보가 약했다기보다 KOSPI를 크게 움직인 대형주 흐름이 관찰 후보 집합에 충분히 반영되지 않았을 가능성도 함께 봐야 한다.
예를 들어 2026년 4월 관찰 후보를 2026년 5월~6월에 복기했을 때, 후보 평균 수익률은 양수였지만 KOSPI 대비로는 마이너스였다. 처음에는 후보가 시장 흐름을 따라가지 못한 것처럼 보였다. 그런데 만약 그 기간 KOSPI가 삼성전자와 SK하이닉스 중심으로 강하게 움직였다면, 이 비교는 조금 다르게 봐야 한다.
후보가 약했다기보다, KOSPI를 크게 움직인 일부 대형주 흐름이 내가 추린 관찰 후보 목록에는 충분히 반영되지 않았을 수 있다.
그래서 지금 단계에서는 “KOSPI 대비 마이너스니까 후보가 별로였다”라고 단정하면 안 된다. KOSPI는 중요한 기준이지만, 유일한 기준으로 보기에는 한계가 있다.
다음에는 전체 샘플 평균도 같이 봐야 할 것 같다
이 문제를 생각해보니 다음 방향이 조금 더 명확해졌다. KOSPI와 비교하는 것은 필요하지만, 그것만으로 끝내면 안 될 것 같다.
지금 내가 쓰는 데이터에는 50개 샘플 종목이 있다. 그렇다면 같은 이후 기간에 대해 전체 샘플 50개의 평균 수익률도 계산할 수 있다.
후보 평균 이후 수익률
KOSPI 이후 수익률
전체 샘플 평균 이후 수익률
이 세 가지를 같이 보면 해석이 조금 더 균형 잡힐 수 있다.
예를 들어 후보 평균 수익률이 KOSPI보다 낮더라도, 전체 샘플 평균보다 높다면 이야기가 달라진다. 반대로 KOSPI보다 낮고 전체 샘플 평균보다도 낮다면, 그때는 후보 필터가 그 기간에는 약하게 작동했을 가능성을 조금 더 진지하게 볼 수 있다.
즉 다음 복기에서는 이런 비교가 필요해 보인다.
후보 평균 수익률 - KOSPI 수익률
후보 평균 수익률 - 전체 샘플 평균 수익률
KOSPI는 시장 대표 지표로 참고하고, 전체 샘플 평균은 내가 실제로 비교하고 있는 샘플 우주 안에서의 기준으로 보는 방식이다.
이렇게 하면 KOSPI가 특정 대형주에 치우친 구간에서도 복기 결과를 조금 더 조심스럽게 볼 수 있을 것 같다.
HTML 리포트에는 다음 확인 포인트를 넣었다
KOSPI 대비 차이를 계산한 뒤에는 HTML 리포트에도 이 값을 반영했다. 기간별 표에 KOSPI 이후 수익률과 KOSPI 대비 차이를 추가했다. 이렇게 하니 후보 수익률만 따로 보는 것보다 훨씬 낫긴 했다.
하지만 표에 숫자가 보이는 것만으로는 다음에 뭘 확인해야 할지 바로 떠오르지 않았다. 그래서 HTML 리포트에 “다음 확인 포인트” 항목을 추가했다.
예를 들어 후보 평균 수익률은 음수였지만 일부 정렬에서 KOSPI 대비 차이가 플러스인 경우, 하락 구간에서 상대적으로 덜 약한 후보가 어떤 조건에서 나왔는지 확인하라는 식이다. 후보 평균 수익률은 양수였지만 모든 정렬에서 KOSPI 대비 차이가 마이너스인 경우에는, 시장 대표 흐름을 충분히 따라가지 못한 이유를 확인할 필요가 있다고 표시했다.
다만 이 문구도 정답을 내려주는 기능은 아니다. 리포트를 보고 바로 criteria를 바꾸자는 것도 아니다. 숫자만 남기는 것보다, 다음 실험에서 뭘 더 봐야 하는지 적어두는 정도의 보조 장치다.
이번에는 여기에 한 가지 생각을 더 붙이게 됐다. KOSPI 대비 차이가 크게 나왔다고 해서 바로 기준을 바꾸면 안 된다. KOSPI 자체가 대형 반도체주에 많이 영향을 받은 구간인지, 후보군이 어떤 종목군에 분포되어 있었는지도 같이 봐야 한다.
HTML은 사람이 보기 좋고, Markdown은 LLM이 읽기 좋았다
HTML 리포트는 사람이 보기에는 괜찮았다. 카드 형태로 요약을 보고, 기간별 표를 보고, 확인 포인트를 읽을 수 있었다. 그런데 이걸 다시 Codex나 다른 LLM에게 넘겨서 검토시키기에는 조금 불편했다.
HTML에는 스타일과 태그가 섞여 있다. 사람이 브라우저로 볼 때는 좋지만, LLM에게 입력으로 주기에는 굳이 필요 없는 정보가 많다. 그래서 LLM 검토용 Markdown 파일을 따로 만들었다.
data/reports/review_checkpoints_v02_top10.md
이 Markdown 파일에는 전체 요약, 기간별 확인 포인트, rank_sort별 요약 표, KOSPI 대비 차이, Codex에게 물어볼 질문을 넣었다. HTML은 사람이 보는 리포트로 두고, Markdown은 LLM이 읽기 좋은 체크포인트 파일로 분리한 셈이다.
이렇게 나누니 역할이 조금 명확해졌다.
HTML 리포트
- 사람이 브라우저에서 복기 결과를 확인하는 용도
Markdown 체크포인트
- Codex/LLM에게 다음 실험 전 검토를 시키는 용도
Codex에게 리뷰시켜봤다
Markdown 파일을 만든 뒤, 실제로 Codex에게 리뷰를 시켜봤다. 단, 역할은 명확히 제한했다. 매수나 매도 판단을 시키지 않았고, 특정 종목을 추천하게 하지도 않았다. criteria를 자동으로 바꾸라고 하지도 않았다.
요청한 것은 하나였다.
복기 결과를 기준으로 다음 기준 실험 전에 무엇을 더 확인해야 하는지 정리해줘.
Codex가 정리한 내용은 생각보다 차분했다. 바로 기준을 바꾸자는 이야기가 아니라, 지금 데이터가 너무 적으니 추가 기간을 더 보고, rank_sort별 차이가 반복되는지 확인하고, 평균뿐 아니라 후보별 KOSPI 대비 차이 분포도 봐야 한다는 쪽이었다.
특히 평균만 보는 것에 대한 지적은 꽤 맞는 말이었다. 평균은 일부 후보가 크게 움직이면 왜곡될 수 있다. 그래서 후보별 KOSPI 대비 차이, 중앙값, 최솟값과 최댓값, 플러스/마이너스 후보 수를 함께 확인하는 것이 좋다는 의견이 나왔다.
또 관찰 당시 조건과 이후 흐름을 연결해보자는 제안도 있었다. 예를 들어 관찰 당시 volume_ratio, range_ratio_vs_index, return_pct가 이후 수익률이나 KOSPI 대비 차이와 어떤 관계가 있는지 보자는 것이다.
이건 기준을 바로 바꾸자는 말은 아니지만, 다음 실험으로 이어질 수 있는 방향이었다.
LLM이 준 답은 결론이 아니라 체크리스트였다
이번에 Codex에게 다시 읽혀본 결과가 완벽한 답을 준 것은 아니다. 오히려 결론이라기보다는 체크리스트에 가까웠다.
현재 데이터는 2개 기간뿐이다.
2026-02 관찰 → 2026-03 이후
2026-04 관찰 → 2026-05~06 이후
이 정도로는 어떤 정렬 방식이 더 낫다거나, 어떤 기준이 맞다고 판단하기 어렵다. Codex도 비슷하게 정리했다. 추가 기간을 더 보고, 상승장과 하락장, 횡보장에 가까운 구간을 나눠서 반복 확인해야 한다는 방향이었다.
그리고 여기에 내 생각도 하나 더해졌다. KOSPI 대비 차이를 볼 때도, KOSPI 하나만 기준으로 삼으면 해석이 치우칠 수 있다. 다음에는 KOSPI뿐 아니라 전체 샘플 평균과도 비교해봐야 할 것 같다.
그래서 이번에는 LLM을 “결정하는 도구”로 쓰기보다는 “다음에 확인할 항목을 정리하는 도구”로 써본 셈이다.
이 부분이 꽤 마음에 들었다. AI에게 매수/매도 판단을 맡기는 게 아니라, 내가 만든 복기 결과를 다시 읽게 하고, 다음 실험 전에 놓칠 수 있는 확인 항목을 정리하게 하는 방식이다.
이번 작업에서 정리된 흐름
이번 작업을 통해 복기 흐름이 조금 더 길어졌다.
관찰 후보 생성
→ observation CSV 저장
→ 이후 기간 복기
→ review summary CSV 생성
→ KOSPI 대비 차이 계산
→ 사람용 HTML 리포트 생성
→ LLM용 Markdown 체크포인트 생성
→ Codex에게 추가 검토 요청
처음에는 후보를 뽑는 기준이 제일 중요하다고 생각했다. 그런데 실험을 하다 보니 기준을 정하는 것보다, 기준을 바꿔가며 비교하고, 그 결과를 기록하고, 다시 검토할 수 있는 구조가 더 중요해 보였다.
특히 이번에는 후보 수익률만 보지 않고 KOSPI와 같이 봐야 한다는 점을 확인했다. 동시에 KOSPI도 완전히 중립적인 기준은 아닐 수 있다는 점을 새로 확인했다. KOSPI가 대형 반도체주 중심으로 크게 움직인 구간이라면, 후보와 KOSPI의 차이를 해석할 때 한 번 더 조심해야 한다.
아직 기준은 바꾸지 않았다
중요한 건 아직 criteria를 바꾸지 않았다는 점이다. 이번 결과를 보고 바로 v0.3을 만든 것도 아니고, volume_first나 stability_first 중 하나를 확정한 것도 아니다.
지금은 기준을 바꾸기 전 단계다. 복기 결과를 보고, KOSPI 대비 차이를 보고, Codex가 정리한 체크리스트를 참고해서 다음에 뭘 더 확인할지 정한 상태에 가깝다.
다음에 해야 할 일은 더 많은 기간을 추가하는 것이다. 지금처럼 2개 기간만 보고 판단하면 너무 성급하다. 그리고 평균만 볼 게 아니라 후보별 KOSPI 대비 차이 분포도 봐야 한다. 여기에 더해, KOSPI뿐 아니라 전체 샘플 평균과도 비교해야 한다.
하지만 그건 다음 실험으로 넘기려고 한다. 이번에는 복기 리포트를 사람도 보고, LLM도 다시 검토할 수 있는 구조를 만든 것으로 마무리하려 한다.
투자 유의사항
이 글은 개인적인 개발 실험 기록이며, 특정 종목이나 금융상품에 대한 매수·매도 추천이 아닙니다. 글에서 언급한 관찰 후보, 복기 결과, KOSPI 대비 차이는 투자 판단 기준이 아니라 데이터 실험을 위한 참고 자료입니다. 실제 투자 판단은 개인의 상황, 자금 계획, 리스크 감내 수준 등을 종합적으로 고려해 신중하게 결정해야 합니다.