대규모 공분산 행렬의 우수한 조건 추정량
논문의 핵심 내용
이 논문은 Olivier Ledoit와 Michael Wolf가 Journal of Multivariate Analysis(2004)에 발표한 논문으로, 변수의 개수가 표본 크기에 비해 클 때 공분산 행렬을 추정하는 새로운 방법을 제시합니다.
주요 문제점
표본 공분산 행렬(sample covariance matrix)은 대규모 차원의 문제에서 여러 단점을 갖습니다:
- 비가역성: 변수의 개수 \(p\)가 관측값 개수 \(n\)보다 크면 표본 공분산 행렬이 가역 불가능
- 나쁜 조건수: 비율 \(p/n\)이 무시할 수 없는 수준이면 행렬이 수치적으로 악조건(ill-conditioned)이 되어 역행렬 계산 시 추정 오차가 극대화됨
- 부정확성: 포트폴리오 선택, 일반최소제곱(GLS) 회귀, 일반적 적률법(GMM) 등의 응용에서 성능이 저하됨
제안된 해결책
논문은 선형축소(linear shrinkage) 추정량을 제시합니다: 최적의 축소 추정량 \(\hat{S}^*\)는 표본 공분산 행렬 \(S\)와 단위행렬 \(I\)의 가중 평균입니다:
\[ \hat{S}^* = \frac{b^2}{d^2}mI + \frac{a^2}{d^2}S \]
여기서: - \(m = \langle S, I \rangle\): 축소 목표(shrinkage target) - \(a^2 = \|S - mI\|^2\): 표본 고유값의 분산 - \(b^2 = E[\|S - \Sigma\|^2]\): 표본 공분산 행렬의 오차 - \(d^2 = a^2 + b^2\): 총 분산
주요 특징
분포-비의존성: 이 추정량은 특정 확률분포를 가정하지 않으며 명시적 공식으로 계산이 간단합니다.
점근 최적성: 관측값 개수와 변수 개수가 모두 무한대로 갈 때, 본 논문에서 제시된 선형축소 추정량은 일반 점근(general asymptotics) 하에서 이차손실함수(quadratic loss function)에 대해 점근적으로 균일 최소위험(uniformly minimum quadratic risk)을 달성합니다.
우수한 조건성: 제안된 추정량은 항상 가역 가능하며 진정한 공분산 행렬보다도 더 우수한 조건수를 가질 수 있습니다.
이론적 프레임워크
논문은 일반 점근 분석을 도입합니다. 표준 점근(standard asymptotics)과 달리 변수의 개수 \(p_n\)도 표본 크기 \(n\)과 함께 무한대로 수렴할 수 있으며, 유일한 제약은 비율 \(p_n/n\)이 유계라는 것입니다:
가정 1: \(p_n/n \leq K_1\) (어떤 상수 \(K_1\)에 대해)
이 프레임워크는 현실의 많은 상황, 특히 변수의 개수와 표본 크기가 비슷한 수준일 때 더 적절합니다.
네 가지 해석
논문은 최적 선형축소를 다양한 관점에서 해석합니다:
- 기하학적 해석: 힐베르트 공간에서의 정사영으로 해석
- 편향-분산 분해: 추정 오차의 편향(bias)과 분산(variance) 간의 최적 트레이드오프
- 베이지안 해석: 사전정보(prior information)와 표본정보(sample information)의 결합
- 고유값 분산: 표본 고유값이 참 고유값보다 더 분산되어 있다는 특성
실증적 성능
몬테카를로 시뮬레이션 결과:
- 제안 추정량은 모든 시뮬레이션 상황에서 표본 공분산 행렬을 개선
- 20개 이상의 변수와 관측값이 있을 때 점근 결과가 유한 표본에서도 잘 작동
- 기존의 Stein-Haff 및 최소최대(minimax) 추정량과 비교해서도 경쟁력 있는 성능
실용적 의의
이 논문의 결과는 다양한 분야에서 적용됩니다:
- 포트폴리오 최적화: 대량의 자산으로부터 평균-분산 효율적 포트폴리오 선택
- 회귀 분석: 대규모 횡단면 자료에서의 일반최소제곱 추정
- 적률법: 많은 제약조건을 가진 일반적 적률법의 가중행렬 선택
결론
이 논문은 대규모 공분산 행렬 추정의 고전적 성과로, 단순하면서도 이론적으로 엄밀하며 실증적으로 우수한 축소 추정량을 제시했습니다. 특히 \(p > n\)인 상황에서도 항상 가역 가능한 추정량을 제공하는 것이 주요 기여입니다.
메인 수식들 전개
1. 최적 선형축소 (Optimal Linear Shrinkage)
기본 설정
축소 추정량의 일반 형태:
\[ \hat{S}^* = \rho_1 I + \rho_2 S \]
여기서 \(\rho_1, \rho_2\)는 선형계수, \(I\)는 단위행렬, \(S\)는 표본 공분산 행렬입니다.
핵심 스칼라 함수들:
\[ m = \langle S, I \rangle = \frac{\text{tr}(S)}{p} \]
\[ a^2 = \|S - mI\|^2 \]
\[ b^2 = E[\|S - \Sigma\|^2] \]
\[ d^2 = E[\|S - mI\|^2] = a^2 + b^2 \]
여기서 Frobenius 노름은 \(\|A\| = \sqrt{\text{tr}(AA^t)/p}\)로 정의됩니다.
Lemma 2.1: 기본 관계식
\[ a^2 + b^2 = d^2 \]
증명: \[ E[\|S - mI\|^2] = E[\|(S - \Sigma) + (\Sigma - mI)\|^2] \]
\[ = E[\|S - \Sigma\|^2] + E[\|\Sigma - mI\|^2] + 2E[\langle S - \Sigma, \Sigma - mI \rangle] \]
\[ = E[\|S - \Sigma\|^2] + \|\Sigma - mI\|^2 + 2\langle E[S - \Sigma], \Sigma - mI \rangle \]
\(E[\Sigma] = \Sigma\)이므로 세 번째 항은 0이 됩니다.
Theorem 2.1: 최적 선형조합
최적화 문제:
\[ \min_{\rho_1, \rho_2} E[\|S^* - \Sigma\|^2] \quad \text{s.t.} \quad S^* = \rho_1 I + \rho_2 S \]
최적해:
\[ S^*_{\text{opt}} = \frac{b^2}{d^2} mI + \frac{a^2}{d^2} S \]
최소 기댓값 손실:
\[ E[\|S^*_{\text{opt}} - \Sigma\|^2] = \frac{a^2 b^2}{d^2} \]
축소 강도(Shrinkage Intensity):
\[ \lambda^* = \frac{b^2}{d^2} \]
평균 손실 개선율 (PRIAL):
\[ \text{PRIAL} = \frac{E[\|S - \Sigma\|^2] - E[\|S^*_{\text{opt}} - \Sigma\|^2]}{E[\|S - \Sigma\|^2]} = \frac{b^2}{d^2} \]
축소 강도가 작으면 표본 공분산 행렬이 정확하다는 의미이고, 축소 강도가 크면 표본 공분산 행렬의 오차가 크다는 의미입니다.
2. 편향-분산 분해
\[ E[\|S^* - \Sigma\|^2] = E[\|S^* - E[S^*]\|^2] + \|E[S^*] - \Sigma\|^2 \]
첫 번째 항: 분산(Variance) 두 번째 항: 제곱 편향(Squared Bias)
축소 목표 \[mI\]의 경우: - 분산 = 0 (비확률) - 편향 = \[\|mI - \Sigma\|^2\] (모두 편향)
표본 공분산 행렬 \[S\]의 경우: - 분산 = \[b^2\] (모두 분산) - 편향 = 0 (불편추정)
3. 일반 점근(General Asymptotics) 분석
가정
가정 1: 비율 경계
\[ \frac{p_n}{n} \leq K_1 \]
변수의 개수 \[p_n\]이 표본 크기 \[n\]과 함께 무한대로 증가할 수 있습니다.
가정 2: 8차 모멘트 경계
\[ \frac{1}{p_n}\sum_{i=1}^{p_n} E[(y^n_{i1})^8] \leq K_2 \]
Theorem 3.1: 표본 공분산 행렬의 오차
\[ \lim_{n \to \infty} \left(E[\|S_n - \Sigma_n\|^2_n] - \frac{p_n}{n}(m^2_n + \gamma^2_n)\right) = 0 \]
여기서 \[\gamma^2_n = \text{Var}\left[\frac{1}{p_n}\sum_{i=1}^{p_n}(y^n_{i1})^2\right]\]입니다.
중요한 결론:
표본 공분산 행렬의 오차는 \[O(p_n/n)\] 수준입니다. 따라서 일반점근 하에서 표본 공분산 행렬은 일반적으로 일치성이 없습니다(inconsistent).
4. 적응적 축소 강도 추정
선형축소 목표 추정
\[ \hat{m}_n = \langle S_n, I_n \rangle_n \]
Lemma 3.2: \[\hat{m}_n - m_n \xrightarrow{q.m.} 0\]
분산 성분 추정
\[ \hat{d}^2_n = \|S_n - \hat{m}_n I_n\|^2_n \]
Lemma 3.3: \[\hat{d}^2_n - d^2_n \xrightarrow{q.m.} 0\]
오차 성분 추정
\[ \hat{b}^2_n = \frac{1}{n^2}\sum_{k=1}^{n}\|x_{-k}x^t_{-k} - S_n\|^2_n \]
제약 추정량:
\[ b^2_n = \min(\hat{b}^2_n, d^2_n) \]
Lemma 3.4: \[b^2_n - b^2_n \xrightarrow{q.m.} 0\]
분산 성분 (재계산)
\[ \hat{a}^2_n = \hat{d}^2_n - b^2_n \]
Lemma 3.5: \[\hat{a}^2_n - a^2_n \xrightarrow{q.m.} 0\]
5. 적응적 축소 추정량 (실제 구현)
최종 추정량
\[ \hat{S}^*_n = \frac{b^2_n}{d^2_n}\hat{m}_n I_n + \frac{\hat{a}^2_n}{d^2_n} S_n \]
여기서: - \[\hat{m}_n\]: 축소 목표의 추정값 - \[\hat{a}^2_n\]: 표본 공분산 행렬의 분산 성분 - \[b^2_n\]: 표본 공분산 행렬의 오차 성분 - \[\hat{d}^2_n = \hat{a}^2_n + b^2_n\]: 총 분산
Theorem 3.2: 점근 등가성
\[ \|\hat{S}^*_n - S^*_n\|_n \xrightarrow{q.m.} 0 \]
따라서:
\[ E[\|\hat{S}^*_n - \Sigma_n\|^2_n] - E[\|S^*_n - \Sigma_n\|^2_n] \to 0 \]
실제 추정량이 이론적 최적값과 같은 점근성을 가집니다.
6. 고유값 축소 공식
최적 선형축소의 다른 표현:
\[ \forall i = 1, \ldots, p: \quad \lambda^*_i = \frac{b^2}{d^2}m + \frac{a^2}{d^2}\lambda_i \]
여기서 \[\lambda^*_i\]는 최적 축소 추정량의 고유값입니다.
표본 고유값이 참 고유값보다 더 분산되어 있다는 성질:
\[ \frac{1}{p}E\left[\sum_{i=1}^{p}(\lambda_i - m)^2\right] = \frac{1}{p}\sum_{i=1}^{p}(\lambda_i - m)^2 + E[\|S - \Sigma\|^2] \]
7. 조건수 성질
Theorem 3.5: 조건수 경계
조건수(Condition Number):
\[ \kappa(A) = \frac{\lambda_{\max}(A)}{\lambda_{\min}(A)} \]
\[\Sigma_n\]의 조건수가 유계이고 표본화된 변수들이 횡단면 iid라면:
\[ \kappa(\hat{S}^*_n) = O_p(1) \]
즉, 추정량의 조건수는 확률적으로 유계입니다.
특별히, 고유값 중 영에 가까운 것이 있어서 \[\Sigma_n\]이 좋지 않은 조건수를 가지지만 \[p_n/n\]이 무시할 수 없을 때, \[\hat{S}^*_n\]은 \[\Sigma_n\]보다 더 우수한 조건수를 가질 수 있습니다.
8. 최적성 정리
Theorem 3.4: 균일 최소 위험 성질
모든 \[I_n\]과 \[S_n\]의 선형조합 \[\tilde{S}_n\]에 대해:
\[ \liminf_{N \to \infty} \sum_{n \geq N} (E[\|\tilde{S}_n - \Sigma_n\|^2_n] - E[\|\hat{S}^*_n - \Sigma_n\|^2_n]) \geq 0 \]
더불어, \[\hat{S}^*_n\]만큼 좋은 성능을 가지는 추정량은 극한에서 \[\hat{S}^*_n\]과 동일합니다:
\[ \lim_n (E[\|\tilde{S}_n - \Sigma_n\|^2_n] - E[\|\hat{S}^*_n - \Sigma_n\|^2_n]) = 0 \Rightarrow \|\tilde{S}_n - \hat{S}^*_n\|_n \xrightarrow{q.m.} 0 \]
따라서 \[\hat{S}^*_n\]은 선형축소 클래스 내에서 점근적 균일 최소 위험(asymptotically uniformly minimum quadratic risk) 추정량입니다.
논문의 약점 및 개선 포인트
Ledoit-Wolf (2004) 선형축소의 주요 한계점
1. 선형 구조의 제약
Ledoit-Wolf의 원래 방법론은 선형축소(linear shrinkage) 프레임워크에 국한되어 있습니다. 축소 추정량이 다음과 같은 형태로 제한됩니다:[1]
\[ \hat{S}^* = \lambda mI + (1-\lambda) S \]
이는 모든 고유값에 동일한 축소 강도를 적용하므로, 각 고유값의 특성에 맞춘 개별적인 조정이 불가능합니다.[2]
2. 축소 목표의 단순성
원래 논문은 단위행렬의 스칼라 배수 \[mI\]를 축소 목표로 사용합니다. 이는:[3]
- 분산이 크게 다른 변수들이 있을 때 비효율적입니다.[4][5]
- 예를 들어, GDP와 어업 산출량은 분산이 백배 이상 차이날 수 있는데, 평균 분산을 목표로 하면 어업 산출량의 분산은 과대추정되고 GDP의 분산은 과소추정됩니다.[4]
3. 미지의 평균 문제
Ledoit-Wolf (2004)는 평균이 알려진 경우를 주로 다루었으며, 평균이 미지인 경우에 대한 엄밀한 증명이 부족했습니다. 실무에서는 평균을 추정해야 하므로 이는 중요한 제약입니다.[6]
4. 희소성 구조 무시
선형축소는 공분산 행렬의 희소성(sparsity) 구조를 활용하지 못합니다. 많은 실제 문제에서 공분산 행렬은 희소하거나 근사적으로 희소한데, 이를 직접적으로 모델링하지 않습니다.[7][1]
5. 계산 복잡도
차원이 \[p > 1000\]을 넘어서면 계산이 느려지는 문제가 있습니다. 특히 고차원 환경에서는 실시간 적용이 어렵습니다.[1]
6. 역행렬 추정의 비최적성
공분산 행렬 \[\hat{S}^*\]가 최적이라도, 그 역행렬 \[(\hat{S}^*)^{-1}\]은 진정한 정밀도 행렬(precision matrix) \[\Sigma^{-1}\]의 최적 추정량이 아닙니다. 공분산 행렬의 추정 오차가 역행렬 계산 시 증폭될 수 있습니다.[7][1]
최신 문헌(2024-2025)의 개선점
1. 비선형 축소(Nonlinear Shrinkage)
주요 발전: Ledoit와 Wolf는 이후 비선형축소 방법을 개발했습니다.[8][2]
\[ \hat{\Sigma}_{\text{NL}} = U \hat{\Lambda}_{\text{NL}} U^T \]
여기서 \[U\]는 표본 공분산 행렬의 고유벡터이고, \[\hat{\Lambda}_{\text{NL}}\]은 비선형 변환된 고유값 행렬입니다.[2]
핵심 개선: - 각 고유값에 개별적인 축소 강도를 적용합니다.[2] - 포트폴리오 선택 문제에서 선형축소를 능가하는 성능을 보입니다.[2] - 자산 수가 표본 크기와 비슷할 때 점근적으로 최적입니다.[2]
최신 연구(2024): - Quadratic-Inverse Shrinkage (QIS): 계산 효율성을 크게 향상시킨 비선형축소의 새로운 구현 방법[9] - Exponentially-weighted 비선형축소: 시계열 데이터에 적용 가능한 가중 표본 공분산에 대한 비선형축소 공식[8]
2. 대각 목표 축소(Diagonal Target Shrinkage)
2023-2024년 개선: 축소 목표를 평균 분산 \[mI\] 대신 대각 원소를 직접 목표로 하는 방법이 제안되었습니다.[5][4]
\[ T = \text{diag}(s_{11}, s_{22}, \ldots, s_{pp}) \]
성능 향상: - 분산이 크게 다른 변수들에 대해 Mean Squared Error를 크게 감소시킵니다.[4] - 희소한(sparse) 진정한 공분산 행렬에서 개선이 더 큽니다.[4] - 공분산 행렬의 역행렬에 대한 MSE도 감소합니다.[4]
3. Factor Model 기반 접근
2024-2025년 트렌드: 저계수 인수 구조(low-rank factor structure)와 축소를 결합하는 방법이 각광받고 있습니다.[10][11]
Sparse Approximate Factor (SAF) 방법 (2025):[10]
\[ \Sigma = BB^T + D \]
여기서 \[B\]는 인수 적재 행렬, \[D\]는 특이 오차의 공분산입니다.
개선점: - \[L_1\] 정규화를 사용해 약한 인수(weak factors)를 허용합니다.[10] - 인수 적재와 특이 오차 공분산 모두에 희소성을 부과합니다.[10] - Frobenius 노름에서 다른 방법들보다 우수한 성능을 보입니다.[10] - 포트폴리오 외표본(out-of-sample) Sharpe Ratio가 크게 향상됩니다.[10]
4. 정밀도 행렬 직접 추정
Graphical LASSO 및 개선 방법들:
원래 문제: Graphical LASSO는 \[L_1\] 패널티를 사용해 정밀도 행렬을 직접 추정하지만, 표본 공분산 행렬의 조건수 문제를 상속합니다.[7]
2024-2025 개선:
k-root Graphical LASSO (r-glasso):[7] - 표본 공분산 행렬의 \[k\]제곱근을 사용합니다. - 고유값의 분산을 감소시켜 안정성을 높입니다.[7] - 원래 glasso보다 KL 손실과 MSE를 감소시킵니다.[7] - 계산 비용은 거의 동일합니다.[7]
Robust Sparse Precision Matrix (2025):[12] - 중꼬리 분포(heavy-tailed distributions)에 강건합니다. - Spatial-Sign 기반 추정 방법을 사용합니다.[12] - SCLIME와 SGLASSO 두 가지 절차를 제안합니다.[12]
5. 딥러닝 기반 공분산 추정
2025년 최첨단:
Deep Learning Framework for Medium-Term Covariance Forecasting:[13] - 3D Convolutional Neural Networks, Bidirectional LSTM, Multi-head Attention을 결합합니다.[13] - 복잡한 시공간 의존성을 포착합니다.[13] - 성능: 고전적 벤치마크(축소, GARCH) 대비 Euclidean/Frobenius 거리를 최대 20% 감소시킵니다.[13] - 다양한 시장 상황에서 강건합니다.[13]
Self-Supervised Covariance Estimation (2025):[14] - 이질적 회귀(heteroscedastic regression)에서 공분산 추정을 다룹니다.[14] - 2-Wasserstein 거리 기반 상한을 사용합니다.[14] - 이웃 기반 휴리스틱으로 의사 라벨(pseudo labels)을 생성합니다.[14]
6. 이중 축소(Double Shrinkage)
2024년 제안:[15]
\[ \hat{w}_{\text{DS}} = \lambda_w w_{\text{target}} + (1-\lambda_w)(\Sigma_{\text{ridge}} + \lambda_r I)^{-1} \mathbf{1} \]
개선점: - 공분산 행렬(Tikhonov 정규화)과 포트폴리오 가중치 모두에 축소를 적용합니다.[15] - 외표본 분산, Sharpe Ratio, 회전율(turnover)에서 비선형축소를 능가합니다.[15] - 가장 안정적인 포트폴리오 가중치를 유지합니다.[15]
7. 구조화된 목표(Structured Targets)
Toeplitz 구조 목표 (2022-2024):[16] - 복소 Gaussian 분포 데이터에 대해 Toeplitz 구조 목표를 사용합니다.[16] - MSE 기준 하에서 최적 조율 매개변수의 닫힌 형식을 유도합니다.[16] - 배열 신호 처리(array signal processing)에 적용됩니다.[16]
최신 문헌에서도 지속되는 한계점
1. 고차원에서의 일관성 부족
비선형축소를 포함한 대부분의 방법들은 \[p/n \to c > 0\]인 점근 프레임워크 하에서 작동하지만, 진정한 공분산 행렬에 대한 일관성(consistency)은 일반적으로 달성되지 않습니다.[17][1]
\[ \|\hat{\Sigma} - \Sigma\|_F \not\to 0 \quad \text{as} \quad n, p \to \infty \]
2. 희소성 가정의 검증 불가능성
많은 현대적 방법들(Graphical LASSO, POET 등)은 공분산 행렬이 희소하다는 강한 가정을 필요로 합니다. 이러한 가정은 실무에서 검증 불가능하며, 잘못된 가정은 심각한 편향을 초래할 수 있습니다.[17][1]
3. 중꼬리 분포에 대한 취약성
대부분의 이론적 결과는 정규분포 또는 유한한 4차 모멘트를 가정합니다. 금융 데이터처럼 중꼬리를 가진 분포에서는 성능이 저하될 수 있습니다.[3][12]
부분적 해결: 2025년 Robust Sparse Precision Matrix 방법이 제안되었지만, 여전히 연구가 진행 중입니다.[12]
4. 고유벡터 추정의 어려움
모든 축소 방법의 근본적 한계: 고차원에서 고유벡터를 정확히 추정하는 것은 본질적으로 어렵습니다.[9]
\[ \|U_{\text{sample}} - U_{\text{true}}\| \quad \text{여전히 큼} \]
비선형축소는 고유벡터를 표본 공분산 행렬의 것을 그대로 사용하므로, 이 한계를 극복하지 못합니다.[9]
5. 조율 매개변수 선택의 민감성
딥러닝 및 복합 방법들: 많은 하이퍼파라미터를 필요로 하며, 이들의 선택에 결과가 민감합니다.[14][13]
- 교차 검증이 필요하지만 계산 비용이 높습니다.
- 시장 상황이 급변할 때 재조율이 필요할 수 있습니다.[13]
6. 해석 가능성 vs 성능의 트레이드오프
딥러닝 방법들(2025): 성능은 우수하지만 블랙박스입니다.[14][13]
- Ledoit-Wolf의 장점인 명시적 공식과 해석 가능성을 잃습니다.
- 규제가 엄격한 금융 분야에서는 적용이 제한적일 수 있습니다.
7. 동적 공분산 구조
대부분의 방법들은 정적 공분산 가정을 사용합니다. 중기 예측이나 체제 전환(regime switching)을 다루는 것은 여전히 어렵습니다.[13]
부분적 해결: 2025년 딥러닝 프레임워크가 중기 예측을 다루지만, 여전히 계산 비용과 복잡성 문제가 있습니다.[13]
8. \[p \gg n\] 극한 상황
\[p/n \to \infty\]인 극한 상황에서는 대부분의 방법들이 여전히 이론적 보장을 제공하지 못합니다. 초고차원 문제에서는:[17]
- 추가적인 구조 가정(희소성, 저계수 등)이 필수적입니다.[17]
- 가정 위반 시 성능이 급격히 저하됩니다.
9. 시간적 의존성
시계열 데이터에서 시간적 상관관계를 적절히 모델링하는 것은 여전히 도전과제입니다.[8]
- Exponentially-weighted 방법이 제안되었지만, 가중치 선택이 여전히 문제입니다.[8]
- 장기 메모리나 비선형 동역학은 잘 다뤄지지 않습니다.
요약
Ledoit-Wolf (2004)의 선형축소는 단순성과 이론적 엄밀성이라는 강점을 가지지만, 선형 구조, 단순한 축소 목표, 희소성 무시 등의 한계가 있습니다. 최신 문헌(2024-2025)은 비선형축소, 대각 목표, 인수 모델 결합, 딥러닝, 이중 축소 등 다양한 방향으로 개선을 이루었습니다. 그러나 고차원 일관성, 중꼬리 분포 강건성, 고유벡터 추정, 해석 가능성, 동적 구조 모델링 등의 근본적 한계는 여전히 활발한 연구 주제로 남아 있습니다.[1][3][9][17][8][15][4][2][10][13]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59