/* BT historical comps (pitchers) v3 */ window.BTHCP_INDEX_URL="https://storage.ghost.io/c/f2/85/f285ce72-40e3-409f-ae3b-2ef371936c02/content/files/2026/10/bt-hcp-2026c-index.json"; window.BTHCP_ALLOW=null; (function __hcp(){ var IDX=window.BTHCP_INDEX_URL, ALLOW=window.BTHCP_ALLOW; if(!IDX)return; var HS={R:'right-handed',L:'left-handed',S:'switch-pitching'}; var RN={SP:'starters',RP:'relievers'}; var CSS="#bt-hcp{margin:28px 0}#bt-hcp details{background:#11161f;border:1px solid #2a3444;border-radius:12px;color:#e9eef5}#bt-hcp summary{cursor:pointer;list-style:none;padding:14px 16px;display:flex;justify-content:space-between;align-items:center;gap:12px}#bt-hcp summary::-webkit-details-marker{display:none}#bt-hcp .hc-st{font-size:20px;font-weight:800;color:#fff}#bt-hcp .hc-tz{font-size:14px;color:#a9b4c4;margin-top:3px}#bt-hcp .hc-ar{font-size:22px;color:#2fa4ff;transition:transform .2s}#bt-hcp details[open] .hc-ar{transform:rotate(90deg)}#bt-hcp .hc-body{padding:0 16px 16px}#bt-hcp .hc-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 14px}#bt-hcp .hc-btn,#bt-hcp .hc-sel{background:#18202c;color:#e9eef5;border:1px solid #2a3444;border-radius:999px;padding:8px 14px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}#bt-hcp .hc-btn.on,#bt-hcp .hc-sel.on{background:#2fa4ff;border-color:#2fa4ff;color:#06121f}#bt-hcp .hc-target{border-left:4px solid #d9b25b;background:#18202c;padding:12px 14px;border-radius:8px}#bt-hcp .hc-tl{font-weight:800;font-size:17px}#bt-hcp .hc-tline{font-size:14px;margin-top:4px}#bt-hcp .hc-tnote,#bt-hcp .hc-sub{font-size:13px;color:#a9b4c4;margin-top:6px}#bt-hcp .hc-h{font-size:18px;font-weight:800;margin:20px 0 6px;color:#fff}#bt-hcp .hc-card{background:#18202c;border:1px solid #2a3444;border-radius:10px;padding:12px 14px;margin:10px 0}#bt-hcp .hc-dec{font-size:12px;font-weight:800;letter-spacing:.08em;color:#d9b25b;margin-bottom:4px}#bt-hcp .hc-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}#bt-hcp .hc-name{font-weight:800;font-size:16px}#bt-hcp .hc-meta{font-size:13px;color:#a9b4c4;margin-top:2px}#bt-hcp .hc-tag{display:inline-block;font-size:11px;font-weight:800;background:#3a2f17;color:#d9b25b;border-radius:4px;padding:1px 6px;vertical-align:middle}#bt-hcp .hc-sim{text-align:right;line-height:1}#bt-hcp .hc-sim b{font-size:22px;color:#2fa4ff}#bt-hcp .hc-sim span{display:block;font-size:11px;color:#a9b4c4;margin-top:3px}#bt-hcp .hc-bar{height:5px;background:#2a3444;border-radius:3px;margin:8px 0;overflow:hidden}#bt-hcp .hc-bar i{display:block;height:100%;background:#2fa4ff}#bt-hcp .hc-stats{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:14px}#bt-hcp .hc-eq,#bt-hcp .hc-after{font-size:13px;color:#a9b4c4;margin-top:6px}#bt-hcp .hc-foot{font-size:12px;color:#a9b4c4;margin-top:16px}#bt-hcp .hc-lock{background:#18202c;border-radius:10px;padding:16px;text-align:center}#bt-hcp .hc-lock a{display:inline-block;margin-top:10px;background:#2fa4ff;color:#06121f;font-weight:800;border-radius:999px;padding:9px 18px;text-decoration:none}"; function f2(x){return x==null?'':Number(x).toFixed(2);} function n(x){return Number(x).toLocaleString('en-US');} function yrs(a,b){return a===b?String(a):a+'–'+String(b).slice(-2);} function ages(a,b){return a===b?'age '+a:'ages '+a+'–'+b;} function getJ(u){var k='bthcp:'+u;try{var c=sessionStorage.getItem(k);if(c)return Promise.resolve(JSON.parse(c));}catch(e){} return fetch(u).then(function(r){return r.json()}).then(function(j){try{if(u===IDX)sessionStorage.setItem(k,JSON.stringify(j));}catch(e){}return j;});} function gline(x){var l=x.l;return x.r==='SP'?l[4]+' GS':l[3]+' G';} function card(x){var tag=x.t>0?' '+x.r+'':'';var a=x.af,af; if(a[3]>=2026){af=a[0]?'Afterward so far: '+a[0]+' season'+(a[0]>1?'s':'')+', '+a[1]+' fWAR, '+a[2]+' ERA-':'Active pitcher';} else af=a[0]?'Afterward: '+a[0]+' more season'+(a[0]>1?'s':'')+', '+a[1]+' fWAR, '+a[2]+' ERA- (career ended '+a[3]+')':'Afterward: none (career ended '+a[3]+')'; var e=x.e,l=x.l;return '
The established pitcher still active in 2026 whose seasons at the same age, at least three years ago, look most like his.
'+card(R.act):'')+'No close matches in his role.
')+ 'One pitcher per decade since the 1890s, newest first. A role tag means no '+(RN[T.r]||'pitcher')+' matched closely enough in that decade.'+(T.r==='RP'?' Few pitchers worked mainly in relief before the 1960s, so older reliever comps are rough.':'')+'
'+R.dec.map(card).join('')+ 'ERA- and FIP- compare a pitcher with his own season’s league: 100 is average and lower is better, so a 3.00 ERA in 1968 and a 4.00 ERA in 2000 can be equally good. Strikeouts, walks, homers and innings are measured against their own season too, so a 300-inning workload in 1905 and a 180-inning one today can count the same. Comps start in 1893, when the mound moved to 60 feet, 6 inches. Similarity is 100 for an identical profile. Sources: FanGraphs.
'; el.innerHTML=h;el.querySelectorAll('.hc-btn').forEach(function(b){b.onclick=function(){st.m=b.getAttribute('data-m');draw();}}); var s=el.querySelector('.hc-sel');if(s)s.onchange=function(){if(s.value){st.m=s.value;draw();}};} draw();} function mount(){var bp=document.getElementById('bt-player');if(!bp||document.getElementById('bt-hcp'))return;var m=+bp.getAttribute('data-mlbam');if(!m)return; if(ALLOW&&ALLOW.indexOf(m)<0)return; var anchor=bp.querySelector('.btp-stats');if(!anchor)return false; getJ(IDX).then(function(ix){var t=ix.t&&ix.t[m];if(!t)return; var st=document.createElement('style');st.textContent=CSS;document.head.appendChild(st); var sec=document.createElement('section');sec.id='bt-hcp';sec.className='btp-sec'; var two=!!document.getElementById('bt-hc'); sec.innerHTML='No comps available.
';return;}body(b,P);}).catch(function(){b.innerHTML='Could not load comps.
';done=false;});});}); }).catch(function(){});return true;} var tries=0;function tick(){if(mount()===false&&tries++<60)setTimeout(tick,250);} if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',tick);else tick(); })();