ETF 값 하나 보여주려다, 데이터 소스를 세 개나 붙였다 🧩

돈독(제가 만드는 자산관리 앱)에 자산 검색 화면을 만들다가, ETF 하나에 발목을 잡혔습니다.
ETF는 지금 거래되는 가격 말고, “이 순간 이 ETF가 실제로 담고 있는 자산을 다 더하면 얼마인가”를 나타내는 추정값이 따로 있습니다. 이 둘이 완전히 같지는 않아요. 장중에 살짝 벌어졌다 좁혀졌다 하죠. 저는 이 값을 화면에 정확히 보여주고 싶었습니다.
간단해 보였는데, 파다 보니 소스를 세 개나 이어붙이게 됐습니다.
정공법부터 막혔다
국내 ETF의 추정값을 가장 정확히 주는 곳은 거래소가 운영하는 공공 데이터 시스템입니다. 국내외 편입 자산 전체를 다 내려주는, 사실상 정답지 같은 소스예요.
그런데 여기 접근하려니 403 에러가 떴습니다. 코드가 틀린 게 아니라, 그 시스템 자체가 그날 막혀 있었던 거예요. 제 잘못이 아닌 장애였습니다.
문제는 “언제 복구될지 모른다”는 거였어요. 기다리자니 화면은 계속 비어 있어야 했습니다.
우회로를 찾았는데, 여기도 순탄치 않았다

그래서 증권사가 열어둔 자동 조회 창구로 갈아탔습니다. 프로그램끼리 데이터를 주고받는 통로인데, 여기도 조건이 까다로웠어요.
우선 모의투자 키로는 데이터가 아예 안 나옵니다. 실전 계좌로 발급받은 앱키가 있어야 했어요. 그리고 요청할 때 고객 유형을 개인으로 명시하는 파라미터를 정확히 안 넣으면, 에러도 없이 그냥 빈 값이 돌아왔습니다. 이걸 눈치채는 데만 한참 걸렸어요.
겨우 값이 나오나 싶었는데, 두 번째 벽이 있었습니다. 국내에 상장돼 있지만 해외 지수를 그대로 따라가는 ETF는, 이 창구가 편입 자산 상위 30개까지만 내려줬어요. 나머지는 안 보이니 정밀 계산이 안 되는 거죠.
그래서 순서를 정해 잇는 구조로 짰다
여기서 방향을 바꿨습니다. 하나의 완벽한 소스를 기다리는 대신, 쓸 수 있는 소스를 우선순위대로 이어붙이기로요.
국내 지수를 그대로 담은 ETF는 증권사 값을 그대로 씁니다. 해외 지수를 따라가는 ETF는 그 지수를 실시간으로 받아 환율을 곱해 근사치를 냅니다. 정답지(거래소 시스템)가 복구되면, 그 소스만 자동으로 우선순위 맨 앞으로 올라오도록 설계했습니다. 지금 당장은 못 쓰지만, 나중에 갈아 끼울 자리를 미리 파둔 셈이에요.
정공법이 막히면, 정밀도를 조금 낮춰서라도 화면은 안 죽어야 한다.
숫자로 확인해봤다
설계만 해두고 넘어가면 불안하니, 실제 값이 얼마나 맞는지 확인했습니다.
국내 지수를 그대로 담은 ETF 하나는 실제 가격과 오차가 0.15%포인트였어요. 해외 지수를 근사로 계산한 ETF 하나는 1.38%포인트 차이가 났습니다. 근사치인 만큼 오차가 더 크게 나는 게 당연했고, 예상한 범위 안이었습니다.
완벽하진 않지만, “왜 이 값이 나왔는지” 설명할 수 있는 오차라는 게 중요했습니다.
뿌듯했던 순간과 남은 숙제

이 폴백 구조를 짜놓고 나서, 갑자기 거래소 시스템이 며칠 뒤 다시 열렸어요. 코드 한 줄 안 고쳤는데, 다음 배포에서 해당 ETF들의 값이 알아서 더 정밀한 소스로 넘어가는 걸 보고 그날은 꽤 뿌듯했습니다.
돌아보면 이번에 배운 건 기술보다 태도에 가까웠어요. 정답 소스 하나에 기대는 설계는 그 소스가 막히는 순간 전부 멈춥니다. 반면 출처마다 담당자를 따로 두고 순서대로 물어보는 구조는, 하나가 막혀도 다음 담당자가 받아줍니다. 대신 정직함이 필요해요. 지금 어떤 소스를 쓰고 있는지, 오차가 어느 정도인지는 숨기지 않는 게 맞다고 생각합니다.
부산 내려가는 KTX 안에서 이 설명서를 읽다가 놓친 조건이 있었는데, 그건 다음에 다른 글에서 다뤄볼게요.
오늘도 한 걸음. 🐴
이 글은 산업 구조와 만드는 과정을 정리한 개인 기록입니다.
특정 종목의 매수·매도 추천이 아니며, 투자 판단과 그 결과는 독자 본인에게 있습니다.