논문 수식대로 재현했지만 SAE의 희소성은 작동하지 않았다
첫 번째 대조 모델의 학습이 끝난 뒤 SAE와 밀집 대조군(DenseAE, λ=0)의 가중치를 비교했다. 이 구현에서는 인코더와 디코더가 같은 파라미터를 공유한다. 결합 가중치의 코사인 유사도는 0.999998이었다. 즉 희소성 페널티가 있는 모델과 없는 모델이 사실상 같은 모델이었다. Hoyer 희소도(0~1 범위이며 값이 클수록 더 희소함)도 0.479 대 0.478이었다. 5개 fold를 합산한 예측 IC는 둘 다 +0.0073이었고 포트폴리오 성과도 거의 겹쳤다.
첫 번째 비교에서 이런 결과가 나올 줄은 몰랐다. 내가 재현하려던 논문에서 희소성은 전체 설명을 움직이는 엔진이다. L1 페널티가 코드를 충분히 희소하게 만들기 때문에 재구성 순위로 선택한 바스켓끼리 상관이 낮아지고 변동성도 내려간다는 논리다. 희소성이 애초에 나타나지 않았다면, 뒤에 나오는 숫자가 비슷하더라도 논문의 메커니즘을 검증한 것은 아니다.
이 글은 재현의 전 과정을 기록한다. 무엇이 일치했고 무엇이 일치하지 않았는지, 그리고 일치하지 않은 부분에서 증거가 원인을 어디까지 가리키는지를 정리한다.
논문이 주장한 내용과 증거 수준
워싱턴대학교의 Han과 Qu가 작성한 논문은 ICAIF ‘26에 채택됐다. 연구 질문은 구체적이다. 일별 횡단면 수익률을 단층 Sparse Autoencoder에 입력하고, 재구성 값으로 자산 순위를 매겨 역추세 5분위 포트폴리오를 만들었을 때, 희소성 자체 때문에 위험이 낮아지는가?
저자들은 주요 결과를 세 단계로 구분한다. 이 구분은 중요하다.
- 엄격하게 확인된 결과: 처음 748일을 사용해 K=128, λ=0.1을 사전 선택한 뒤, 5개 확인 fold 모두에서 SAE 바스켓의 rank 척도 변동성이 같은 K의 PCA보다 20~26% 낮았다.
- 탐색적 결과: K=64에서는 변동성이 32~37% 낮았다(money 척도 20.0% 대 27.3%). 하지만 선택 구간이 초기 테스트 fold와 겹쳤기 때문에 탐색적 증거로만 봐야 한다. 제시된 메커니즘은 바스켓 내 평균 쌍별 상관이 0.008로 PCA의 0.039보다 낮다는 것이다.
- 저자가 명시적으로 부정한 결과: SAE는 가장 단순한 동일일 반전 기준선보다 Sharpe를 추가하지 못했다(money 척도 차이 −2.48). 팩터 정체성은 무작위 seed를 넘어 재현되지 않았다(디코더 매칭 cosine 0.13, 무작위 사전 기준 0.117). Ledoit–Wolf 최소분산 overlay는 naive 대비 SAE의 변동성 우위 중 약 73%를 회복했다.
저자들은 세 가지 한계도 직접 적었다. 신호를 t일 종가에 만들고 같은 종가로 체결하므로 “실제로 실행할 수 없다”. 전체 구간에서 거래 비용을 제외했다. 암호화폐 유니버스 선정에 전체 기간 정보가 사용되어 point-in-time 방식이 아니다. 또 하나 중요한 정보는 공개되지 않았다. 2026-11-01 기준 논문과 arXiv 페이지 모두 코드 링크가 없었고, 433개 자산의 정확한 목록도 공개되지 않았다. 따라서 재현은 인쇄된 프로토콜을 직접 다시 구현해야 하며 패널이 달라질 수밖에 없다. 이 차이가 내 결론의 범위를 결정한다. 여기서 검증하는 것은 주장의 이전 가능성이지, 저자들이 자기 패널에서 수행한 실험의 정오가 아니다.
내 재현 설정: 차이부터 공개한다
데이터는 Binance 공개 API의 현물 USDT 일봉을 사용했다. 계정이나 API 키는 필요하지 않았다. 유니버스 고정 규칙은 학습 전에 확정했다. 거래 중인 519개 페어에서 20222024 구간 데이터가 있는 285개를 추리고, 관측일이 252일 이상인 245개를 남겼다. 이후 일별 quote volume 중앙값 상위 150개를 고정했고, 학습 전에 목록과 해시를 저장했다. 하루에 사용 가능한 자산 수는 89150개, 평균 119개였다.
논문과 다른 점은 명시한다. 자산은 433개가 아니라 150개이며 유동성 상위 집합이다. 기간은 20192024가 아니라 20222024다. 자산 목록은 현재 거래 중인 종목에서 만들어졌기 때문에 생존 편향이 있다. 논문은 상장폐지 자산을 마지막 호가까지 유지했다. 생존 편향 필터링은 이 패널의 변동성을 체계적으로 낮춘다. 이 글의 핵심 비교 대상이 바로 변동성이다. 이 편향의 크기는 사후에 복원할 수 없다. 상장폐지 자산은 현재 거래 목록에 없으므로 여기서 셀 수 없기 때문이다. 패널 처리 방식은 논문을 따랐다. 일별 횡단면 1/99% winsorize, 결측값은 최대 3일까지 forward-fill한 뒤 mask, clipped inverse-normal rank 변환을 적용했다. 선택 구간은 첫 500개 수익률 일자(학습 450 / 검증 50)다. K∈{32,64,128} × λ∈{10⁻³,10⁻²,10⁻¹} × 학습률 격자에서 검증 재구성 오차만으로 설정을 선택했다. 이후 expanding walk-forward 5개 fold를 사용했고 각 fold는 신호일 119개다. 각 fold의 마지막 신호일은 다음 날 수익률이 필요하므로 제외해 평가일은 총 590일이다. 포트폴리오는 재구성 순위 기반 역추세 5분위, 동일 가중치, 각 leg gross 1이며 t+1 수익률이 없는 경우 0으로 처리했다. 이 선택은 논문과 같다.
사전 등록한 게이트도 두 가지다. 중단 조건은 단순하다. 축소 유니버스에서 변동성 방향이 재현되지 않으면 non-replication으로 보고한다. 유니버스를 확대하거나 부호를 찾을 때까지 파라미터를 조정하지 않는다. 보정 게이트는 진단 결과 λ가 작동하지 않는 것으로 나타난 경우에만 선택 구간에서 “희소도 목표를 충족하고 재구성 비용을 통제하는” λ 하나를 골라 추가 실험군을 실행하도록 했다. 두 조건을 만족하는 λ가 없으면 실행하지 않는다. 테스트 세트를 본 뒤 기준을 바꾸는 것도 허용하지 않았다.
첫 번째 이상 징후: 이 패널에서 λ는 사실상 작동하지 않는다
먼저 설정 선택 결과를 보자. K=128에서 검증 재구성 MSE는 λ에 따라 거의 변하지 않았다. λ=10⁻³에서 0.3374, 10⁻²에서 0.3375, 10⁻¹에서 0.3380이다. 규칙에 따라 선택된 엄격 설정은 K=128, λ=10⁻³이었다. 저자들의 패널에서는 같은 K를 선택했지만 가장 강한 λ=0.1이 선택됐다. 같은 선택 기준인데 두 패널의 페널티 강도 선호는 반대였다. 재구성 오차만으로 선택하면 L1은 재구성을 악화시키는 방향이므로 가장 약한 페널티가 구조적으로 유리하다. 내 선택이 10⁻³인 것은 규칙상 거의 필연적이었다. 반면 논문은 동일하다고 설명한 기준에서 가장 강한 0.1을 선택했다. 이 긴장은 기록할 필요가 있다. 저자들의 패널에서는 강한 페널티가 실제로 재구성을 해치지 않았던 것인지, 아니면 선택 과정의 일부가 공개되지 않은 것인지.
그래디언트 측정은 더 직접적이다. 논문의 탐색 설정인 λ=10⁻²에서 L1 항의 가중치 평균 그래디언트 크기는 5.5×10⁻⁶, 재구성 항은 2.1×10⁻³이었다. 페널티는 주 항의 약 1/390에 불과해 같은 규모가 아니다. 별도 진단(첫 500일로 재학습하고 첫 fold 구간에서 평가)에서는 논문 탐색 설정 10⁻²의 100배인 λ=1.0까지 올려 스트레스 테스트를 했다. 그래도 Hoyer는 0.474에서 0.514로만 증가했다. 모델은 여전히 희소하다고 보기 어려웠다.
보정 게이트를 통과한 λ는 없었다. λ∈{0.3,1,3,10,30} 스캔(K=64, 선택 구간 기준)에서 Hoyer는 0.483에서 0.619까지 올라간 뒤 포화됐고, 검증 MSE는 DenseAE 기준선 0.554에서 0.918로 66% 증가했다. 내 기준은 “DenseAE보다 Hoyer가 0.15 이상 높고, MSE는 1.2배 이내”였다. λ=30에서 Hoyer 0.619는 0.618 기준을 간신히 넘는다(이 기준에서 DenseAE 0.468에 0.15를 더한 값). 그러나 MSE 0.918은 허용 상한 0.664의 약 1.4배다. 사전 등록 규칙에 따라 보정 실험군은 실행하지 않았다. 다만 “페널티가 부족했다”는 설명은 절반만 맞다. 같은 프로토콜에서 λ=30의 페널티 그래디언트는 이미 재구성 그래디언트의 약 7.7배였다. 강도는 충분한데 Hoyer는 0.62 부근에서 포화되고 재구성이 먼저 무너졌다. 이 패널에서는 논문 범위의 λ가 작동하지 않았고, 그 범위를 넘어서면 다른 상한이 나타났다. 이 데이터에서 재구성 품질을 유지하면서 코드를 훨씬 더 희소하게 만드는 것은 어려워 보인다. 상한의 구체적인 원인은 측정하지 않았으므로 미확정으로 남긴다.
같은 수식과 같은 λ 격자인데 논문 패널에서는 바스켓 내 상관을 5분의 1로 낮추고, 여기서는 모델조차 바꾸지 못하는 이유는 무엇일까? 측정으로 확정할 수 있는 것은 페널티 그래디언트와 재구성 그래디언트의 상대적 규모다. 그다음은 추론이며 경계를 표시한다. L1의 상대 강도는 코드의 전형적인 스케일에 달려 있고, 코드 스케일은 자산 수와 횡단면 구조에 따라 달라진다. 논문은 20192024년 433개 자산, 내 패널은 20222024년 유동성 상위 150개 자산이다. λ=0.1은 저자들 스케일에서는 유효한 용량이지만 내 스케일에서는 사실상 플라시보처럼 작동할 수 있다. 배제할 수 없는 다른 설명도 있다. 공개되지 않은 구현 세부 사항 때문에 실제 페널티 효과가 인쇄된 수식과 다를 수 있다. 예를 들어 미니배치 학습이나 loss reduction 방식이다. 인쇄된 수식은 재구성 항을 자산 수 N으로 sum할지 mean할지, L1 항을 은닉 차원 K로 sum할지 mean할지 지정하지 않는다. 이 두 분모의 조합만으로도 유효 페널티 강도에 수백 배의 암묵적 스케일 차이가 생길 수 있다. 공식 코드가 없으므로 이 가능성은 남겨두되 저자에 대한 결론으로 사용하지 않는다.
이런 추론과 무관하게 말할 수 있는 점이 하나 있다. 인쇄된 수식에 충실한 표준 구현에서는 논문의 λ를 보정 없이 다른 패널로 옮길 수 있는 상수로 취급할 수 없다. 자신의 데이터에 λ=0.1을 그대로 적용한 뒤 “SAE의 분산 효과”를 보고한다면, 실제로는 한 번도 작동하지 않은 메커니즘을 보고하고 있을 수 있다.
변동성은 방향만 남고, 메커니즘은 반대로 나타났다
5개 fold 집계(590일, money 기준):
| 방법 | 연율화 변동성 | Sharpe |
|---|---|---|
| naive 동일일 반전 | 31.39% | +1.69 |
| PCA K=64 | 29.54% | +1.75 |
| PCA K=128 | 30.39% | +1.32 |
| SAE K=64 (λ=10⁻²) | 29.90% | +0.65 |
| SAE K=128 (λ=10⁻³, 선택) | 28.97% | +0.96 |
| DenseAE K=64 (λ=0) | 29.96% | +0.65 |
SAE-128의 변동성은 PCA-128보다 4.7% 낮았다(fold별 −4.0, −4.2, +3.1, −3.0, −10.0으로 5개 중 4개 fold에서 논문과 같은 방향). 하지만 논문의 엄격 결과인 −20~26%의 약 5분의 1이다. 통계적 세부 사항도 분명히 해야 한다. fold별 차이의 평균은 −3.6%(일별 관측치를 합친 −4.7%와 다른 값이다. 전자는 fold 평균, 후자는 일별 데이터 pooling 기준)이고 t값은 약 −1.7(n=5)이다. 유의하다고 할 수 없다. 여기서 가능한 결론은 방향과 규모까지다. K=64는 방향조차 재현하지 못했다. SAE 변동성은 PCA보다 1.2% 높았다. 앞 절을 보면 놀라운 결과는 아니다. λ=10⁻³로 선택된 “SAE”는 거의 밀집 모델이므로 PCA에 대한 작은 우위는 희소성의 효과라기보다 일반적인 오토인코더 재구성의 특성일 가능성이 크다.
fold별 변동을 확인하기 위해 money 기준 연율화 변동성도 표로 정리했다.
| 방법 | Fold 1 | Fold 2 | Fold 3 | Fold 4 | Fold 5 |
|---|---|---|---|---|---|
| naive 반전 | 22.12% | 31.31% | 32.00% | 31.37% | 37.93% |
| PCA K=64 | 21.71% | 30.42% | 27.16% | 26.53% | 39.22% |
| SAE K=64 | 20.16% | 30.32% | 30.54% | 30.56% | 35.91% |
| PCA K=128 | 21.65% | 30.88% | 29.05% | 29.51% | 38.26% |
| SAE K=128 | 20.78% | 29.58% | 29.95% | 28.61% | 34.42% |
메커니즘 측면은 더 명확하다. 논문 정의대로 rank 척도에서 직전 60일 구간의 바스켓 내 평균 쌍별 상관을 계산했다. SAE-64 롱 바스켓은 0.0215, 숏 바스켓은 0.0297이었다. PCA-64는 0.0201 / 0.0261, naive 반전은 더 낮은 0.0136 / 0.0148이었다. 논문 보고값은 SAE 0.008, PCA 0.039다. 내 패널에서는 순서가 반대다. raw return 척도로 계산하면 모든 방법이 0.56~0.60에 몰린다(공통 시장 요인이 지배적이다). 이 척도에서도 SAE의 우위는 보이지 않는다. 논문과 방향이 일치하는 하위 결과는 하나뿐이다. SAE 바스켓 자산의 개별 변동성이 PCA보다 약간 높았다(일별 0.0478 대 0.0466). 즉 SAE가 “조용한 자산”을 고른 것은 아니지만, 고른 자산의 상관이 더 낮아진 것도 아니다.
| 방법 | 롱 바스켓 상관 | 숏 바스켓 상관 |
|---|---|---|
| SAE K=64 | 0.0215 | 0.0297 |
| PCA K=64 | 0.0201 | 0.0261 |
| naive 반전 | 0.0136 | 0.0148 |
| 논문 보고 SAE / PCA | 0.008 / 0.039 | 0.010 / 0.044 |
따라서 논문의 첫 번째 주장에 대한 내 판정은 이렇다. K=128에서는 방향이 부분적으로 나타났지만 규모는 재현되지 않았다. K=64와 메커니즘 주장은 재현되지 않았다. 이것이 저자들 자신의 패널 결과를 반증하는 것은 아니다. 패널, 기간, 구현이 다르기 때문이다. 다만 이 주장을 보정 없이 다른 패널에 옮겨 쓸 수 있다고 가정해서는 안 된다는 점은 보여준다.
논문의 결론 중 일부는 재현됐고, 일부는 그렇지 않았다
이 논문에서 높이 평가할 점은 저자들이 위험 감소를 거래 가능한 Alpha와 동일시하지 않았다는 것이다. SAE의 Sharpe 증가가 없고, 팩터 정체성이 seed 간 안정적이지 않으며, IC도 개선되지 않았다고 명시했다. 동일일 종가 체결이 실행 불가능하고, 비용을 제외했으며, 유니버스 선정이 point-in-time이 아니라는 한계도 공개했다. 내 재현에서도 이런 부정적 결과의 방향은 저자 보고와 일치했다. 하지만 희소도 분리는 재현되지 않았고, overlay는 구현 세부 사항이 불명확해 깔끔하게 판정할 수 없다.
- Sharpe 증가 없음: naive 반전의 money Sharpe는 +1.69, SAE-64는 +0.65, SAE-128은 +0.96이었다. 예측력도 개선되지 않았다. 반전 IC는 SAE-64 +0.0073, PCA-64 +0.0146이었다(논문은 +0.016 대 +0.021로 순서는 같다).
- 팩터 정체성은 seed 간 재현되지 않음: 세 seed 쌍을 Hungarian matching한 디코더 cosine은 0.217~0.220, 무작위 사전 기준은 0.198(95백분위 0.203)이었다. 무작위보다 약간 높을 뿐이다. 공유된 시장 방향을 포착했을 가능성은 있지만 “같은 팩터 집합”이라고 부르기에는 거리가 멀다. 논문은 0.13 대 0.117이다. 자산 수가 달라 무작위 기준도 바뀌므로 규모는 다르지만 결론은 같다.
- 희소도 분리는 재현되지 않음: 논문의 Hoyer는 SAE 0.497 대 DenseAE 0.303, 내 결과는 0.479 대 0.478이었다. 차이가 어디서 생겼는지 분명하다. SAE 쪽은 거의 차이가 없고(0.497 대 0.479), 분리 격차 전체는 밀집 기준선 쪽에 있다(0.303 대 0.478). 이유도 측정했다. 코드의 정확한 0 비율은 SAE 47.7%, DenseAE 47.6%였다. 이 패널에서는 ReLU 코드가 페널티 없이도 거의 절반이 0이다. 밀집 모델이 구조상 이미 “희소”하기 때문에 차이가 사라진다. 앞 절의 다른 측면이다. 저자 패널에는 희소도 분리가 있지만 내 패널에는 없다.
overlay는 명확한 판정을 내릴 수 없어 결과를 그대로 기록한다. 사전 등록한 버전은 leg별 Ledoit–Wolf 최소분산 가중치, raw return 공분산, money 척도였다. overlay 이후 변동성은 59.96%로 오히려 상승했다(가중치가 과도하게 집중됨). rank 척도로 구현을 바꾸면 변동성은 8.19(rank 척도이며 퍼센트가 아님)로, naive 8.97과 두 SAE 변형보다 낮았다. 논문은 naive 5분위 포트폴리오에 60일 rolling LW 공분산을 적용했다고만 설명하고 구성 세부 사항은 고정하지 않았다. 내 두 구현 중 어느 것이 저자들의 방식인지 판단할 수 없다. 내 구현을 분해해 보니 각 leg는 약 28개 자산이고, 60일 LW 공분산 조건수 중앙값은 약 94였다. 행렬이 병적인 것은 아니었다. 문제는 가중치였다. 최소분산 해가 각 leg를 약 6개의 유효 보유 종목으로 집중시켰다(최대 단일 종목 가중치 중앙값 27%). 59.96% 변동성은 행렬 특이성이 아니라 가중치 집중의 결과다. 이 항목은 inconclusive로 남긴다. 재현 측 구성 세부 사항을 확정할 수 없기 때문이다.
실행 가능한 시점으로 바꾸면 수익이 먼저 사라지고 변동성은 그대로다
다음 절은 논문에 없는 내 확장이다. 결론을 저자들에게 귀속해서는 안 된다.
논문의 평가는 t일 종가에 신호를 만들고 같은 t일 종가로 체결한다. 저자 스스로 실행 불가능하다고 명시했다. 나는 같은 바스켓을 다음 날 종가 체결(이 설정에서 실제 실행 가능한 가장 빠른 시점)로 옮기고 turnover 기준 10 / 25 bps의 단순화한 비용을 더했다. 일일 turnover는 약 3.1이다(롱과 숏 leg를 합친 가중치의 일별 절대 변화 합계. 최댓값은 4이므로 거의 매일 전면 교체에 가깝다).
| 방법 | 동일일 종가 gross Sharpe | 다음 날 종가 gross | 동일일 종가 net 10 bps | 다음 날 종가 net 25 bps |
|---|---|---|---|---|
| SAE-128 | +0.98 | +0.05 | −2.98 | −10.07 |
| SAE-64 | +0.67 | +0.26 | −3.12 | −9.34 |
| naive 반전 | +1.71 | −0.10 | −1.86 | −9.62 |
참고: Arm D는 저장된 바스켓을 589일 기준으로 다시 계산했다(5개 fold 집계보다 하루 적음). 그래서 동일일 종가 Sharpe가 집계표와 조금 다르다. 예를 들어 SAE-128은 +0.98 대 +0.96이다. 차이는 그 하루에서만 발생한다.
체결을 하루 늦추자 세 방법 모두 gross Sharpe가 0 부근으로 내려갔다. 일간 반전의 수익은 신호가 형성된 직후 첫날에 발생하므로 놀라운 결과는 아니다. 10 bps 비용을 추가하면 전부 마이너스가 되고, 25 bps에서는 손실 폭이 커진다. 시장 관행에 대한 보충 설명이 필요하다. 암호화폐 시장은 24시간 365일 거래되고 종가 경매가 없다. “일봉 종가”는 특정 시점의 스냅샷일 뿐이다. 따라서 동일일 종가에 비용을 더한 열이 실제 실행 가능한 근사에 더 가깝다(실제 지연과 슬리피지는 별도로 차감해야 한다). 다음 날 종가 체결은 주식 시장의 보수적인 가정을 가져온 것으로, 실행 격차의 상한을 측정하는 것이지 암호화폐 시장의 일반적인 동작은 아니다. 시점과 비용을 바꿔도 변동성은 거의 바뀌지 않아 28~31%를 유지했다. 비용은 완만한 부담이고, 시점 변경은 반전 프리미엄 자체를 제거한다. 어느 쪽도 위험량을 바꾸지는 않는다.
저자들은 이 전략이 거래 가능하다고 주장한 적이 없다. 이 절은 논문에 적힌 면책 문구의 실제 크기를 수치화한다. “신호 증거”와 “거래 가능한 결론” 사이에는 실행 가정 전체가 놓여 있다. 동일일 종가 체결을 전제로 Sharpe를 보고하는 일간 횡단면 모델은 더 강한 주장을 하기 전에 이 검사를 통과해야 한다.
앞으로 ML 팩터 논문을 검토할 때 가장 먼저 실행할 점검
이번 재현에서 남은 것은 결론보다 오래 쓸 수 있는 체크리스트다. 순서도 정해졌다.
- 어블레이션 동일성 검사: 주장하는 메커니즘을 끈다(여기서는 λ=0). 가중치, 메커니즘 통계(Hoyer), 하위 지표를 비교한다. 둘을 구분할 수 없다면 효과 크기를 논하기 전에 “메커니즘이 작동하지 않았다”고 보고한다. 처음부터 이 검사를 했더라면 긴 우회를 상당 부분 줄일 수 있었을 것이다.
- 가장 단순한 기준선: naive 동일일 반전은 두 패널 모두에서 가장 높거나 거의 가장 높은 Sharpe를 얻었다. 복잡한 모델은 먼저 이 기준선을 이겨야 한다.
- 교과서적인 overlay: 공분산 overlay만으로 우위 대부분을 회복할 수 있다면 모델의 추가 기여는 잔차뿐이다. 이번에는 이를 깔끔하게 재현하지 못했지만 검사 자체는 빠져서는 안 된다.
- seed 안정성: seed를 바꿔 재학습하고, 팩터를 매칭하고, 무작위 기준과 비교한다. 이 검사를 통과하지 못하면 “팩터를 발견했다”는 말은 “이번 실행에서 몇 가지 방향이 나왔다”는 뜻에 그친다.
처음의 0.999998로 돌아가 보자. 이번 재현에서 가장 정보량이 큰 숫자였다고 생각한다. 논문의 수식, 파라미터, 평가 프로토콜은 한 글자도 바꾸지 않고 복사할 수 있다. 하지만 메커니즘이 실제로 작동하는지는 문서에 적혀 있지 않다. 자신의 패널에서 측정해야 한다. 변동성이 4분의 1 줄었든 4.7% 줄었든, 희소성이 확인되기 전까지는 재구성 모델의 숫자일 뿐이다.
재현 범위와 자료: 이 글의 결론은 축소 유니버스(유동성 상위 150개 자산, 20222024, 생존 편향 포함)와 인쇄된 수식을 따른 자체 구현(NumPy, 유한차분 그래디언트 검증)에만 적용된다. 저자들의 433개 자산, 20192024 패널 결과를 확인하거나 반증하지 않는다. 데이터는 Binance 공개 일봉이며 본문에 적힌 규칙으로 재구성할 수 있다. 작성 시점에 저자 공식 코드는 공개되지 않았다. 논문 수치는 저자 보고값으로 구분했다. 이 글은 재현 방법과 증거 범위만 다루며 투자 조언이 아니다.
재현 코드, 고정 자산 목록(해시 포함), fold별 결과, 해석 기록을 공개했다. 자료 패키지에는 SHA256SUMS가 포함되어 각 파일을 개별 검증할 수 있다.
vxime/sae-crypto-factor-replication
이번 재현을 더 넓은 퀀트 연구 흐름에 연결하고 싶다면 퀀트 팩터가 유효한지 검증하는 방법과 멀티팩터 모델 가중치를 안전하게 조정하는 방법도 참고할 수 있다. 전자는 순위 증거가 성립하는지, 후자는 그 증거를 모델에 반영한 뒤 가중치 변경을 어떻게 통제할지 다룬다.