# YC batch similarity

Similarity between Y Combinator companies, measured across 6,142 companies in
48 batches from Summer 2005 onwards. Published with the report
"YC batches got twice as likely to repeat an earlier YC company, from 18% to 47%"
at https://fundingwatcher.com/research/yc-batch-similarity/

Data as of 2026-09-04. Licence: CC BY 4.0. Attribution: FundingWatcher.

The measurement, the controls and the limitations are in METHOD.md. No vectors
are published.

## Files

### companies.csv

One row per company, 6,142 rows.

    domain                      bare domain after normalisation, the join key
    name                        company name as YC lists it
    batch                       YC batch, for example "Winter 2024"
    best_within_batch           closest company in the same batch
    best_within_batch_domain
    best_within_batch_sim       cosine, 4 decimal places
    best_prior_batch            closest company in any earlier batch
    best_prior_batch_domain
    best_prior_batch_sim
    best_other_batch            closest company in any other batch, earlier or later
    best_other_batch_domain
    best_other_batch_sim

Companies in the first batch, and single-company batches, have empty prior or
within-batch columns.

### batch_stats.csv

One row per batch with 10 or more companies, 46 rows. Within-batch similarity
and a size-matched random control.

    n_with_vec, n_total, coverage
    mean_pair_sim, median_pair_sim, std_pair_sim      every pair in the batch
    mean_nn_sim, median_nn_sim                        each company's closest batchmate
    centroid_tightness                                cosine to the batch centroid
    p90_pair_sim, p99_pair_sim, max_pair_sim
    share_pairs_gt_065 .. share_pairs_gt_085          share of pairs over a threshold
    control_mean_pair_sim, control_std                random draw of the same size
    batch_minus_control                               mean_pair_sim minus the control
    top_pair, top_pair_sim                            closest pair in the batch
    most_isolated, most_isolated_nn                   lowest best-in-batch match
    n_clusters_080, largest_cluster_080               connected components at 0.80

### prev_batch_stats.csv

One row per batch with 30 or more companies, 37 rows. Each batch against the
batch immediately before it and against everything earlier.

    within_mean_pair, within_mean_nn
    prev_batch, n_prev, prev_mean_pair, prev_mean_nn, prev_median_nn
    prev_nn_random_control, prev_nn_control_std, prev_nn_minus_control
    n_prior_pool, prior_mean_nn, prior_median_nn
    prior_share_nn_gt_080, prior_share_nn_gt_085      against the FULL prior pool,
                                                     not pool-size controlled
    prior_fixed500_mean_nn, prior_fixed500_std, prior_fixed_sample_n
    resembles_most_pairwise, resembles_most_nn        closest earlier batch

The `prior_share_nn_gt_*` columns rise with batch order because the prior pool
grows. Use prior_twin_share_controlled.csv instead.

### prior_twin_share_controlled.csv

The pool-size-controlled twin shares, one row per batch, 37 rows. Every column
is the share of the batch whose best match into a fixed random sample of 500
companies clears the threshold, averaged over ten draws.

    batch, n, prior_n                 prior_n is the full earlier pool, for reference
    fx500_prior_80, fx500_prior_85    500 drawn from earlier batches
    fx500_any_80, fx500_any_85        500 drawn from any other batch
    fx500_later_80, fx500_later_85    500 drawn from later batches

`nan` means fewer than 500 companies were available to draw from, so no
controlled number exists. That covers batches before Summer 2013 in the prior
columns and the last two batches in the later columns.

### pairs_top.csv

The 200 closest pairs of companies inside the same batch, with YC one-liners.

    sim, batch, name_a, domain_a, one_liner_a, name_b, domain_b, one_liner_b

### cross_batch_pairs.csv

The 1,000 closest pairs of companies in different batches, with YC one-liners.

    sim, old_vs_new, batch_a, name_a, domain_a, one_liner_a,
    batch_b, name_b, domain_b, one_liner_b

`old_vs_new` is 1 when one company is from before 2020 and the other from 2023
or later.
