Report not found

There was a problem finding this report.
Created in the Mode Community
May 29, 2014 · Refreshed about 2 years ago
Do VCs Have an Age Bias?
Description
What age founder do different VCs prefer?

Collaborators

Run History
SELECT a.investor_permalink, a.investor_name, COUNT(a.person_permalink) AS total, EXTRACT('day' FROM AVG(a.rd - a.bd))/365 AS average_age, COUNT(CASE WHEN a.rd - a.bd <= INTERVAL '20 YEAR' THEN a.person_permalink ELSE NULL END) AS under_20, COUNT(CASE WHEN a.rd - a.bd > INTERVAL '20 YEAR' AND a.rd - a.bd <= INTERVAL '30 YEAR' THEN a.person_permalink ELSE NULL END) AS t20, COUNT(CASE WHEN a.rd - a.bd > INTERVAL '30 YEAR' AND a.rd - a.bd <= INTERVAL '40 YEAR' THEN a.person_permalink ELSE NULL END) AS t30, COUNT(CASE WHEN a.rd - a.bd > INTERVAL '40 YEAR' AND a.rd - a.bd <= INTERVAL '50 YEAR' THEN a.person_permalink ELSE NULL END) AS t40, COUNT(CASE WHEN a.rd - a.bd > INTERVAL '50 YEAR' AND a.rd - a.bd <= INTERVAL '60 YEAR' THEN a.person_permalink ELSE NULL END) AS t50, COUNT(CASE WHEN a.rd - a.bd > INTERVAL '60 YEAR' THEN a.person_permalink ELSE NULL END) AS t60 FROM ( SELECT i.investor_permalink, i.investor_name, p.person_permalink, p.born_date AS bd, MIN(i.round_date) AS rd, COUNT(*) FROM benn.crunchbase_dimension_people p JOIN benn.crunchbase_dimension_relationships r ON r.person_permalink = p.person_permalink AND r.title ILIKE '%founder%' AND r.entity_type = 'company' JOIN benn.crunchbase_dimension_investments i ON i.company_permalink = r.entity_permalink AND i.investor_entity = 'financial_org' WHERE p.born_date IS NOT NULL AND p.born_date != '1900-01-01' GROUP BY 1,2,3,4 ) a GROUP BY 1,2 HAVING COUNT(a.person_permalink) >= 10 LIMIT 100
SELECT a.investor_permalink, a.investor_name, COUNT(a.person_permalink) AS total, EXTRACT('day' FROM AVG(a.rd - a.bd))/365 AS average_age, COUNT(CASE WHEN a.rd - a.bd <= INTERVAL '20 YEAR' THEN a.person_permalink ELSE NULL END) AS under_20, COUNT(CASE WHEN a.rd - a.bd > INTERVAL '20 YEAR' AND a.rd - a.bd <= INTERVAL '30 YEAR' THEN a.person_permalink ELSE NULL END) AS t20, COUNT(CASE WHEN a.rd - a.bd > INTERVAL '30 YEAR' AND a.rd - a.bd <= INTERVAL '40 YEAR' THEN a.person_permalink ELSE NULL END) AS t30, COUNT(CASE WHEN a.rd - a.bd > INTERVAL '40 YEAR' AND a.rd - a.bd <= INTERVAL '50 YEAR' THEN a.person_permalink ELSE NULL END) AS t40, COUNT(CASE WHEN a.rd - a.bd > INTERVAL '50 YEAR' AND a.rd - a.bd <= INTERVAL '60 YEAR' THEN a.person_permalink ELSE NULL END) AS t50, COUNT(CASE WHEN a.rd - a.bd > INTERVAL '60 YEAR' THEN a.person_permalink ELSE NULL END) AS t60 FROM ( SELECT i.investor_permalink, i.investor_name, p.person_permalink, p.born_date AS bd, MIN(i.round_date) AS rd, COUNT(*) FROM benn.crunchbase_dimension_people p JOIN benn.crunchbase_dimension_relationships r ON r.person_permalink = p.person_permalink AND r.title ILIKE '%founder%' AND r.entity_type = 'company' JOIN benn.crunchbase_dimension_investments i ON i.company_permalink = r.entity_permalink AND i.investor_entity = 'financial_org' WHERE p.born_date IS NOT NULL AND p.born_date != '1900-01-01' GROUP BY 1,2,3,4 ) a GROUP BY 1,2 HAVING COUNT(a.person_permalink) >= 10 LIMIT 100
<!DOCTYPE html> <meta charset="utf-8"> <style> body { font-family: Helvetica, Arial, sans-serif; font-size: 12px; } h1 { text-align: center; } p, text { font-size: 12px; } p { width: 350px; margin-left:auto; margin-right:auto;} li { width: 300px; font-size: 12px;} ul { width:350px; margin-left:auto; margin-right:auto; } #side-graph { text-align:center; } .container { margin: 0 auto; } .square { stroke: #ccc; stroke-width: 1px; cursor: pointer; } #side,#chart { float:left; width:50%; } #chart { text-align:center; } .x.axis path, .x.axis line { fill: none; stroke: #ccc; shape-rendering: crispEdges; } line { stroke: #e2e2e2; } .y.axis path { display: none; } .background-bar { fill: #2171b5;} .bar { fill: #ea833f; fill-opacity: .9; } @media (max-width: 940px) { #side, #chart { width:100%; } } </style> <body> <h1>Do VCs Have an Age Bias?</h1> <div class="container"> <div id="side"> <p> This graphic shows how startup founders are at the time of VC investments. The graph below shows the distribution of founder age at the time a new VC first invests in the founder's company. The grid to the right shows how these distributions are different by VC firms. The darker the rectangle, the more a VC tends to invest in that age range. </p> <div id="side-graph"></div> <p> The graphic is based on data from <a target="_blank" href="http://www.crunchbase.com/">Crunchbase</a>. For several reasons, this offers a far from complete picture (as the small sample suggests). The data includes VC firms' first investment in a company, so VCs that appear to invest in older founders may instead simply invest in later-stage companies. Also, Crunchbase data is incomplete: not all investments are covered and many founders’ birth dates are unlisted. It's also likely that certain groups of founders (very famous ones, founders from San Francisco, etc.) tend to have their birthdays listed at a higher rate. </p> <p> Nevertheless, there are lots of interesting questions to ask this Crunchbase data. Click the clone button to copy this analysis and begin exploring the data on your own. A few questions this graphic made me consider: <ul> <li>Do companies in different industries tend to have founders of different ages?</li> <li>Does founder age affect how well a startup performs?</li> <li>Are there other founder characteristics&mdash;education, experience, size of the founding team&mdash;that differ by VC?</li> </ul> </div> <div id="chart"></div> </div> <script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.6.0/underscore-min.js"></script> <script> var margin = { top: 50, right: 200, bottom: 0, left: 30 }, height = 1350 - margin.top - margin.bottom, cellHeight = 15, cellWidth = 40, width = cellWidth * 6, ages = ["Under 20","20-29","30-39","40-49","50-59","60 and up"]; var barMargin = { top: 50, right: 50, bottom: 40, left: 10 }, barHeight = 400 - barMargin.top - barMargin.bottom, barWidth = 850 - width - margin.left - margin.right - barMargin.left - barMargin.right; var formatPercent = d3.format(".0%"); var colors = ["#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"]; var color = d3.scale.quantile() .domain([.0001,.7]) .range(colors) var ageScale = d3.scale.linear() .domain([10,70]) .range([0,width]) var x = d3.scale.ordinal() .domain(ages) .rangeRoundBands([0,barWidth], .1, .2); var y = d3.scale.linear() .domain([0,.85]) .range([barHeight,0]); var xAxis = d3.svg.axis() .scale(x) .orient("bottom"); var yAxis = d3.svg.axis() .scale(y) .orient("right") .tickSize(barWidth) .tickFormat(formatPercent); raw = dataset.content; raw.sort(function(a, b) { return d3.descending(a.average_age, b.average_age); }) var data = []; var vcs = []; var avgs = []; var investorMap = d3.map() var t1T=0,t2T=0,t3T=0,t4T=0,t5T=0,t6T=0,tT=0; raw.forEach(function(d) { var vc = d.investor_permalink; var t1 = {vc:vc,age:0,value:d.under_20/d.total} var t2 = {vc:vc,age:1,value:d.t20/d.total} var t3 = {vc:vc,age:2,value:d.t30/d.total} var t4 = {vc:vc,age:3,value:d.t40/d.total} var t5 = {vc:vc,age:4,value:d.t50/d.total} var t6 = {vc:vc,age:5,value:d.t60/d.total} investorMap.set(d.investor_permalink,d.investor_name); t1T += +d.under_20; t2T += +d.t20; t3T += +d.t30; t4T += +d.t40; t5T += +d.t50; t6T += +d.t60; tT += +d.total; data.push(t1,t2,t3,t4,t5,t6) vcs.push(vc) avgs.push({vc:vc,avg:d.average_age}) }) var totalTally = [t1T/tT,t2T/tT,t3T/tT,t4T/tT,t5T/tT,t6T/tT] var svg = d3.select("#chart").append("svg") .attr("width", width + margin.left + margin.right) .attr("height", height + margin.top + margin.bottom) .append("g") .attr("transform", "translate(" + margin.left + "," + margin.top + ")"); var vcList = svg.selectAll(".vc-axis") .data(vcs) .enter().append("text") .text(function (d) { return investorMap.get(d); }) .attr("x", width + 20) .attr("y", function (d, i) { return i * cellHeight; }) .attr("transform", "translate(-6," + cellHeight / 1.5 + ")") .attr("class","vc-axis"); var ageLabel = svg.selectAll(".age-axis") .data(ages) .enter().append("text") .text(function(d) { return d; }) .attr("y", function(d, i) { return i * cellWidth*.75 + 5; }) .attr("x", function(d, i) { return i * cellWidth*.75 + 10; }) .attr("transform", "rotate(-45)") .attr("class","age-axis"); var map = svg.selectAll(".square") .data(data) .enter().append("rect") .attr("x", function(d) { return d.age * cellWidth; }) .attr("y", function(d) { return vcs.indexOf(d.vc) * cellHeight; }) .attr("class","square") .attr("id",function(d) { return d.vc; }) .attr("width", cellWidth) .attr("height", cellHeight) .style("fill", function(d) { if (d.value > 0) {return color(d.value); } else { return "#f7fbff";} }); var dots = svg.selectAll(".dot") .data(avgs) .enter().append("circle") .attr("cx", function(d) { return ageScale(d.avg); }) .attr("cy", function(d) { return vcs.indexOf(d.vc) * cellHeight + (cellHeight/2); }) .attr("class","dot") .attr("r", 4) .style("fill","#ea833f"); var dotLine = svg.append("line") .attr("x1",ageScale(avgs[6].avg) + 4) .attr("y1",vcs.indexOf(avgs[6].vc) * cellHeight + (cellHeight/2 + 4)) .attr("x2",ageScale(avgs[6].avg) + 50) .attr("y2",vcs.indexOf(avgs[6].vc) * cellHeight + (cellHeight/2 + 4) + 50) .style("stroke","black"); var dotText = svg.append("text") .attr("x",ageScale(avgs[6].avg) + 50 + 3) .attr("y",vcs.indexOf(avgs[6].vc) * cellHeight + (cellHeight/2 + 4) + 50 + 9) .text("Firm average") // Make side chart var side = d3.select("#side-graph").append("svg") .attr("width", barWidth + barMargin.left + barMargin.right) .attr("height", barHeight + barMargin.top + barMargin.bottom) .append("g") .attr("transform", "translate(" + barMargin.left + "," + barMargin.top + ")"); side.append("g") .attr("class", "x axis") .attr("transform", "translate(0," + barHeight + ")") .call(xAxis); side.append("g") .attr("class", "y axis") .call(yAxis) .append("text") .attr("dy", 4) .attr("class","y-text") side.selectAll(".background-bar") .data(totalTally) .enter().append("rect") .attr("class", "background-bar") .attr("x", function(d,i) { return x(ages[i]); }) .attr("width", x.rangeBand()) .attr("y", function(d) { return y(d); }) .attr("height", function(d) { return barHeight - y(d); }); side.selectAll(".bar") .data(totalTally) .enter().append("rect") .attr("class", "bar") .attr("x", function(d,i) { return x(ages[i]) + x.rangeBand()/4; }) .attr("width", x.rangeBand()/2) .attr("y", barHeight) .attr("height",0); barText = side.append("text") .attr("x",barWidth/2) .attr("y",-40) .attr("text-anchor","middle") .style("font-style","italic") .style("fill","#ea833f") .style("font-size","14px") .text("Click on the grid to see an individual firm"); overallSquare = side.append("rect") .attr("x",barWidth/2 - 50) .attr("y",-30) .attr("width",15) .attr("height",15) .style("fill","#2171b5") overallText = side.append("text") .attr("x",barWidth/2 - 50 + 20) .attr("y",-18) .text("Overall distribution") overallCount = side.append("text") .attr("x",barWidth/2 - 50) .attr("y",-1) .text("Number of founders: " + tT); selectedSquare = side.append("rect") .attr("x",barWidth/2) .attr("y",-30) .attr("width",15) .attr("height",15) .style("fill","#ea833f") .attr("visibility","hidden") selectedText = side.append("text") .attr("x",barWidth/2 + 20) .attr("y",-18) .text("Distribution of selected firm") .attr("visibility","hidden"); selectedCount = side.append("text") .attr("x",barWidth/2) .attr("y",-1); $(".square").click(function() { var selectedVC = $(this).attr("id"); var e = _.select(raw, function(d){ return d.investor_permalink == selectedVC; }); var vcData = [+e[0].under_20/+e[0].total, +e[0].t20/+e[0].total, +e[0].t30/+e[0].total, +e[0].t40/+e[0].total, +e[0].t50/+e[0].total, +e[0].t60/+e[0].total] side.selectAll(".bar") .data(vcData) .transition() .attr("y", function(d) { return y(d); }) .attr("height", function(d) { return barHeight - y(d); }) .duration(1000); barText .style("fill","black") .style("font-style","normal") .attr("y",-40) .text(investorMap.get(selectedVC)); if (investorMap.get(selectedVC).length > 20) { selectedText .attr("visibility","visible") .text("Distribution of " + investorMap.get(selectedVC).slice(0,20) + "..."); } else { selectedText.attr("visibility","visible").text("Distribution of " + investorMap.get(selectedVC)); } selectedSquare.attr("visibility","visible"); selectedCount.text("Number of founders: " + e[0].total); overallText.attr("x",10 + 20) overallSquare.attr("x",10); overallCount.attr("x",10); }) </script>
{{ dataSourceName(params.queryId) }}

The dataset is too large to view in browser

Export

Looks like something went wrong with your query. Get help here.

{{ DS.queryRuns[params.queryId].errorMessage }}
This query was cancelled