---
slug: auditable-research-record
title_ko: 감사 가능한 리서치 기록의 원칙
title_en: Principles of an Auditable Research Record
summary_ko: 사전성·불변성·완전성·재현성·독립 검증·성과 표시·판단 기록 구조의 일곱 원칙과 해시 체인 검증 방법.
summary_en: Seven principles for research records a third party can audit, and how a hash chain makes tampering detectable.
date: '2026-09-29'
grade: P
series: methodology
tags:
- audit
- reproducibility
- hash-chain
version: 4
sha256: 925def38c6a55346dec48f9f2370490bed13e2619cfafb5508595f2c507f8f39
generated_at: '2026-09-29T19:27:32+09:00'
sources:
- 감사 가능 기록 요건 분석
- 원장 해시 체인 매니페스트
disclaimer_ko: 리서치 목적의 공개 노트이며 권유 아님 — 어떠한 금융상품 거래의 권유나 제안도 아닙니다. 과거 통계는 미래 결과를 뜻하지 않습니다.
disclaimer_en: For research purposes only; not a solicitation or an offer of any financial product. Past statistics do not indicate future outcomes.
languages:
- ko
- en
---
# 감사 가능한 리서치 기록의 원칙

예측·판단 기록을 제삼자가 인정하려면 무엇이 필요한가를 일곱 가지 원칙으로 정리하고, 해시 체인으로 기록 불변성을 검증하는 방법을 설명한다.

## 1. 일곱 가지 원칙

1. **사전성** — 예측·판단이 결과보다 먼저 존재했음을 제삼자가 확인할 수 있어야 한다. 로컬 파일 시각은 바꿀 수 있으므로 외부 시각 앵커(원격 저장소 푸시 시각, 공개 타임스탬프)가 필요하다.
2. **불변성** — 기록은 덧붙이기만 하고, 정정은 원 행을 고치지 않고 새 행으로 남긴다. 해시 체인이 있어야 '행 삭제' 를 배제할 수 있다.
3. **완전성** — 좋은 결과만 고르지 않는다. 모든 예측과 모든 판정(실패 포함)을 남기고, 사람이 옮겨 적는 기록은 원천 기록과 정기 대조한다.
4. **재현성** — 수치마다 입력 해시·코드 버전·재현 방법을 붙여, 같은 입력이면 같은 수치가 나오는지 누구나 확인할 수 있게 한다.
5. **독립 검증** — 만든 주체와 검수하는 주체를 분리하고, 검수 기록(누가·언제·어느 범위)을 같은 형식의 원장에 남긴다.
6. **성과 표시 표준** — 성과를 보일 때는 시간가중 방식·비용 포함·벤치마크 병기·전 기간 표시를 지키고, 표본이 기준에 못 미치면 그 사실을 함께 적는다.
7. **판단 기록 구조** — 예측(수치·확률·시한) / 근거 / 실행 규칙 / 결과 / 사후 평가를 분리해, 확률 예측이 기계로 채점될 수 있게 한다.

원 분석 문서의 원칙 항목 수: 7 (본 노트의 일곱 항목과 대응)

## 2. 해시 체인 검증 방법(개념)

1. 하루 마감 때 추적하는 기록 파일마다 SHA-256 을 계산해 (파일 식별자, 해시, 크기) 목록을 만든다.
2. 행 해시 = SHA-256( 직전 행 해시 + 기록 시각·시장·계기 + 정렬된 파일 목록 ). 첫 행의 직전 해시는 숫자 0 을 64번 이어 쓴 값이다.
3. 목록이 직전 행과 같으면 새 행을 만들지 않고, 다르면 한 행을 덧붙인다.
4. 검증자는 첫 행부터 행 해시를 다시 계산한다. 어느 한 행이라도 고치면 그 뒤 모든 행 해시가 어긋난다.
5. 마감 커밋 메시지에 최신 행 해시 앞 16자를 싣고 원격 저장소에 올리면, 원격 시각이 외부 앵커가 된다.
6. 한계: 기록과 커밋 메시지를 함께 바꿔 다시 커밋하면 로컬 검증만으로는 못 잡는다 — 원격 푸시본이나 공개 타임스탬프만 앵커다.

## 3. 현재 체인 상태

첫 실행 전 — 체인 행이 아직 없다(before_first_run). 첫 마감 뒤 행 해시가 여기에 실린다.

<!-- lang:en -->

# Principles of an Auditable Research Record

What does it take for a third party to accept a record of predictions and judgements? This note sets out seven principles and explains how a hash chain verifies that the record has not been altered.

## 1. Seven principles

1. **Priority in time** — A third party must be able to confirm that a prediction or judgement existed before the outcome. Local file times can be changed, so an external time anchor is needed (a remote repository push time or a public timestamp).
2. **Immutability** — Records are append-only; a correction is a new row, never an edit of the original row. A hash chain is needed to rule out deleted rows.
3. **Completeness** — No cherry-picking. Every prediction and every verdict (failures included) is kept, and records transcribed by people are regularly reconciled with the source records.
4. **Reproducibility** — Each figure carries its input hash, code version and reproduction method, so anyone can check that the same input yields the same figure.
5. **Independent verification** — The maker and the reviewer are separated, and review records (who, when, what scope) are kept in a ledger of the same format.
6. **Performance presentation standard** — When performance is shown, use time-weighted methods, include costs, show a benchmark and the full period, and say so when the sample falls short of the standard.
7. **Judgement record structure** — Prediction (value, probability, deadline) / rationale / execution rule / outcome / post-mortem are kept separate, so probabilistic predictions can be scored by machine.

Number of principle items in the source analysis document: 7 (they map to the seven items of this note)

## 2. How the hash chain is verified (concept)

1. At each daily close, compute SHA-256 for every tracked record file and build a list of (file identifier, hash, size).
2. Row hash = SHA-256( previous row hash + recording time, market and trigger + sorted file list ). The first row's previous hash is the digit 0 written 64 times.
3. If the list equals the previous row's list, no new row is written; otherwise one row is appended.
4. A verifier recomputes the row hashes from the first row. Altering any single row breaks every later row hash.
5. Put the first 16 characters of the latest row hash in the closing commit message and push it to a remote repository; the remote time becomes the external anchor.
6. Limit: if the records and the commit messages are rewritten together and recommitted, local verification alone cannot detect it — only a remote pushed copy or a public timestamp is an anchor.

## 3. Current chain status

Before the first run — the chain has no rows yet (before_first_run). The row hash will appear here after the first close.
