Skip to content
arkdongPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

AI×Quant Index

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.

Current POC

  • 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@2 to 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 is sha256:6cf9408b5a50414c7c466df55ff0ea206b69acbeafb270432ec2342a24269ad1. The current schema-v7 checksum is sha256: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@2 after 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.

Automated calibration result

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.

Source inventory

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 arXivRaw v1 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.

Run locally

Requires Node.js >=22.13.0. Pipeline commands also require uv.

npm install
npm run dev

Then open http://localhost:3000.

Verify

npm run lint
npm test

npm test checks the deterministic evidence exports, performs a production build, and runs the server-rendered/data contracts.

Build and validate the inventory

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.json

pipeline: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.

Build and validate the ICAIF release

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.json

pipeline: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.

Build and validate the finance-journal release

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.json

pipeline: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.

Build and validate the thesis stream

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-projection

Crossref 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-year

If 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.jsonl

The 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.

Project shape

  • app/ — page shell, metadata, and visual system
  • components/candidate-explorer.tsx — real candidate-paper filtering and evidence inspection
  • components/paper-candidate-preview.tsx and components/thesis-candidate-preview.tsx — compact homepage entry points to the dedicated evidence explorers
  • components/ranking-explorer.tsx — generated university leaderboard and expandable contribution evidence
  • components/thesis-explorer.tsx — separate thesis discovery and resolved degree-grantor lens
  • lib/catalog.ts — typed adapter for the generated ranking artifact
  • lib/ranking-cohort.ts — typed adapter for the official, experimental, and discovery-only policy artifact
  • lib/canonical-works.ts — typed adapter for the compact, checksum-bound linked-manifestation projection
  • lib/topical-filter.ts — typed portable topical-filter release
  • lib/theses.ts — typed adapter for the multi-source thesis projection
  • pipeline/ — Python connectors, classification, four-stage automated review packet/validation tooling, affiliation resolution, ranking release, evaluation, and tests
  • data/manifests/ — validated release and candidate-profile summaries
  • data/poc/ — bounded candidate data embedded in the frontend
  • public/data/ — complete automated candidate pool loaded by the frontend
  • .local/calibration/automated-review/ — ignored primary/adjudication/ verification artifacts and the validated model-assisted reference
  • data/review/ — legacy queue plus current review contract
  • app/admin/ — automated monitor; optional legacy override tools live under /admin/manual-review
  • components/automated-review-monitor.tsx — provenance, confidence, and rank-eligibility monitor
  • pipeline/src/ai_quant_pipeline/automated_reference.py — adjudication, verification, and conservative final-reference contract
  • docs/ — official endpoint contract and inventory result
  • tests/ — 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/.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages