뉴스를 읽는 기계
— 감성분석에서 LLM까지
가격 밖의 정보, 즉 뉴스·공시·녹취록이 숫자(팩터)가 되는 경로를 따라간다. 단어를 세는 사전에서 문맥을 읽는 Transformer, 추론하는 LLM까지 점수화 기계는 화려해지지만, 타임스탬프·기준선·대조군이라는 검증의 규율은 한 글자도 바뀌지 않는다. LLM 백테스트 고유의 함정인 지식 오염과, 그것을 심문하는 셔플 검정을 계산기로 직접 만져 본다.
기계가 뉴스를 읽고 주가를 맞혔다 — 그런데
도구가 화려해질수록 던져야 할 질문은 오히려 단순해진다. "그 백테스트, 공정한가."
ChatGPT에게 헤드라인을 보여 주자 벌어진 일
2023년 4월, 미국의 두 재무학 연구자가 짧은 논문 한 편을 공개했다. ChatGPT에게 뉴스 헤드라인을 주고 "이 뉴스는 이 회사 주가에 좋은 소식인가, 나쁜 소식인가"를 묻게 했더니, 그 답으로 만든 점수가 다음 날 수익률을 예측하더라는 내용이었다. 논문은 순식간에 화제가 되었고, "이제 뉴스는 기계가 읽는다"는 문장이 여기저기서 반복되었다.
그런데 이 강의를 여기까지 따라온 사람이라면 반사적으로 되물어야 한다. 그 백테스트에 쓰인 모델은 언제까지의 인터넷을 읽고 만들어졌는가. 평가 기간의 뉴스와 그 결말까지 이미 학습해 버린 모델이라면, 성적표가 측정한 것은 독해력인가, 아니면 결말을 아는 자의 후견지명인가. 도구는 이동평균에서 LLM까지 왔지만, "화려한 성적표일수록 의심하라"는 첫 모듈의 문장은 한 글자도 바뀌지 않았다.
이 모듈은 시리즈의 마지막 기술 모듈이다. 그래서 두 가지를 겸한다. 텍스트라는 새 데이터와 LLM이라는 새 도구를 소개하는 것, 그리고 지금까지 쌓아 온 검증의 규율 — 룩어헤드 점검·기준선 비교·대조군 사고방식 — 이 완전히 낯선 재료 앞에서도 그대로 작동함을 확인하는 것이다.
이 장에 등장하는 논문(Lopez-Lira & Tang, 2023)의 저자들 자신도 지식 오염 문제를 알고 있었다. 그래서 평가 기간을 모델의 학습 데이터가 끝나는 시점(지식 컷오프) 이후인 2021년 10월~2022년 12월로 잡았다 — 이 강의 식으로 말하면 전향 평가의 발상으로 도망친 것이다. 새 도구의 논문이 옛 규율의 설계로 자신을 방어해야 했다는 사실 자체가, 이 모듈이 하려는 이야기의 요약이다.
생각해 볼 질문
"AI가 뉴스를 읽고 투자한다"는 기사를 봤을 때, 이 모듈이 끝나면 던질 수 있어야 하는 질문 세 가지는 무엇인가. (힌트: 시각, 기준선, 그리고 모델이 언제까지를 아는가.)
텍스트가 데이터가 되기까지
정보는 숫자가 되기 전에 먼저 글로 세상에 나온다. 그러나 텍스트는 결국 또 하나의 팩터다 — 새 검증 이론은 필요 없다.
수집 · 점수화 · 합류 — 세 단계, 하나의 규율
지금까지 이 강의의 재료는 가격과 거래량뿐이었다. 그런데 가격을 움직이는 것은 정보이고, 정보는 숫자가 되기 전에 먼저 글로 나온다 — 뉴스 기사, 공시 서류, 실적발표 콜 녹취록, 소셜미디어. 이 글을 기계가 읽어 숫자로 바꿀 수 있다면, 팩터 랭킹 모듈의 팩터 목록에 "텍스트 팩터"라는 새 줄이 추가된다.
왜 텍스트가 매력적인가. 가격과 거래량은 수만 명의 퀀트가 수십 년 동안 파헤친 밭이지만, 텍스트는 정보가 가격에 반영되기 전 단계의 원재료다. 실적 서프라이즈가 숫자로 집계되기 전에 기사 제목이 먼저 뜨고, 소송 리스크가 주가에 녹아들기 전에 공시의 문장이 먼저 바뀐다. 이론적으로는 가격보다 상류(上流)의 정보다 — "이론적으로"라는 단서가 붙는 이유는 §5에서 밝혀진다. 상류일수록 모두가 먼저 퍼 가려고 몰려들기 때문이다.
한국 시장으로 눈을 돌리면 재료는 구체적이다. 금융감독원 전자공시시스템(DART)에는 상장사의 사업보고서·주요사항보고서가 발표 시각과 함께 쌓이고, 뉴스 포털에는 종목 태그가 달린 기사가 하루에도 수천 건씩 올라온다. 실적발표 콜 녹취록, 증권사 리포트 요약, 종목토론방 게시글까지 원리상 같은 파이프라인에 넣을 수 있다. 다만 출처마다 신뢰도와 타임스탬프의 품질이 크게 다르다 — 공시는 시각이 공식 기록이지만, 게시글의 작성 시각은 수정·삭제로 얼마든지 흔들린다.
용어 세 개를 여기서 정리해 두자. 감성분석(sentiment analysis)은 텍스트에 실린 긍정/부정의 정도를 숫자로 추정하는 기술이고, 자연어처리(NLP)는 사람의 언어를 컴퓨터가 다루게 하는 기술 분야의 총칭이며, 토큰(token)은 언어모델이 텍스트를 처리하는 최소 단위(대략 단어 또는 단어 조각)다. 토큰은 플랫폼 로그인에 쓰는 인증 토큰(부록 A)과 이름만 같고 전혀 다른 개념이니 주의.
③합류 — 선택 하나하나가 피처 설계다
세 단계 중 초보자가 가장 얕보는 곳은 ③합류다. 한 종목에 하루 기사가 열 건 나오면 그날의 점수는 무엇인가. 평균인가, 최신 것인가, 길이 가중인가. 뉴스가 없는 날은 0인가, 직전 값 유지인가. 이 선택 하나하나가 사실상 피처 설계이고, 선택지가 늘수록 과최적화의 문이 넓어진다.
손계산 하나. 어느 날 A사에 기사 3건이 나왔고 점수가 각각 +0.4, −0.2, +0.1이라 하자. 단순 평균 규칙이면 그날의 피처는 (0.4 − 0.2 + 0.1) ÷ 3 = +0.1이다. 그런데 셋째 기사가 장 마감 후 18시에 나왔다면? "마감 후 기사는 다음 거래일 피처로 미룬다"는 규칙을 세웠다면 그날 점수는 (0.4 − 0.2) ÷ 2 = +0.1로 우연히 같지만, 규칙 없이 섞으면 장 마감 후 정보로 그날 종가에 매매한 셈 — 모듈 1의 룩어헤드 그대로다. 이동평균 모듈의 미덕이 "파라미터가 단 2개"였음을 떠올리면, 합류 규칙은 백테스트를 돌리기 전에 정해 두고 기록하는 것이 안전하다.
"텍스트는 남들이 안 보는 데이터니까 알파가 숨어 있을 것이다."
뉴스와 공시는 정의상 모두에게 동시에 공개되는 데이터이고, 이를 기계로 읽으려는 시도는 이미 수십 년 된 산업이다. 텍스트의 가치는 데이터의 희소성이 아니라 처리의 정교함 — 남들이 놓친 뉘앙스를 더 정확히, 더 빨리, 더 싸게 숫자로 바꾸는 능력 — 에서 나온다. 그리고 그 능력의 검증은 이 강의가 줄곧 해 온 그 검증이다. 새 데이터라는 설렘이 검증의 면제부가 되는 순간이 가장 위험하다.
사전 기반 감성분석
긍정 단어와 부정 단어를 센다. 원시적이지만 투명하고, 재현 가능하고, 공짜다 — 그래서 모든 텍스트 전략의 기준선이 된다.
점수 = (긍정 − 부정) ÷ 전체 단어 수
가장 오래된 방법은 단어 사전이다. 긍정 단어 목록과 부정 단어 목록을 만들어 두고 문서에서 각각이 몇 번 나오는지 센다. 어느 기사에 긍정 단어("성장", "혁신", "돌파") 3개, 부정 단어("소송", "지연") 2개, 전체 단어 100개가 있다면 점수 = (3 − 2) ÷ 100 = +0.01. 이 점수를 종목별로 매일 쌓으면 하나의 시계열 피처가 된다.
이 세 미덕은 뒤에 나올 LLM이 정확히 반대의 약점(불투명·비재현·유료)을 갖는다는 점에서 중요하다. 이동평균이 모든 예측 모델의 기준선이었듯, 사전 방식은 모든 텍스트 전략의 기준선 자격이 있다.
+0.01이라는 숫자가 너무 작아 보이는가? 절대 크기는 중요하지 않다. 피처는 결국 횡단면에서 비교되거나 자기 과거와 비교된다(페어트레이딩 모듈의 z-값). 평소 이 종목의 점수 평균이 +0.002, 표준편차가 0.004였다면 오늘의 +0.01은 z = (0.01 − 0.002) ÷ 0.004 = 2, 즉 "평소보다 두 표준편차만큼 긍정적인 날"이라는 신호가 된다. 점수화의 목적은 절대적 감성의 측정이 아니라 비교 가능한 숫자를 만드는 것이다.
도메인이 사전을 이긴다 — Loughran & McDonald
일반 사전에서 부정적인 단어의 상당수가 금융 문서에서는 중립이다. liability(부채)는 회계 용어일 뿐 "책임 추궁"의 뉘앙스가 아니고, tax(세금)도 마찬가지다. Loughran & McDonald(2011)는 일반 심리학용 사전이 부정으로 센 단어 빈도의 약 4분의 3이 미국 기업 공시(10-K)에서는 부정적 의미가 아님을 보이고, 금융 전용 감성 사전을 만들었다. 이 사전은 지금도 이 분야의 표준 기준선이다.
두 저자는 부정·긍정뿐 아니라 불확실성(uncertainty), 소송(litigious) 같은 범주별 단어 목록도 만들었다. "불확실성 단어의 빈도"는 감성과는 또 다른 정보를 담는다 — 텍스트 하나에서 여러 팩터가 나올 수 있다는 첫 사례다.
한국어에는 함정이 하나 더 얹힌다. 한국어는 조사와 어미가 단어에 붙어 변하는 언어라("성장이", "성장을", "성장했다") 단어를 세기 전에 형태소 분석이라는 전처리가 필요하다 — "성장했다" → "성장 + 하 + 였 + 다"로 쪼개는 작업이 한국어 텍스트 팩터의 숨은 첫 관문이다. 또 영어 사전을 번역해 쓰면 Loughran-McDonald가 지적한 도메인 문제가 번역 문제와 겹쳐 이중으로 왜곡된다. 한국어 금융 텍스트용 사전을 직접 구축하려는 연구·실무 시도가 이어지는 이유다. 교훈은 하나로 수렴한다 — 언어와 도메인, 둘 다 맞는 사전이어야 한다.
출처 Loughran, T. & McDonald, B. (2011). "When Is a Liability Not a Liability? Textual Analysis, Dictionaries, and 10-Ks." Journal of Finance 66(1). doi.org/10.1111/j.1540-6261.2010.01625.x
사전이 틀리는 순간 — 단어는 세지만 문장은 못 읽는다
"손실이 예상보다 크게 줄어 흑자 전환에 성공했다"라는 헤드라인을 보자. 사전은 부정 단어("손실") 1개, 긍정 단어("성공") 1개를 세어 점수 (1 − 1) ÷ 10 = 0, 중립으로 판정한다. 그러나 사람이 읽으면 명백한 호재다.
"줄어", "흑자 전환"이 손실의 의미를 뒤집는데, 단어 빈도에는 그 관계가 없다. "not good"의 not을 보지 못하는 것(부정어 처리)도 같은 구조의 실패다. 단어를 세는 기계는 문장을 이해하지 못한다 — 이 문장 하나가 다음 절 전체의 존재 이유다.
임베딩과 Transformer
단어를 고립된 점이 아니라 문장 속 관계의 매듭으로 표현한다. 이것이 사전 방식과의 결정적 차이다.
문맥 통계가 의미 지도를 그린다
오토인코더 모듈의 임베딩이 여기서 다시 등장한다. 단어 임베딩은 각 단어를 수백 차원의 좌표로 바꾸되, 비슷한 문맥에서 쓰이는 단어들이 가까운 좌표에 놓이도록 학습한다. 그 결과 "주가"와 "증시"는 이웃이 된다.
"비슷한 문맥이면 가까운 좌표"가 통하는 이유: "___가 급등했다"라는 빈칸에 들어갈 수 있는 단어들 — 주가·증시·환율·금값 — 은 서로 바꿔 써도 문장이 성립한다. 수억 개의 문장에서 이 "바꿔 쓸 수 있음"을 통계적으로 집계하면, 의미가 비슷한 단어일수록 같은 자리에 나타나 가까운 좌표를 얻는다. 사람이 유의어를 등록하는 게 아니라 문맥 통계가 의미 지도를 그리는 것이다. 그리고 좌표가 되는 순간, 거리·유사도·군집(K-means 모듈) 같은 이 강의의 도구를 언어에도 쓸 수 있게 된다.
| 단어 쌍 | 내적 | 코사인 유사도 | 판정 |
|---|---|---|---|
| 주가 (0.9, 0.1) · 증시 (0.8, 0.2) | 0.74 | ≈ 0.99 | 거의 같은 방향 — "비슷한 말" |
| 주가 (0.9, 0.1) · 김치 (0.1, 0.9) | 0.18 | ≈ 0.22 | 먼 방향 — 무관한 말 |
표의 손계산을 확인해 보자. 코사인 유사도는 내적을 두 벡터 길이의 곱으로 나눈 값이다. 주가·증시: 내적 = 0.9×0.8 + 0.1×0.2 = 0.74, 길이는 각각 \(\sqrt{0.82}\approx 0.906\), \(\sqrt{0.68}\approx 0.825\)이므로 유사도 ≈ 0.74 ÷ (0.906 × 0.825) ≈ 0.99. 주가·김치: 내적 = 0.09 + 0.09 = 0.18, 두 길이가 모두 0.906이므로 유사도 ≈ 0.18 ÷ 0.82 ≈ 0.22. 기계가 "주가와 증시는 비슷한 말"임을 아는 방식이 이 나눗셈 하나다. 20일 수익률 조각을 저차원 좌표로 요약하던 것과 정확히 같은 발상 — 좋은 표현을 만들면 그다음 일이 쉬워진다(표현학습).
Transformer — 모든 단어가 서로를 참조한다
문장 전체의 문맥은 Transformer가 읽는다. 문장 안의 모든 단어가 서로를 참조하는 "주의(attention)" 연산을 겹겹이 쌓은 신경망 구조(Vaswani 외, 2017)로, 문맥 전체를 한 번에 보므로 "not good"의 not을 놓치지 않는다. Optiver 모듈 1위 솔루션의 부품이었고, LLM의 뼈대다.
직관은 이렇다. 앞 절의 실패 사례 "손실이 예상보다 크게 줄어"를 처리할 때, "손실"의 표현을 만들면서 문장 내 다른 모든 단어에게 "너는 나와 얼마나 관련 있니?"라고 묻고, 관련도만큼 가중해 정보를 끌어온다. "줄어"와의 관련도가 높게 학습되어 있으면 "손실"의 최종 표현은 '줄어드는 손실', 즉 호재 쪽으로 물든다. 단어를 고립된 점이 아니라 문장 속 관계의 매듭으로 표현하는 것이 사전 방식과의 결정적 차이다.
attention 한 줄의 수학. 각 단어는 세 벌의 벡터를 갖는다 — 질의(Query, "내가 찾는 것"), 열쇠(Key, "내가 가진 것"), 값(Value, "내가 건네줄 내용"). 단어 A가 단어 B를 얼마나 참조할지는 A의 질의와 B의 열쇠의 내적(위 코사인 계산의 그 내적이다)으로 정하고, 문장 전체에 대해 이 관련도를 합이 1이 되게 정규화한 뒤(소프트맥스) 그 비율로 각 단어의 값 벡터를 가중평균한다. 이 연산을 여러 관점(멀티헤드)에서 병렬로 수행하고 수십 층을 쌓은 것이 Transformer다.
2017년 논문의 제목 "Attention Is All You Need"는 당시 표준이던 순환 신경망(순환신경망 모듈의 그 구조 — 문장을 한 단어씩 순서대로 읽는다)을 이 병렬 연산 하나로 대체할 수 있다는 선언이었다. 병렬화 덕분에 학습 규모를 폭발적으로 키울 수 있게 된 것이 곧이어 LLM 시대를 열었다.
출처 Vaswani, A. 외 (2017). "Attention Is All You Need." NeurIPS 2017. arxiv.org/abs/1706.03762
FinBERT — 국어를 먼저 배우고, 금융 독해를 나중에 배운다
금융 텍스트에 특화된 FinBERT(2019) 같은 모델은 문장 단위 감성분석에서 사전 방식을 크게 앞선다. 만드는 방법은 두 단계다. 방대한 일반 텍스트로 언어 능력 자체를 기르는 사전학습(pre-training), 그 위에 금융 감성 라벨을 단 소량의 데이터로 특화시키는 파인튜닝(fine-tuning).
이 2단계 구조가 강력한 이유: 라벨 달린 금융 문장은 몇천 문장 수준으로 귀하다. 그것만으로 신경망을 처음부터 가르치면 모듈 2에서 본 과적합이 필연이다. 그런데 국어 실력(사전학습)을 인터넷 전체에서 공짜로 먼저 길러 두면, 귀한 문제집은 "금융이라는 방언"에 적응하는 데만 쓰면 된다. 라벨이 비싼 도메인일수록 사전학습의 덕을 크게 본다 — 금융에서 이 패러다임이 빠르게 표준이 된 이유다.
출처 Araci, D. (2019). "FinBERT: Financial Sentiment Analysis with Pre-trained Language Models." arxiv.org/abs/1908.10063
LLM — 물어보면 되는 시대
사전도 파인튜닝도 없이 질문 하나로 과제를 정의한다. 무너진 것은 정확도의 한계가 아니라 과제 정의의 비용이다.
예측이라는 단순한 목표가 이해를 강제한다
LLM(대형 언어모델)은 "다음 토큰 맞히기"라는 단 하나의 목표로 인터넷 규모의 텍스트를 학습한 초대형 신경망이다. 그 단순한 목표에서 요약·번역·추론 같은 범용 능력이 나타났다. ChatGPT, Claude 등이 대표 사례다.
"금리가 오르면 성장주의 밸류에이션은 대체로 ___"의 빈칸을 잘 맞히려면 문법만으로는 부족하고, 금리와 할인율과 성장주의 관계를 알아야 한다. 인터넷 규모의 텍스트에는 이런 빈칸이 사실상 무한히 있고, 그것을 전부 잘 맞히도록 압박받은 모델은 결국 세상 지식과 논리의 근사물을 파라미터에 새긴다. 예측이라는 단순한 목표가 이해를 강제하는 것 — 표현학습에서 본 원리의 극한판이다.
LLM의 등장은 감성분석의 형태를 바꿨다. 사전도 파인튜닝도 없이 그냥 물어보면 된다: "다음 헤드라인은 ○○사의 주가에 좋은 소식인가, 나쁜 소식인가, 판단 불가인가?" 이런 지시문이 프롬프트다. Lopez-Lira & Tang(2023)은 ChatGPT에게 뉴스 헤드라인을 이렇게 분류시켜 만든 점수가 다음 날 수익률을 예측함을 보고해 큰 주목을 받았고, 금융 텍스트를 대량 포함해 학습한 BloombergGPT(2023) 같은 전용 모델도 등장했다.
LLM의 답변을 점수로 바꾸는 손계산. 헤드라인 5건을 물어 "좋음, 좋음, 판단 불가, 나쁨, 좋음"을 받았다면 좋음 = +1, 판단 불가 = 0, 나쁨 = −1로 부호화해 그날 그 종목의 점수는 (1 + 1 + 0 − 1 + 1) ÷ 5 = +0.4. 형태는 §2의 사전 점수와 완전히 같은 (날짜, 종목, 숫자)다. 점수화 기계만 바뀌었을 뿐, 이후의 합류·검증 파이프라인은 전부 재사용된다 — 그림 1의 가운데 상자만 갈아 끼운 것이다.
출처 Lopez-Lira, A. & Tang, Y. (2023). "Can ChatGPT Forecast Stock Price Movements?" arxiv.org/abs/2304.07619 · Wu, S. 외 (2023). "BloombergGPT: A Large Language Model for Finance." arxiv.org/abs/2303.17564
프로그래밍이 코드에서 말로 — 그리고 말도 파라미터다
이 방식의 진짜 새로움은 정확도가 아니라 과제 정의의 비용이 무너졌다는 데 있다. 사전 방식은 단어 목록을 만드는 데 몇 달, FinBERT는 라벨 데이터와 학습 인프라가 필요했다. LLM은 질문 문장 하나를 고쳐 쓰는 것으로 "감성"에서 "공급망 리스크 언급 여부"로, "경영진 어조의 자신감"으로 과제를 즉시 갈아 끼운다.
다만 말은 코드보다 모호하다. 프롬프트의 사소한 표현 차이("좋은 소식인가" vs "주가가 오를까")가 점수 분포를 바꿀 수 있으므로, 프롬프트 자체가 이동평균의 길이 같은 조절 파라미터가 된다 — 즉 과최적화의 대상이 된다. 프롬프트를 열 가지 시험해 가장 좋은 성적 하나만 보고하는 것은, 파라미터 1,000개를 돌려 최고만 떼어 보여 주는 것과 같은 짓이다.
"LLM이 최신이니 감성 점수도 당연히 사전 방식보다 낫다."
문장 하나하나의 독해력은 분명 LLM이 압도한다. 그러나 전략의 성과는 독해력만으로 정해지지 않는다. 수백만 건 처리의 비용, 답이 흔들리는 재현성 문제, 그리고 §5의 지식 오염까지 합산하면, 종목·날짜 단위로 평균 낸 신호의 품질 차이가 생각만큼 크지 않은 경우도 많다. 도구의 세대가 아니라 파이프라인 전체의 성적으로 비교해야 하고, 그 비교의 출발점(기준선)이 바로 투명하고 공짜인 사전 방식이다.
환각 — 틀린 답이 맞는 답과 똑같이 유창하다
환각(hallucination)은 LLM이 그럴듯하지만 사실이 아닌 내용을 자신 있게 생성하는 현상이다. 숫자와 근거가 생명인 금융 응용에서 가장 위험한 실패 양상이다.
환각의 무서움은 틀린다는 사실이 아니라 틀린 답이 맞는 답과 똑같이 유창하다는 데 있다. 실적 요약을 시키면 없는 매출 숫자를 자연스러운 문장 안에 지어 넣고, 근거 공시를 물으면 존재하지 않는 보고서 번호를 만들어 낸다. 사람의 거짓말은 머뭇거림이라도 있지만 LLM의 환각에는 그런 신호가 없다.
- 방어 ① — 생성된 숫자·인용을 원문과 대조하는 검증 단계를 파이프라인에 넣는다
- 방어 ② — 자유 서술 대신 "좋음/나쁨/판단 불가"처럼 선택지를 좁힌 과제로 물어, 환각의 여지 자체를 줄인다
점수 계산기 · 셔플 검정
텍스트 팩터의 시작(감성 점수)과 끝(검증의 z-판정)을 계산기 두 개로 직접 만져 본다.
사전 기반 감성 점수 — 단어를 세면 팩터가 된다
점수 = (긍정 P − 부정 N) ÷ 전체 단어 수 T
목표 — §2의 사전 기반 점수가 손으로 검산되는 단순한 나눗셈임을 확인하고, 같은 P−N 차이라도 문서 길이 T에 따라 점수가 달라지는 구조를 본다.
조작 안내 — 기본값(P=3, N=2, T=100)에서 시작해 T만 500까지 늘려 본다. 다음으로 P와 N을 같은 값으로 맞춰 본다. 관찰 포인트 — ① 기본값에서 점수는 정확히 +0.0100 — §2 본문의 손계산과 같다. ② P−N이 같아도 T가 5배가 되면 점수는 1/5로 줄어든다 — 긴 문서일수록 같은 단어 수의 "농도"가 옅어진다는 뜻이고, 이 정규화가 문서 길이가 제각각인 뉴스들을 비교 가능하게 만든다. ③ P=N이면 점수는 문서 길이와 무관하게 0 — 이 계산기는 "손실이 크게 줄었다" 같은 문장도 0으로 읽는다는 §2의 한계를 그대로 갖고 있다.
셔플 검정 z — 성과의 원천이 정말 텍스트인가
z = (원래 샤프 S − 셔플 평균 μ) ÷ 셔플 표준편차 σ
목표 — 헤드라인과 종목·날짜의 짝을 무작위로 섞은(연결을 끊은) 백테스트 여러 번의 분포와 원래 성과를 비교해, 원래 성과가 우연 범위를 벗어나는지 z-값으로 판정한다. §5 음성 대조군의 채점 방식이다.
조작 안내 — 기본값(S=1.2, μ=0, σ=0.3)에서 시작한다. 다음으로 μ를 1.1까지 올려 "섞었는데도 성과가 나오는" 상황을 만들어 본다. 마지막으로 σ를 1.0까지 키워 본다. 관찰 포인트 — ① 기본값에서 z = 4.0으로 |z| > 2 — 우연으로 보기 어렵다(진짜 텍스트 신호일 가능성). ② μ가 S에 가까워지면 z가 2 아래로 떨어진다 — 연결을 끊었는데도 성과가 남는다는 뜻이므로, 텍스트가 아니라 유니버스 선택이나 타임스탬프 누수가 성적을 만들고 있음을 의심해야 한다. ③ 같은 S−μ 차이라도 σ가 크면 z는 작아진다 — 셔플 성과가 원래 널뛰는 실험에서는 웬만한 성과 차이가 증거가 되지 못한다.
이 판정기는 §5의 음성 대조군을 숫자로 채점하는 도구다. |z| > 2라는 문턱은 셔플 분포가 대략 정규분포라면 우연히 넘을 확률이 5% 미만이라는 관례적 기준으로, 페어트레이딩 모듈에서 스프레드를 판정하던 그 z-값과 같은 문법이다. 주의할 점 하나 — 셔플을 100회가 아니라 10회만 돌리면 μ와 σ 자체가 부정확해서 z가 신뢰를 잃는다. 검정의 신뢰도는 셔플 횟수를 늘리는 데서 온다.
텍스트 전략의 함정
새로운 검증 이론은 필요 없다. 다만 다섯 개의 함정이 새 옷을 입었고, 그중 첫째 — 지식 오염 — 는 기존 방어가 통하지 않는다.
지식 오염 — 미래가 데이터가 아니라 파라미터 속에 있다
2023년까지의 데이터로 학습된 LLM에게 2020년의 뉴스를 주고 "주가에 좋은가?"를 묻는 백테스트를 상상하라. 모델은 그 회사가 그 후 어떻게 되었는지 이미 안다. 학습 데이터 안에 미래가 들어 있기 때문이다. 이것이 지식 오염(knowledge contamination) — 모델의 사전학습 데이터에 평가 기간의 정보가 포함되어 생기는 룩어헤드다.
구체적으로 그려 보자. 2020년 3월 "○○항공, 코로나로 국제선 90% 감편"이라는 헤드라인을 2023년판 LLM에게 준다. 모델은 이 항공사가 이후 정부 지원으로 살아남았는지, 백신 보급 후 여행 수요가 폭발했는지를 학습 데이터로 이미 "겪었다". 그 기억이 답에 스며들면, 백테스트 성적은 뉴스 독해력이 아니라 결말을 아는 자의 후견지명을 측정한 것이 된다. 레짐 스위칭 모듈의 스무딩이 "미래를 보고 과거를 색칠"하던 것과 정확히 같은 구조다.
"코드에 미래 데이터를 읽는 줄이 없고 입력 타임스탬프가 완벽하면, 룩어헤드는 없다."
지식 오염은 이 점검을 통째로 우회한다. 엔진의 하루 지연도, 입력 시점 검사도 입력 데이터의 시점만 검사할 뿐, 모델 파라미터에 새겨진 기억까지는 검사하지 못한다(부록 B의 삼중 방어가 전부 뚫리는 유일한 경로다). 해법은 사실상 하나 — 모델의 지식 컷오프 이후 기간으로만 평가하거나(전향 평가로 돌아가는 것), 그 시점까지의 데이터로만 학습된 시점 고정 모델을 쓰는 것이다.
자기가 쓰는 모델이 평가 기간을 "기억"하는지 간단히 심문할 수 있다. 평가 기간에 일어난 사건을 텍스트 없이 직접 물어보라 — "2020년 3월 ○○항공에 무슨 일이 있었나?" 모델이 술술 답한다면 그 기간은 이미 오염된 것이다. 연구자들은 더 정교한 방법도 쓴다. 사건의 결말을 아는 경우와 모르는 경우의 채점 결과를 비교하거나, 지식 컷오프 직전·직후 기간의 예측 성능이 뚝 떨어지는지 본다 — 진짜 능력이라면 완만해야 하고, 기억이라면 절벽이 생긴다.
근본적 해법으로는 특정 시점까지의 텍스트로만 학습한 시점 고정 모델을 시기별로 여러 벌 만들어, 각 백테스트 구간에 그 시점의 모델만 쓰는 접근이 연구되고 있다. 비용이 크지만 "모델의 기억"이라는 누수 경로를 원천 차단하는 유일하게 깨끗한 방법이다. 결국 이것은 시점 데이터(point-in-time) 원칙을 모델 파라미터에까지 확장한 것에 지나지 않는다 — 원칙은 하나이고, 적용 대상이 넓어질 뿐이다.
타임스탬프 · 재현성 · 알파 소멸 · 비용
나머지 네 벌의 함정은 이 강의에서 이미 만난 것들의 새 옷이다. "그 시점에 그 문서를 정말 볼 수 있었나"가 텍스트에서는 언제나 첫 질문이다.
| 함정 | 새 옷을 입은 모습 | 방어 |
|---|---|---|
| 타임스탬프 | 최초 보도·수정·DB 수록 시각이 다르다. 수정된 제목을 최초 보도 시각과 짝지으면 몇 시간짜리 미래가 스며든다 | 여러 시각 중 가장 늦은 것을 가용 시각으로. 장 마감 후 문서는 무조건 다음 거래일 신호로 |
| 재현성 | 상용 LLM은 버전이 예고 없이 바뀌고 같은 질문에 답이 달라진다. "시드 고정"이 통하지 않는 세계 | 파이프라인을 두 토막으로 — 호출부는 전부 기록, 채점·백테스트부는 저장된 출력만으로 재현 |
| 알파 소멸 | 공개 뉴스 + 범용 LLM = 모두가 같은 입력에 같은 기계. 신호가 동질적이라 속도 경쟁이 된다 | 논문 속 텍스트 알파는 발표 시점에 이미 약해져 있다고 가정하고 검증한다 |
| 비용 | 수백만 건 문서의 LLM 호출료. 빼먹으면 성적표만 화려해진다 | 거래비용처럼 점수화 비용도 손익계산서에 올린다 |
호출 비용 손계산. 하루 2,000건의 헤드라인을 10년치 백테스트하면 문서 약 500만 건이다. 호출당 비용을 보수적으로 10원이라 잡아도 5,000만 원 — 백테스트 한 번에 말이다. 프롬프트를 세 가지 버전으로 실험하면 1억 5천만 원이 되고, 운용 단계에서도 매일 2만 원씩의 데이터 비용이 성과에서 차감된다. 거래비용이 빠진 백테스트가 공정하지 않듯, 점수화 비용도 올려야 공정한 성적표다.
재현성 방어의 요체는 파이프라인을 두 토막으로 자르는 것이다. 앞 토막(LLM 호출)은 비재현적임을 인정하고 호출 일시·모델 버전·프롬프트·원문·출력을 통째로 저장한다. 뒤 토막(점수 부호화 → 합류 → 백테스트)은 저장된 출력 파일만 읽게 만들어 완전히 재현 가능하게 유지한다. 이렇게 하면 6개월 뒤 모델이 바뀌어도 "당시의 출력"으로 결과를 재검증할 수 있고, 새 모델과의 성능 비교도 공정해진다. 알파 소멸 쪽은 "발표 후 수익률이 크게 줄어든다"는 McLean & Pontiff(2016)의 실증이 기준이고, 텍스트에서는 그 효과가 더 가혹하리라 가정하는 편이 안전하다.
출처 McLean, R. D. & Pontiff, J. (2016). "Does Academic Research Destroy Stock Return Predictability?" Journal of Finance 71(1). doi.org/10.1111/jofi.12365
양성 대조군과 음성 대조군 — 위음성과 위양성을 나눠 잡는다
그러면 검증은 어떻게 하나. 대조군 사고방식(부록 B)이 그대로 이식된다. 둘 다 통과해야 비로소 "텍스트가 알파를 만든다"는 문장을 쓸 자격이 생긴다.
셔플 검정의 채점이 실습 ②의 z-판정이다. 원래 데이터로 샤프 1.2가 나온 전략을, 셔플 100회의 분포(평균 0.0, 표준편차 0.3)와 비교하면 z = (1.2 − 0) ÷ 0.3 = 4 — 우연으로 보기 어렵다. 반대로 섞었는데도 1.1이 나온다면 텍스트는 알파와 무관하다는 뜻이다.
모듈로 만들어 보기 — 배관부터, 한 번에 한 가지만
이 장은 아직 플랫폼에 코드 모듈이 없는 이론 장이다. 입력은 (날짜, 종목, 감성 점수) 테이블 하나, 전략은 팩터 랭킹 파이프라인에 텍스트 피처 한 줄을 더하는 형태가 자연스럽다. 구현은 다음 순서를 권한다.
- 배관 공사 — 텍스트 없이 임의의 난수 점수(시드 고정)로 테이블을 만들어 합류·백테스트·리포트가 도는지부터 관통시킨다
- 사전 점수 + 양성 대조군 — 난수 자리에 사전 기반 점수를 넣고, 가짜 뉴스 주입으로 수확 능력을 검사한다
- 음성 대조군 — 셔플 검정을 통과시킨다
- 그제서야 업그레이드 — FinBERT든 LLM이든 점수화 기계를 바꾸고, 각 단계의 성과를 같은 잣대로 비교한다. 기준선은 언제나처럼 이동평균이다
이 순서의 미덕은 문제가 생겼을 때 "점수가 나쁜가, 배관이 새는가"를 즉시 분리할 수 있다는 것 — 이 강의가 줄곧 강조한, 한 번에 한 가지만 바꾸는 실험 설계다. 뉴스를 읽는 화려한 기계도, 이동평균을 이기지 못하면 존재를 증명하지 못한 것이다.
퀴즈와 정리
답을 보기 전에 먼저 스스로 답해 본다. 전부 이 모듈 안에서 다룬 내용이다.
일반 감성 사전을 금융 공시에 그대로 쓰면 안 되는 이유는?
2023년까지 학습된 LLM으로 2020년 뉴스를 채점하는 백테스트의 문제는 무엇이고, 왜 기존 룩어헤드 방어로 못 막는가?
셔플 검정(음성 대조군)에서 성과가 유지된다면 무엇을 의심해야 하나?
어느 기사에 긍정 단어 4개, 부정 단어 1개, 전체 단어 150개가 있다. 사전 기반 감성 점수는?
"적자 폭이 크게 줄었다"는 헤드라인을 사전 방식이 부정으로 읽는 이유와, Transformer가 이를 바로잡는 원리는?
양성 대조군(가짜 뉴스 주입)을 통과하지 못한 텍스트 전략에서 의심할 곳은?
① 텍스트는 결국 또 하나의 팩터다. 점수화 기계가 바뀌어도(사전 → Transformer → LLM) 수집·합류의 규율 — 타임스탬프와 룩어헤드 — 은 그대로다.
② 도메인이 사전을 이긴다. 금융 텍스트에는 금융 전용 사전(Loughran-McDonald), 한국어라면 형태소 분석까지.
③ 사전 방식의 세 미덕(투명·재현 가능·무료)은 LLM의 세 약점과 정확히 대칭이다 — 그래서 사전이 기준선이다.
④ LLM 백테스트의 제1 함정은 지식 오염이다. 기존 방어로는 못 막으며, 해법은 지식 컷오프 이후의 전향 평가 또는 시점 고정 모델뿐이다.
⑤ 셔플 검정은 텍스트 전략의 음성 대조군이다. 연결을 끊어도 성과가 나오면 누수를 의심하라. LLM 파이프라인은 두 토막으로 — 호출부는 전부 기록, 채점부는 저장된 출력만으로 재현.
참고문헌
수치와 일화는 아래 원문 기준으로 서술했다. 링크는 공개 원문이 확실한 것만 달았다.
텍스트 · 감성 사전
- Loughran, T. & McDonald, B. (2011). "When Is a Liability Not a Liability? Textual Analysis, Dictionaries, and 10-Ks." Journal of Finance 66(1). doi.org/10.1111/j.1540-6261.2010.01625.x — 일반 사전의 부정 단어 상당수가 금융 공시에서는 중립임을 보인 실증. 금융 전용 사전의 표준.
모델 · 구조
- Vaswani, A. 외 (2017). "Attention Is All You Need." NeurIPS 2017. arxiv.org/abs/1706.03762 — Transformer 원 논문.
- Araci, D. (2019). "FinBERT: Financial Sentiment Analysis with Pre-trained Language Models." arxiv.org/abs/1908.10063 — 사전학습 + 금융 파인튜닝의 대표 사례.
- Wu, S. 외 (2023). "BloombergGPT: A Large Language Model for Finance." arxiv.org/abs/2303.17564 — 금융 특화 LLM.
LLM과 시장 · 알파 소멸
- Lopez-Lira, A. & Tang, Y. (2023). "Can ChatGPT Forecast Stock Price Movements? Return Predictability and Large Language Models." arxiv.org/abs/2304.07619 — 도입부의 그 논문. 평가 기간을 모델 지식 컷오프 이후로 잡아 지식 오염을 회피했다.
- McLean, R. D. & Pontiff, J. (2016). "Does Academic Research Destroy Stock Return Predictability?" Journal of Finance 71(1). doi.org/10.1111/jofi.12365 — 학술 발표 이후 팩터 수익률이 크게 줄어든다는 실증.
이 모듈은 플랫폼에 코드 모듈이 없는 이론 모듈이며, 본문·실습의 수치는 전부 손계산 예시다(플랫폼 실측치가 아니다). 실습 ②의 샤프·셔플 수치도 개념 설명용 가상 예시로, 실제 투자 성과를 시사하지 않는다. 인용 원칙: 연도는 발표 기준, 확신이 없는 서술은 "~로 알려져 있다"로 구분했다.