A proof-of-concept research ranking for finding universities and papers at the intersection of artificial intelligence and quantitative finance.
The ranking is deliberately paper-first: collect relevant work, classify it, resolve publication-time affiliations, and only then aggregate institutional credit. The interface borrows the compact, filterable feel of CSRankings while keeping the underlying evidence one click away.
Continuous sources are refreshed through 2026-08-14. The effective arXiv UTC cutoff is 2026-08-13; journals and thesis metadata use the requested local cutoff. Annual proceedings remain at their latest authoritative published volumes. Deployment and publication remain separate approvals.
- Enumerates the frozen 433,809-record 2016–2025 base inventory, all 454 2020–2025 ICAIF main-proceedings papers, and 633 Crossref journal records through 2026-08-14: 297 Journal of Financial Data Science, 202 Digital Finance, and 134 Data Science in Finance and Economics articles.
- Adds a complete 69,458-record 2026 arXiv tranche through 2026-08-13 UTC. The unchanged v2 topical filter admits 419 searchable candidates; the existing title-explicit ranking guardrail admits 212, with two exact links to already collected works receiving zero duplicate credit.
- Adds a separate thesis stream from 682,003 complete DataCite, Crossref, and EThOS source records. The public lens contains 165 AI × quant candidates, including 64 ROR-resolved grantors across 38 universities, without changing the paper score.
- Applies
topical-filter-poc@2to the base inventory and journals, admits the validated ICAIF main proceedings by venue scope, and exposes 3,363 searchable paper candidates. Journal venue membership alone never passes: exactly 50 articles meet the two-axis AI + quant filter. - Keeps a compact corpus summary on the ranking homepage and places the full
candidate search, filters, and expandable paper evidence at
/papers. - Keeps a compact thesis summary on the ranking homepage and places the full
thesis search, grantor lens, filters, and expandable evidence at
/theses. - Binds every candidate to an explicit ranking scope: 2,154 official papers, 472 q-fin-backed experimental papers, and 737 discovery-only papers.
- Builds the board from 510 conference papers, the complete 1,594-paper finance-explicit arXiv cohort, and 50 strict journal candidates.
- Resolves 1,090 papers to 546 universities. The current-year arXiv tranche adds 102 newly resolved official papers from cached first-version PDF front matter; 108 official current-year candidates remain visible with zero university credit. Corroborated Crossref affiliations resolve 119 ICAIF papers; 335 remain visible and receive zero university credit.
- Adds 413 incremental ICAIF works and links 41 ICAIF/arXiv manifestations. The conference version replaces preprint credit, so no work is scored twice.
- Adds 44 incremental journal works and links six journal/arXiv manifestations. When a linked journal deposit lacks corroborated affiliation evidence, the earlier source-backed manifestation retains the single credit.
- Preserves every earlier frozen artifact, including schema-v4 ranking checksum
sha256:304240f7451c4cc26bee63e97bcab2cab65e1ad144bc335fcd56b64be86de5d7. The admitted schema-v6 checksum issha256:6cf9408b5a50414c7c466df55ff0ea206b69acbeafb270432ec2342a24269ad1. The current schema-v7 checksum issha256:bcc059f6e8446879c47a8c4c4a42885e6c4a255ca71fe50b5eb827377860cfac. - Resolves publication-time universities through exact-year OpenAlex work authorships, official conference/arXiv v1 PDF front matter, or exact structured Crossref author-affiliation matches independently corroborated by a ROR city or domain in the deposited affiliation text.
- Gives peer-reviewed ICML, NeurIPS, ICAIF, and admitted journal papers 1.0 weight and arXiv-only papers 0.5 weight, divided equally across distinct resolved universities.
- Provides an automated-review monitor at
/admin. Every calibration paper receives two blind AI reviews, evidence-aware AI adjudication, and independent AI verification; the owner is not a required domain reviewer. - Freezes a 210/90 development/holdout split and provides reproducible agreement, confidence, correction, unresolved-case, and weighted/unweighted classifier-proxy metrics.
- Releases
topical-filter-poc@2after a reproducible development comparison and one untouched holdout evaluation. - Uses 1.0 point per rankable peer-reviewed conference or journal paper and 0.5 per rankable arXiv-only paper, split equally across distinct universities.
- Expands each university into the exact papers and fractional contributions producing its score; unresolved papers receive no credit.
- Offers weighted contribution, peer-reviewed output, and recent-momentum ranking lenses that compose with every ranking filter.
- Encodes the selected lens, filters, and expanded institution dossier in a shareable URL and restores the same view after reload.
- Decomposes each visible score by source, year, AI method, and finance problem with reconciliation-aware displayed totals.
- Publishes 1,578 source-bound evidence rows as deterministic CSV and JSON,
with release paths, counts, schema, and the exact current ranking checksum
declared in
public/data/university-ranking-evidence-v2.manifest.json.
The candidate labels and university board are experimental POC outputs, not
human gold or a publication-ready public ranking. The base v2 browser artifact,
ICAIF, journal, and current-year arXiv projections, and the additive ranking
artifact are versioned
locally; public deployment remains a separate approval. See
docs/ARXIV_FULL_RANKING.md for the full-cohort
scoring contract and
docs/RANKING_COHORT_POLICY.md for the
Milestone 2.5 scope decision. The offline affiliation expansion is documented
in
docs/PUBLICATION_TIME_AFFILIATIONS.md.
Final POC behavior and verification are recorded in
docs/FINAL_POC_PRODUCTIZATION.md, and the
separate thesis release is documented in
docs/THESIS_RELEASE.md. The admitted ICAIF source,
impact, rights, and verification record is
docs/ICAIF_RELEASE.md. The three-journal source,
filter, canonical-link, and ranking record is
docs/FINANCE_JOURNAL_RELEASE.md.
The current-year arXiv source, filter, affiliation, deduplication, and ranking
record is
docs/CURRENT_ARXIV_RELEASE.md.
The frozen 300-paper release has completed the four-stage automated review:
- primary-review core agreement: 282/300 (94%);
- final verifier outcomes: 293 accepted, 6 corrected, 1 boundary;
- final labels: 121 include, 178 exclude, 1 boundary;
- high/medium confidence: 299/300;
- rank-eligible calibration papers: 121.
The workflow and artifacts validate. topical-filter-poc@1 missed the frozen
holdout precision gate at 80%. The rules for topical-filter-poc@2 were frozen
on development data before one holdout evaluation; v2 reached 93.65%
population-weighted holdout precision and passed the 90% gate. Its only
sufficiently powered major method slice also passed the frozen 85% threshold
at 97.34% precision.
The release decision is use v2 for future topical-filter artifacts while retaining v1 as a reproducible baseline. V2's weighted holdout recall falls from 12.96% to 11.94%, and unweighted automated-decision coverage falls from 67.42% to 56.18%, because more ambiguous records are routed to review. These tradeoffs remain explicit; the model-assisted reference is not human gold.
The frozen Milestone 2 base inventory enumerates:
- 24,781 NeurIPS proceedings records, including the separate 2021 Datasets & Benchmarks track;
- 13,418 ICML/PMLR proceedings records;
- 395,610 canonical arXiv records discovered from q-fin plus selected AI
categories and dated by
arXivRawv1 history.
The full normalized base release contains 433,809 unique source records. The
admitted ICAIF and journal releases add 454 exact main-proceedings records and
633 journal records through 2026-08-14 and 69,458 current-year arXiv records
through 2026-08-13 UTC, yielding 504,354 source records exposed by the POC. Raw snapshots
and full local releases stay under ignored .local/ storage. Validated
manifests, compact projections, and aggregate impact are versioned under
data/ and public/data/.
The complete conference enrichment covers all 38,199 ICML and NeurIPS records
with exact membership and zero merge duplicates. The frozen expanded filter
contains 2,440 automated candidates, 412,301 manual-review records, and 19,068
exclusions. See
docs/TOPICAL_FILTER_POC.md for the contract and
limitations.
Milestone 2 ingestion and enrichment are frozen. The inventory pipeline
separately enumerates the 174-paper
NeurIPS 2021 Datasets & Benchmarks proceedings, discovers cs.AI, cs.LG,
cs.MA, cs.CL, and stat.ML from arXiv ListSets, harvests both arXiv
and arXivRaw, and merges cross-lists with q-fin by canonical arXiv ID. A
one-page-per-set dry run validated all five AI streams and retained 4,144
unique 2016–2025 records; it is explicitly incomplete and is not a release
count.
Requires Node.js >=22.13.0. Pipeline commands also require
uv.
npm install
npm run devThen open http://localhost:3000.
npm run lint
npm testnpm test checks the deterministic evidence exports, performs a production
build, and runs the server-rendered/data contracts.
npm run pipeline:test
npm run pipeline:inventory
npm run pipeline:validate -- .local/inventory/<release> --require-complete
npm run pipeline:enrich -- .local/inventory/<release> \
--selection all --source neurips --start-year 2016 --end-year 2016
npm run pipeline:validate-enrichment -- \
.local/enrichment/<neurips-year-release> --require-complete
npm run pipeline:enrich-icml -- .local/inventory/<release>
npm run pipeline:finalize-m2 -- \
.local/inventory/inventory-2016-2025-20260729T185323Z \
--enrichment-root .local/enrichment
npm run pipeline:prepare-leaderboard -- \
.local/topical-filter/topical-filter-20260801T173234Z \
--ranking-output data/poc/university-ranking-full-v3.json
npm run pipeline:build-cohort-policy -- \
.local/topical-filter/topical-filter-20260801T173234Z/included_candidates.json \
data/poc/university-ranking-full-v3.json \
data/review/ranking-cohort-review-v1.json \
data/poc/ranking-cohort-policy-v1.json
npm run pipeline:validate-cohort-policy -- \
data/poc/ranking-cohort-policy-v1.json \
.local/topical-filter/topical-filter-20260801T173234Z/included_candidates.json \
data/poc/university-ranking-full-v3.json \
data/review/ranking-cohort-review-v1.json
npm run pipeline:validate-canonical-works -- \
data/poc/canonical-works-v1.json \
data/poc/university-ranking-full-v3.json
npm run pipeline:validate-canonical-links -- \
data/poc/canonical-links-v1.json \
data/poc/canonical-works-v1.json \
data/poc/university-ranking-full-v3.json
npm run pipeline:validate-affiliation-audit -- \
data/poc/publication-affiliation-audit-v1.json \
data/poc/university-ranking-full-v3.json \
data/poc/canonical-works-v1.json \
.local/frontmatter-cache
npm run pipeline:validate-affiliation-ranking -- \
data/poc/university-ranking-affiliations-v4.json \
data/poc/university-ranking-full-v3.json \
data/poc/canonical-works-v1.json \
data/poc/publication-affiliation-audit-v1.jsonpipeline:finalize-m2 is the preferred offline Milestone 2 handoff. It
discovers exactly one complete, parent-bound ICML 2016–2025 release and one
complete NeurIPS release for every year from 2016 through 2025; strictly
validates all components; rejects cross-release duplicates or any total other
than 38,199 conference papers; creates and validates the expanded v2 topical
filter; and creates and validates the 400-paper source-balanced recall
calibration release. It does not call an AI model or make any paid request.
Milestone 7 uses six sequential Crossref requests bound to the allowlisted 2020–2025 ICAIF main-proceedings DOIs. Raw source responses remain ignored locally; the compact public projection contains no abstracts or ACM content.
npm run pipeline:fetch-icaif -- --mailto owner@example.com
npm run pipeline:validate-icaif -- .local/icaif/<release> --require-complete
npm run pipeline:finalize-icaif -- .local/icaif/<release>
npm run pipeline:validate-icaif-impact -- \
data/poc/icaif-coverage-impact-v1.json .local/icaif/<release>
npm run pipeline:validate-icaif-ranking -- \
data/poc/university-ranking-affiliations-v5.json \
data/poc/icaif-coverage-impact-v1.json
npm run pipeline:validate-icaif-projection -- \
public/data/icaif-paper-candidates-v1.json \
data/poc/icaif-coverage-impact-v1.json \
data/poc/university-ranking-affiliations-v5.jsonpipeline:finalize-icaif validates the source, measures canonical and
publication-affiliation impact, applies the admission gate, creates ranking v5
with conference-owned duplicate credit, writes the rights-safe public
projection, and validates every result before replacing an output. See
docs/ICAIF_RELEASE.md.
The journal extension uses three sequential Crossref ISSN queries for the exact 2016–2025 denominator. Deposited abstracts can be used locally for topical classification but are omitted from the public artifact.
npm run pipeline:fetch-journals
npm run pipeline:validate-journals -- \
.local/journals/<release> --require-complete
npm run pipeline:finalize-journals -- .local/journals/<release>
npm run pipeline:validate-journal-impact -- \
data/poc/finance-journal-coverage-impact-v1.json \
.local/journals/<release>
npm run pipeline:validate-journal-ranking -- \
data/poc/university-ranking-affiliations-v6.json \
data/poc/finance-journal-coverage-impact-v1.json
npm run pipeline:validate-journal-projection -- \
public/data/finance-journal-paper-candidates-v1.json \
data/poc/finance-journal-coverage-impact-v1.json \
data/poc/university-ranking-affiliations-v6.jsonpipeline:finalize-journals applies the existing two-axis classifier, links
preprint/conference manifestations, resolves structured affiliations through
corroborated ROR matches, writes ranking v6, and validates the rights-safe
public projection. See
docs/FINANCE_JOURNAL_RELEASE.md.
Milestone 6 keeps theses in a separate institution lens and binds that lens to the unchanged paper-ranking checksum. Acquisition is source-specific: DataCite uses the frozen paired-topic query, Crossref enumerates every 2016–2025 dissertation approval-year shard, and EThOS uses the versioned British Library bulk snapshot. OpenAIRE is a documented first-release exclusion rather than a partial search presented as complete.
npm run pipeline:fetch-theses
npm run pipeline:fetch-crossref-theses
npm run pipeline:fetch-ethos-theses -- --input-path /path/to/EThOS_CSV_202310.csv
npm run pipeline:validate-theses -- .local/theses/<source-release> --require-complete
npm run pipeline:build-thesis-projection -- \
.local/theses/<datacite-release> \
.local/theses/<crossref-release> \
.local/theses/<ethos-release> \
--output-path public/data/thesis-candidates-v1.json
npm run pipeline:validate-thesis-projectionCrossref list acquisition is deliberately sequential at no more than one
request per second. Deposited Crossref abstracts can be used locally for
classification but are not copied into the public artifact. See
docs/THESIS_SOURCE_STRATEGY.md and
docs/SOURCE_POLICIES.md.
An interrupted Crossref release can resume only after every stored raw page
and normalized byte is revalidated. If Crossref has expired the last cursor,
--restart-incomplete-year replays that year's stored pages, requires the
total and ordered DOI identities on every page to match, and then continues
from the fresh cursor:
npm run pipeline:fetch-crossref-theses -- \
--resume-raw-dir .local/theses/<raw-crossref-release> \
--resume-release-dir .local/theses/<crossref-release> \
--restart-incomplete-yearIf that replay proves the live yearly snapshot has changed, use
--replace-incomplete-year instead. The command moves the incomplete raw and
normalized data into timestamped recovery backups, revalidates the completed
year prefix, and reacquires only the changed year from one consistent cursor.
The equivalent lower-level commands remain available for diagnosis:
npm run pipeline:filter -- .local/inventory/<release> \
--enrichment-dir .local/enrichment/<complete-icml> \
--enrichment-dir .local/enrichment/<neurips-2016> \
--enrichment-dir .local/enrichment/<neurips-2017> \
--enrichment-dir .local/enrichment/<neurips-2018> \
--enrichment-dir .local/enrichment/<neurips-2019> \
--enrichment-dir .local/enrichment/<neurips-2020> \
--enrichment-dir .local/enrichment/<neurips-2021> \
--enrichment-dir .local/enrichment/<neurips-2022> \
--enrichment-dir .local/enrichment/<neurips-2023> \
--enrichment-dir .local/enrichment/<neurips-2024> \
--enrichment-dir .local/enrichment/<neurips-2025> \
--classifier-version topical-filter-poc@2
npm run pipeline:validate-filter -- .local/topical-filter/<release>
npm run pipeline:prepare-recall-calibration -- \
.local/topical-filter/<expanded-v2-release> \
--expected-topical-release-id <expanded-v2-release> \
--expected-classifications-sha256 <sha256:...> \
--expected-enrichment-sha256 <sha256:...> \
--expected-merged-enrichments-sha256 <sha256:...>
npm run pipeline:validate-calibration -- .local/calibration/<release>
npm run pipeline:partition-calibration -- .local/calibration/<release> \
.local/calibration/automated-review/<release>/partition.json
npm run pipeline:prepare-ai-review -- .local/calibration/<release> \
.local/topical-filter/<expanded-v2-release> \
.local/calibration/automated-review/<release> \
--lane reviewer_a --reviewer sol-xhigh-reviewer-a \
--prompt-path docs/AI_REVIEW_PROTOCOL.md
npm run pipeline:run-ai-stage -- \
.local/calibration/automated-review/<release>/reviewer_a \
--runner-command "pipeline/bin/openai-responses-adapter"
npm run pipeline:assemble-ai-review -- .local/calibration/<release> \
.local/calibration/automated-review/<release>/reviewer_a \
.local/calibration/automated-review/<release>/reviewer-a.json
npm run pipeline:prepare-ai-review -- .local/calibration/<release> \
.local/topical-filter/<expanded-v2-release> \
.local/calibration/automated-review/<release> \
--lane reviewer_b --reviewer sol-xhigh-reviewer-b \
--prompt-path docs/AI_REVIEW_PROTOCOL.md
npm run pipeline:run-ai-stage -- \
.local/calibration/automated-review/<release>/reviewer_b \
--runner-command "pipeline/bin/openai-responses-adapter"
npm run pipeline:assemble-ai-review -- .local/calibration/<release> \
.local/calibration/automated-review/<release>/reviewer_b \
.local/calibration/automated-review/<release>/reviewer-b.json
npm run pipeline:prepare-ai-adjudication -- \
.local/calibration/<release> \
.local/topical-filter/<expanded-v2-release> \
.local/calibration/automated-review/<release>/reviewer-a.json \
.local/calibration/automated-review/<release>/reviewer-b.json \
.local/calibration/automated-review/<release>/adjudication \
--adjudicator sol-xhigh-adjudicator \
--prompt-path docs/AI_ADJUDICATION_PROTOCOL.md
npm run pipeline:run-ai-stage -- \
.local/calibration/automated-review/<release>/adjudication \
--runner-command "pipeline/bin/openai-responses-adapter"
npm run pipeline:assemble-ai-adjudication -- \
.local/calibration/<release> \
.local/calibration/automated-review/<release>/adjudication \
.local/calibration/automated-review/<release>/adjudication.json
npm run pipeline:prepare-ai-verification -- \
.local/calibration/<release> .local/topical-filter/<release> \
.local/calibration/automated-review/<release>/adjudication.json \
.local/calibration/automated-review/<release>/verification \
--verifier sol-xhigh-verifier \
--prompt-path docs/AI_VERIFICATION_PROTOCOL.md
npm run pipeline:run-ai-stage -- \
.local/calibration/automated-review/<release>/verification \
--runner-command "pipeline/bin/openai-responses-adapter"
npm run pipeline:assemble-automated-reference -- \
.local/calibration/<release> \
.local/calibration/automated-review/<release>/adjudication.json \
.local/calibration/automated-review/<release>/verification \
.local/calibration/automated-review/<release>/reference.json
npm run pipeline:evaluate-automated-reference -- \
.local/calibration/<release> \
.local/calibration/automated-review/<release>/adjudication.json \
.local/calibration/automated-review/<release>/reference.json \
.local/calibration/automated-review/<release>/partition.json \
.local/calibration/automated-review/<release>/evaluation.json \
--candidate-classifications \
.local/topical-filter/<expanded-v2-release>/classifications.jsonlThe default inventory fetches the verified 2016–2025 NeurIPS and ICML indexes,
the separate 2021 Datasets & Benchmarks proceedings, all nine q-fin category
sets, and the five selected AI category sets discovered from arXiv OAI-PMH.
Structured metadata is paired with arXivRaw version history so the time
window uses the actual v1 date. Cross-lists and q-fin/AI overlap collapse on
the canonical versionless arXiv ID while preserving discovery sets and raw
provenance. See
docs/SOURCE_INVENTORY.md for the output and
recovery contract.
app/— page shell, metadata, and visual systemcomponents/candidate-explorer.tsx— real candidate-paper filtering and evidence inspectioncomponents/paper-candidate-preview.tsxandcomponents/thesis-candidate-preview.tsx— compact homepage entry points to the dedicated evidence explorerscomponents/ranking-explorer.tsx— generated university leaderboard and expandable contribution evidencecomponents/thesis-explorer.tsx— separate thesis discovery and resolved degree-grantor lenslib/catalog.ts— typed adapter for the generated ranking artifactlib/ranking-cohort.ts— typed adapter for the official, experimental, and discovery-only policy artifactlib/canonical-works.ts— typed adapter for the compact, checksum-bound linked-manifestation projectionlib/topical-filter.ts— typed portable topical-filter releaselib/theses.ts— typed adapter for the multi-source thesis projectionpipeline/— Python connectors, classification, four-stage automated review packet/validation tooling, affiliation resolution, ranking release, evaluation, and testsdata/manifests/— validated release and candidate-profile summariesdata/poc/— bounded candidate data embedded in the frontendpublic/data/— complete automated candidate pool loaded by the frontend.local/calibration/automated-review/— ignored primary/adjudication/ verification artifacts and the validated model-assisted referencedata/review/— legacy queue plus current review contractapp/admin/— automated monitor; optional legacy override tools live under/admin/manual-reviewcomponents/automated-review-monitor.tsx— provenance, confidence, and rank-eligibility monitorpipeline/src/ai_quant_pipeline/automated_reference.py— adjudication, verification, and conservative final-reference contractdocs/— official endpoint contract and inventory resulttests/— rendered HTML checks.openai/hosting.json— Sites project and optional binding metadata
The research and ingestion plan lives in the vault project packet at
projects/ai-quant-research-rankings/.