"느리게 변하는 건 캐시해. 근데 결과가 정확히 재현돼야 하는 그 하나만은 절대 캐시하지 마."
입력은 두 종류, 캐싱 규칙도 두 가지
simulation 에는 성격이 아주 다른 두 종류의 입력이 들어가고, Keep 는 둘을 정반대로 다뤄. 변동성이나 beta 나 anchor 값 같은 파생량인 calibration 은 하루 동안 캐시돼. 반면 run 이 출발하는 정확한 시작 가격인 seed 가격은 언제나 run 시점에 새로 resolve 하고, 캐시에서 꺼내는 일이 없어. 같은 run 에 들어가는 두 입력인데 규칙이 반대인 거지. 이 갈림은 아무렇게나 정한 게 아니야. 각 입력이 무엇을 위해 존재하는지에서 규칙이 저절로 따라 나와.
calibration 을 캐시해도 되는 이유
calibration 은 파생값이고 안정적이야. 변동성과 beta 는 과거 데이터 구간에서 계산돼 나와. 종목의 성격을 묘사하는 값들인데, 그 성격이 한 시간 사이에 의미 있게 변하진 않지. run 을 돌릴 때마다 다시 계산하는 건 순수한 낭비야. 어차피 거의 같은 숫자에 도달할 비싼 계산이니까. 하루짜리 캐시가 이 값들의 실제 박자에 딱 맞아. 어제의 calibration 은 오늘 run 의 입력으로 충분히 쓸 만하고, 캐시 덕분에 simulation 은 빠르게 유지돼.
seed 가격이 매번 새것이어야 하는 이유
seed 가격은 정반대 성격의 입력이야. run 의 부챗살 전체가 뻗어 나가는 정확한 출발점이거든. seed 가격이 캐시에서 나온다면, '같은 시작점에서 돌렸다' 는 두 run 이 캐시 상태에 따라 슬쩍 다른 가격에서 출발할 수 있어. 그 순간 run 은 기록된 입력만으로 정확히 재현되기를 멈춰. 그래서 Keep 는 seed 가격을 매번 새로 resolve 하고, resolve 된 그 값을 run 과 함께 저장해. 출발점은 생성 순간에 정확하고, 재생을 위해 붙잡혀 있는 거지. 재현성이 걸린 값을 캐시 운에 맡기는 일은 없어.