아티클 /
풍동 테스트 vs 레이스 파워 파일: 같은 선수의 CdA, 두 측정법의 차이 0.8%

CdA라는 숫자는 발표하는 데는 돈이 안 들지만 검증하는 데는 돈이 많이 듭니다. 시중의 에어로 제품은 저마다 CdA를 내세우지만, 무엇을 기준으로 잰 값인지 밝히는 곳은 거의 없어요.
그래서 제 숫자를 공개합니다. 논쟁을 끝낼 수 있는 유일한 측정 장비와 대조한 결과로요.
Pengcheng Li는 제가 지도하는 선수로, 풀 디스턴스 완주 기록이 8시간 17분입니다. 2026년 1월, 그는 레이스 장비를 들고 홍콩과학기술대학교 풍동에 들어가 에어로 헬멧과 휠 세트를 여러 가지 테스트했습니다. 반년 뒤 그는 IRONMAN Hamburg에 출전했고요. 저는 그 레이스의 파워 파일을 AeroPacer에 넣고, 엔진이 풍동 결과를 전혀 모르는 상태에서 그의 항력 면적을 역산하게 했습니다.

| 방법 | CdA | 조건 |
|---|---|---|
| HKUST AAF 풍동 | 0.2123 m² | 요각 0°, 45 km/h, 포스 밸런스, 두 번 반복 |
| AeroPacer, 레이스 파일에서 역산 | 0.214 m² | IRONMAN Hamburg 180 km, 4.3시간 |
| 차이 | +0.0017 m², +0.8% | 45 km/h에서 약 2 W |
0.8%, 와트로 약 2 W. 보기 좋은 숫자지만, 이것만 보면 잘못 읽기 쉽습니다. 이 글의 나머지에서 이 숫자를 하나씩 뜯어보겠습니다.
장비 구성이 같은지가 전부입니다
풍동은 선수를 재는 게 아니에요. 특정 장비 구성을 갖춘 선수를 재는 것이라, 하나만 바꿔도 값이 달라집니다. 그래서 풍동에서 잰 구성이 실제로 레이스에서 쓴 구성과 같을 때만 정직한 비교가 됩니다.
그 여러 구성 가운데 레이스 당일과 일치하는 구성은 Trek 프레임, Van Rysel 헬멧, 앞 108 휠과 뒤 디스크 휠, 골 패턴 레그 슬리브, 새 스킨슈트, 그리고 중요한 점으로 일반 배번입니다. 이 매칭은 그가 함부르크에서 실제로 착용한 장비로 정했지, 어느 숫자가 가장 가깝게 나왔는지로 정한 게 아니에요.
이게 중요한 이유는 배번만 에어로 배번으로 바꾸고 나머지는 똑같은 구성도 있었는데, 그 값이 0.2105였기 때문입니다. 그 구성과 비교하면 레이스 파일은 0.8%가 아니라 1.7% 차이가 나요. 저는 둘 중 어느 쪽을 인용할 수도 있었습니다. 레이스 당일 장비를 기준으로 고르는 것만이 설득력 있는 규칙이고, 이번에는 마침 그 규칙 때문에 손해 본 게 없었을 뿐이지만, 두 숫자가 모두 있다는 건 알고 계셔야 합니다.
풍동이 잰 것
한 점 측정입니다. 요각 0°, 45 km/h, 포스 밸런스, 고정 포지션. 두 번 측정했고 두 번 다 0.2123이 나왔어요. 바로 이 재현성 때문에 풍동이 기준이 되는 겁니다.
그리고 뒤에서 다루겠지만, 바로 그 점 때문에 풍동 값이 진실의 전부가 될 수는 없습니다.
레이스 파일이 잰 것
엔진은 누구나 쓰는 파워 방정식을 거꾸로 풉니다. 정방향으로는 라이더의 공기 저항을 알 때 어떤 속도를 유지하는 데 필요한 파워를 구하고, 역방향으로는 파워와 속도를 알 때 공기 저항을 구합니다. 어려운 건 방정식이 아니에요. 실제 도로에서는 네 가지가 방정식을 오염시킨다는 점이 어렵습니다.
- 바람. 중요한 건 대지 속도가 아니라 라이더가 실제로 맞는 공기입니다. 관측소 바람은 10 m 높이에서 재기 때문에 라이딩 높이로 환산해야 해요.
- 경사도. 장거리 레이스 속도에서는 경사도가 1%p만 틀려도 공기 저항 항이 통째로 묻혀 버립니다.
- 포지션. 레이스 네 시간째인 선수는 풍동에서 취했던 자세를 그대로 유지하지 못합니다.
- 드래프팅과 브레이크. 둘 다 방정식이 볼 수 없는 파워를 몰래 끼워 넣습니다.
엔진은 이 네 가지를 이렇게 처리합니다.
주행 전체를 고정 길이의 짧은 윈도우로 자르고, 데이터가 정상인 윈도우만 남깁니다. 속도가 안정적이고, 파워 값이 유효하고, 선수가 실제로 달리고 있는 구간이요. 진행 방향이 꺾이는 윈도우는 버립니다. 코너에서는 포지션도 바뀌고 브레이크도 잡기 때문이에요. 요각이 기준값을 넘는 윈도우도 버립니다. CdA는 요각에 따라 달라지는 값이라, 요각이 낮은 표본끼리만 한데 묶어야 하거든요. 윈도우 앞뒤로 속도가 변했다면 그 운동 에너지 차이를 힘의 수지에 다시 반영해서, 공기 저항 항을 오염시키지 않게 합니다.
함부르크 파일에서는 이렇게 걸러서 쓸 수 있는 윈도우 1058개가 남았습니다.
왕복 페어링
그다음이 진짜 핵심입니다. 함부르크 바이크 코스는 같은 도로를 양방향으로 달리기 때문에, 대부분의 윈도우에는 짝이 있어요. 같은 아스팔트 구간을 반대 방향으로 달린 윈도우죠. 이 둘을 한 쌍으로 묶어 평균을 내면 가장 큰 오차 요인 두 가지가 서로 상쇄됩니다. 한 방향에서 조금 가파르게 읽힌 경사도는 반대 방향에서 조금 완만하게 읽힙니다. 한 방향에서 추정값을 좋게 만들어 주는 뒷바람은 반대 방향에서는 추정값을 나쁘게 만듭니다. 어느 쪽도 완벽하게 잴 필요가 없어요. 페어링은 절댓값에는 관심이 없고, 오차의 부호가 뒤집힌다는 사실만 이용하거든요.
윈도우 1058개는 왕복 페어 283개로 압축되었습니다. 최종 추정값은 원래 윈도우가 아니라 이 페어들로 계산한 값이에요.
에너지 폐합 교차 검증
완전히 별개인 두 번째 방법입니다. 코스가 출발점으로 돌아와 한 바퀴를 이루면, 올라간 1 m는 모두 내려온 1 m이기도 해서 한 바퀴 전체로 보면 중력의 몫은 0이 됩니다. 선수가 페달로 넣은 일은 모두 공기 저항과 구름 저항으로 빠져나가야 하므로, 한 바퀴 전체의 에너지 수지에서 CdA를 한 번에 풀 수 있어요. 위에서 설명한 윈도우 방식은 전혀 쓰지 않습니다.
이 방법으로 나온 값은 0.234로, 페어링 추정값보다 약 9% 높았습니다. 예상한 방향이에요. 네 시간 동안 브레이크를 잡을 때마다 에너지가 버려지는데, 에너지 수지는 그걸 전부 공기 탓으로 돌리니까요. 저는 이 값을 경쟁하는 추정값이 아니라 부호와 크기 수준을 확인하는 교차 검증으로 제시합니다. 오히려 이 값이 더 낮게 나왔다면 걱정했을 거예요.
분포
페어링 추정값은 중앙값이라서, 분포와 함께 읽어야 정직합니다. 페어 283개의 가운데 절반은 0.200에서 0.233 사이에 들어옵니다.
이 파일에만 해당하는 세부 사항이 하나 있습니다. 엔진은 파일마다 두 번 계산해요. 한 번은 그날 실측된 바람을 넣고, 한 번은 바람이 없다고 가정한 뒤, 더 좁게 모이는 쪽을 채택합니다. 함부르크에서 채택된 건 무풍 쪽이었어요. 실측 바람을 넣으면 오히려 분포가 넓어졌거든요. 왕복 코스에서는 예상되는 결과입니다. 페어링 단계에서 바람은 이미 대부분 상쇄되었으니까요.
두 값은 애초에 같을 수 없었습니다
대부분의 에어로 마케팅이 건너뛰는 부분이 바로 여기이고, 저 0.8%가 의미가 있는지를 결정하는 부분도 여기입니다.
풍동이 잰 건 하나의 포지션, 하나의 요각, 하나의 속도로, 고정 장치 위에서 한 번 측정하는 시간 동안의 값입니다. 레이스 파일이 담고 있는 건 4.3시간이고, 그동안 그는 포지션을 수백 번 바꿨고, 그날 불어온 온갖 요각의 바람을 맞았고, 실제 아스팔트 위를 달렸고, 지쳤습니다. 같은 측정을 두 번 한 게 아니에요. 밀접하게 관련되어 있을 뿐, 서로 다른 두 물리량입니다.
만약 두 값이 정확히 같게 나왔다면 올바른 반응은 축하가 아니라 의심입니다. 풍동 포지션을 네 시간 동안 완벽하게 유지하는 사람은 없어요.
그렇다면 0.8%가 실제로 말해 주는 건 무엇일까요? 레이스 파일 역산 방법에 문제가 될 만큼 큰 계통 오차가 없다는 것, 그리고 그가 레이스 중 평균적으로 취한 포지션이 풍동에서의 포지션과 가깝다는 것입니다. 실제로 의미 있고 쓸모 있는 결과예요. 하지만 "AeroPacer의 정확도는 0.8%"라는 뜻은 아니고, 저는 그런 문장을 쓰지 않을 겁니다.
이 일치가 운일 수 있는 이유
이만큼 가까운 숫자가 우연히 나올 수 있는 이유가 네 가지 있습니다. 결과를 볼 때 이 네 가지를 모두 함께 따져 보세요.
선수 한 명은 한 명일 뿐입니다. 이건 n = 1이에요. 검증 연구가 아니라 한 번의 확인입니다. 검증 연구는 실제 라이딩 파워 파일 64개 리플레이이고, 이 사이트의 정확도 주장은 실제로 거기서 나옵니다.
점추정값이 자기 분포 폭보다 훨씬 촘촘하게 맞았습니다. 페어의 가운데 절반은 0.200에서 0.233까지로, 중앙값의 약 15% 폭입니다. 점추정값이 풍동 값의 0.8% 안에 들어온 데에는 운도 섞여 있고, 데이터가 정말로 뒷받침하는 주장은 그보다 약하지만 더 쓸모 있는 쪽이에요. 풍동 값이 추정값 분포 안, 그것도 가운데 가까이에 넉넉히 들어온다는 것입니다.
구름 저항과 무게는 가정값이고, 공기 저항 값과 서로 맞물려 움직입니다. 이번 역산에는 선수와 장비를 합친 80 kg, Crr 0.0040을 썼습니다. 그의 레이스 속도에서 Crr이 0.0005만 틀려도(노면을 모르는 상태라면 타이어에 대해 흔히 있는 수준의 불확실성입니다) CdA 추정값은 약 0.005 움직입니다. 지금 반기고 있는 차이의 세 배예요. 총중량이 2 kg 틀리면 약 0.001 움직이고요. 이번 일치는 그 밑에 깔린 가정보다 더 정밀합니다. 1% 미만의 에어로 결과를 발표하면서 구름 저항을 어떻게 가정했는지 밝히지 않는다면, 할 말을 다 하지 않은 겁니다.
함부르크는 다루기 쉬운 파일입니다. 평지, 왕복 코스, 길고 일정한 출력. 이 방법으로서는 거의 최선에 가까운 조건이에요. 업다운이 많은 코스, 드래프팅이 허용되는 레이스, 하루 종일 상체를 세우고 달린 선수라면 모두 추정값이 더 나빠집니다. 엔진은 그런 파일을 아무 문제 없는 척 넘기지 않고 표시해 둡니다.
또 하나의 독립적인 확인
그의 2024년 Kona 레이스를 예전의 더 거친 방식인 레이스 전체 에너지 계산으로 돌리면 0.205가 나왔습니다. 코스도, 연도도, 계산법도 다르고, 풍동보다 3.4% 낮은 값이에요. 그날의 장비가 풍동에서 측정한 구성과 같았다고 볼 수도 없어서, 이 숫자는 방향만 참고하면 됩니다.
세 가지 방법, 두 대륙의 레이스와 홍콩의 실험실. 숫자는 모두 0.205에서 0.214 사이에 들어왔습니다. 정확히 일치하는 조합은 없지만, 모두 같은 범위를 가리킵니다.
Pengcheng Li가 아닌 여러분에게 이 결과가 뜻하는 것
이번에는 레이스 파일에서 역산한 CdA와 풍동의 차이가, 구름 저항이나 실제 총중량처럼 아무도 정확히 재지 않는 조건의 불확실성보다 작았습니다. 선수 한 명으로 한 검증이라 여러분도 이만큼 가까울 거라고 약속할 수는 없어요. 다만 페이싱 목표를 정하는 데는 이 정도 정밀도면 충분합니다. 어떤 헬멧이 다른 헬멧보다 3 W 나은지 판단하는 데는 부족해요. 레이스 파일 한 개로는 그렇게 작은 차이를 구분할 수 없으니까요.
이번에는 풍동으로 제 숫자를 검증했습니다. 다음에 검증해 볼 만한 건 여러분의 레이스 파일입니다.
신뢰성에 대해
- 여기 나오는 모든 숫자는 풍동 리포트와, 그 파일에 대해 엔진이 저장해 둔 추정값에서 나왔습니다. 0.8%는 0.0017을 0.2123으로 나눈 값이고, 0.0017은 풍동의 공기 조건과 45 km/h에서 약 2 W입니다.
- 풍동 구성은 비교를 돌리기 전에 레이스 당일 장비에 맞춰 골랐고, 다른 구성의 결과도 위에 공개했습니다.
- 이 레이스 파일은 무엇을 조정하는 데도 쓰지 않았습니다. 0.214를 낸 엔진 버전이 지금 이 사이트에서 돌아가는 버전이에요.
- 윈도우의 정확한 길이, 진행 방향과 요각의 제외 기준값은 엔진 내부 사양이라 공개하지 않습니다. 결과를 바꾸는 숫자는 모두 공개합니다. 윈도우 1058개, 페어 283개, 80 kg, Crr 0.0040, 중앙값 0.214, 가운데 절반 0.200에서 0.233, 에너지 폐합 0.234.
