# Phantom shares

Problem: System allows more ownership claims (entitlements, E) than real shares (S). This inflates phantom supply, suppressing price.

Why:

1. Cash-in-lieu = ETF creation without delivering stock.
2. CNS netting = hides the resulting failure-to-deliver in pooled obligations.
3. Phantom entitlements are treated as "locatable" inventory.
4. Loop repeats using its own IOUs as feedstock.

Result: E > S. The gap (E - S) is phantom supply. Price discovery breaks. Risk accumulates in hidden failures until forced settlement (buy‑in or squeeze).

COUNTERPARTIES

DTC: Holds real shares (static at 100)

AP: Initiates creation, uses cash-in-lieu

ETF: Issues shares, books receivables

NSCC CNS: Netting engine that hides failures

Broker: Credits phantom entitlements to accounts

Market: Where phantom claims circulate

### How It Works

**Setup:** GME has 100 real shares at DTC. All entitlements start matched 1:1.

**The Loop:**

1. **AP needs GME** — wants to create ETF basket requiring 10 GME
2. **Can't locate** — no shares available to borrow/deliver
3. **Pays cash** — $1000 substituted for 10 GME (cash-in-lieu)
4. **ETF created** — fund issues shares, books "GME receivable" (IOU)
5. **Phantom born** — buyer's broker credits 10 GME exposure. Now 110 entitlements, still 100 real shares. Gap = 10 phantom.
6. **CNS nets** — NSCC pools all obligations, anonymizes the fail, resets 13-day clock. Loop repeats.

***

### Flow of Funds (Creation)

```
Buyer $1000 → Broker → Market Maker → AP
                                      ↓
                              Cash-in-lieu $1000 → ETF Custodian
                                      ↓
                              ETF shares ← ETF Issuer (books GME receivable)
                                      ↓
                              ETF shares → MM → Broker → Buyer
                                      ↓
                              Buyer holds claim on GME exposure
                              GME never moved. Phantom created.
```

***

### How Each Factor Contributes

| Mechanism              | Role in Phantom Creation                                                                            |
| ---------------------- | --------------------------------------------------------------------------------------------------- |
| **Cash-in-lieu**       | Decouples creation from delivery. ETF shares minted without underlying.                             |
| **Short selling**      | Each short creates +1 entitlement (buyer) while original holder keeps theirs. E = S + SI.           |
| **CNS netting**        | Pools gross obligations → net. Hides which trade failed. Reduces forced delivery to \~10% of gross. |
| **Derivatives**        | Options MM exception: can naked short to hedge. Married puts reset FTD clocks.                      |
| **OTC/Dark pools**     | 60%+ volume off-exchange. Less transparency. Easier to internalize without delivery.                |
| **Securities lending** | Same share lent multiple times. Phantom entitlements become "locatable" for next short.             |
| **T+1 settlement**     | Rolling window lets obligations persist. New creates stack before old ones settle.                  |

***

### CNS Netting: The Enabler

**Without CNS:**

* Broker A owes 100 shares to Broker B
* Broker B owes 100 shares to Broker A
* **Both must deliver 100 shares each**

**With CNS (90% netting):**

* NSCC nets: 100 - 100 = 0
* **Zero shares physically move**
* Both sides credit entitlements to customers anyway

**Result:** Gross trading volume explodes while physical delivery stays minimal. Entitlements multiply. Phantoms accumulate. The gap between E and S widens until forced buy-in (rare) or squeeze.

***

### The Recursive Force

```
Cash-in-lieu creates phantom
        ↓
Phantom credited as real entitlement
        ↓
Entitlement lendable/locatable
        ↓
Borrowed for next short sale
        ↓
Short sale creates another entitlement
        ↓
Demand triggers more ETF creates
        ↓
More cash-in-lieu → more phantoms
        ↓
        ↺ LOOP
```

**CNS ensures the loop never breaks** by masking delivery failures in a pooled net position.

<details>

<summary>index.html</summary>

{% code expandable="true" %}

```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>GME Phantom Shares via ETF Cash-in-Lieu + CNS</title>
<style>
*{margin:0;padding:0;box-sizing:border-box}
body{font:11px Arial,sans-serif;background:#f0f0f0;color:#000;padding:8px}
.wrap{max-width:1050px;margin:0 auto;background:#fff;border:1px solid #999;padding:10px}
h1{font-size:12px;background:#333;color:#fff;padding:6px 8px;margin:-10px -10px 10px -10px}
.grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-bottom:8px}
.grid2{display:grid;grid-template-columns:2fr 1fr;gap:8px;margin-bottom:8px}
.box{border:1px solid #000;background:#fff}
.box-head{background:#ddd;border-bottom:1px solid #000;padding:4px 6px;font-weight:700;font-size:10px}
.box-body{padding:6px}
.row{display:flex;justify-content:space-between;padding:2px 0;border-bottom:1px solid #eee}
.row:last-child{border-bottom:none}
.row.head{font-weight:700;background:#f5f5f5;padding:4px 0;border-bottom:1px solid #ccc}
.row.total{background:#ffffcc;font-weight:700;border-top:2px solid #000;margin-top:4px;padding-top:4px}
.row.warn span:last-child{color:#c00}
.val{font-weight:700}
.small{font-size:10px;color:#666}
.controls{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:8px;padding:6px;background:#f9f9f9;border:1px solid #ccc}
button{font:11px Arial,sans-serif;padding:5px 12px;border:1px solid #000;background:#fff;cursor:pointer}
button:hover{background:#000;color:#fff}
input{font:11px Arial,sans-serif;width:60px;padding:3px;border:1px solid #999;text-align:right}
label{font-size:10px;display:flex;align-items:center;gap:3px}
.chain{display:flex;align-items:center;justify-content:center;gap:4px;padding:8px;background:#f5f5f5;border:1px solid #ccc;margin-bottom:8px}
.step{padding:4px 8px;border:1px solid #000;font-size:10px;background:#fff}
.step.on{background:#000;color:#fff}
.arrow{font-size:12px}
.meters{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-bottom:8px}
.meter{border:1px solid #000;padding:6px;text-align:center;background:#fff}
.meter-lbl{font-size:9px;color:#666;margin-bottom:2px}
.meter-val{font-size:20px;font-weight:700}
.meter-val.warn{color:#c00}
.meter-bar{height:4px;background:#eee;margin-top:4px;border:1px solid #ccc}
.meter-fill{height:100%;background:#000;width:0%;transition:width .2s}
.meter-fill.warn{background:#c00}
.arena{border:1px solid #000;height:140px;position:relative;background:#fafafa;margin-bottom:8px}
.pool{position:absolute;bottom:0;width:100%;display:flex;justify-content:space-around;padding:8px}
.poolbox{border:1px solid #000;background:#fff;width:30%;padding:8px;text-align:center}
.poolbox-lbl{font-size:9px;color:#666}
.poolbox-val{font-size:14px;font-weight:700}
.token{position:absolute;width:14px;height:14px;border:1px solid #000;font-size:9px;display:flex;align-items:center;justify-content:center;transition:all .4s ease-out}
.t-cash{background:#cfc}
.t-ent{background:#ffc;border-style:dashed}
.t-ftd{background:#fcc}
.flow{position:absolute;top:35%;left:50%;transform:translate(-50%,-50%);font-weight:700;font-size:11px;opacity:0;transition:opacity .15s}
.flow.on{opacity:1}
.status{position:absolute;top:6px;left:8px;font-size:10px}
.log{border:1px solid #000;max-height:120px;overflow-y:auto}
.log table{width:100%;border-collapse:collapse;font-size:10px}
.log th,.log td{border:1px solid #ccc;padding:3px 5px}
.log th{background:#ddd;position:sticky;top:0}
.log td{background:#fff}
.log .r{text-align:right}
.formula{font-size:10px;color:#666;padding:6px;background:#f9f9f9;border:1px solid #ccc;margin-top:8px}
.formula b{color:#000}
</style>
</head>
<body>
<div class="wrap">
<h1>GME PHANTOM SHARES — ETF CASH-IN-LIEU + NSCC CNS NETTING</h1>

<div class="controls">
  <button id="stepBtn">Step</button>
  <button id="runBtn">Run</button>
  <button id="stopBtn">Stop</button>
  <button id="resetBtn">Reset</button>
  <label>Basket:<input id="pB" type="number" value="10" min="1"></label>
  <label>Cash$:<input id="pC" type="number" value="1000" min="0"></label>
  <label>Cover%:<input id="pCov" type="number" value="0" min="0" max="100"></label>
  <label>Net%:<input id="pNet" type="number" value="90" min="0" max="100"></label>
  <label>Speed:<input id="pSpd" type="number" value="400" min="50"></label>
  <span class="small">Cycle: <b id="cyc">0</b></span>
</div>

<div class="chain">
  <div class="step" data-i="0">AP needs GME</div><div class="arrow">→</div>
  <div class="step" data-i="1">Can't locate</div><div class="arrow">→</div>
  <div class="step" data-i="2">Pays cash</div><div class="arrow">→</div>
  <div class="step" data-i="3">ETF created</div><div class="arrow">→</div>
  <div class="step" data-i="4">Phantom born</div><div class="arrow">→</div>
  <div class="step" data-i="5">CNS nets</div><div class="arrow">↺</div>
</div>

<div class="meters">
  <div class="meter"><div class="meter-lbl">REAL SHARES (S)</div><div class="meter-val" id="mS">100</div><div class="meter-bar"><div class="meter-fill" id="bS"></div></div></div>
  <div class="meter"><div class="meter-lbl">ENTITLEMENTS (E)</div><div class="meter-val" id="mE">100</div><div class="meter-bar"><div class="meter-fill" id="bE"></div></div></div>
  <div class="meter"><div class="meter-lbl">PHANTOM (E-S)</div><div class="meter-val warn" id="mP">0</div><div class="meter-bar"><div class="meter-fill warn" id="bP"></div></div></div>
  <div class="meter"><div class="meter-lbl">RECEIVABLE</div><div class="meter-val warn" id="mR">0</div><div class="meter-bar"><div class="meter-fill warn" id="bR"></div></div></div>
  <div class="meter"><div class="meter-lbl">CNS NET DELIV</div><div class="meter-val" id="mN">0</div><div class="meter-bar"><div class="meter-fill" id="bN"></div></div></div>
</div>

<div class="grid2">
  <div class="arena" id="arena">
    <div class="status" id="status">Ready</div>
    <div class="flow" id="flow"></div>
    <div class="pool">
      <div class="poolbox"><div class="poolbox-lbl">DTC VAULT</div><div class="poolbox-val"><span id="pDtc">100</span> real</div></div>
      <div class="poolbox"><div class="poolbox-lbl">CNS POOL</div><div class="poolbox-val"><span id="pCns">0</span> receivable</div></div>
      <div class="poolbox"><div class="poolbox-lbl">MARKET</div><div class="poolbox-val"><span id="pMkt">100</span> claims</div></div>
    </div>
  </div>
  <div class="log" id="logWrap">
    <table><thead><tr><th>t</th><th>Action</th><th class="r">ΔE</th><th class="r">ΔR</th><th class="r">Net</th></tr></thead><tbody id="log"></tbody></table>
  </div>
</div>

<div class="grid">
  <div class="box">
    <div class="box-head">A. SHARES OUTSTANDING</div>
    <div class="box-body">
      <div class="row"><span>GME Issued (S)</span><span class="val" id="aS">100</span></div>
      <div class="row"><span>Held at DTC</span><span class="val" id="aDtc">100</span></div>
      <div class="row"><span>Entitlements (E)</span><span class="val" id="aE">100</span></div>
      <div class="row"><span>— Real-backed</span><span id="aReal">100</span></div>
      <div class="row warn"><span>— Phantom</span><span id="aPhantom">0</span></div>
      <div class="row total"><span>Overage %</span><span id="aOver">0%</span></div>
    </div>
  </div>
  <div class="box">
    <div class="box-head">B. NSCC CNS LEDGER</div>
    <div class="box-body">
      <div class="row"><span>Gross Receivable</span><span class="val" id="bGross">0</span></div>
      <div class="row"><span>Netting Factor</span><span id="bNetF">90%</span></div>
      <div class="row"><span>Net Required Delivery</span><span class="val" id="bNet">0</span></div>
      <div class="row"><span>Cash Collateral</span><span id="bCash">$0</span></div>
      <div class="row total warn"><span>Hidden FTDs</span><span id="bFtd">0</span></div>
    </div>
  </div>
  <div class="box">
    <div class="box-head">C. ETF FUND BALANCE</div>
    <div class="box-body">
      <div class="row"><span>GME Shares Held</span><span id="cHeld">0</span></div>
      <div class="row"><span>GME Receivable</span><span class="val" id="cRecv">0</span></div>
      <div class="row"><span>Cash-in-Lieu</span><span id="cCash">$0</span></div>
      <div class="row"><span>Baskets Created</span><span id="cBask">0</span></div>
      <div class="row total"><span>NAV Exposure</span><span id="cNav">0</span></div>
    </div>
  </div>
</div>

<div class="grid">
  <div class="box">
    <div class="box-head">D. MARKET BALANCE</div>
    <div class="box-body">
      <div class="row"><span>Assets (Real S)</span><span id="dAsset">100</span></div>
      <div class="row"><span>Liabilities (E)</span><span id="dLiab">100</span></div>
      <div class="row warn"><span>Unmatched Claims</span><span id="dUnmatch">0</span></div>
      <div class="row total"><span>Integrity Gap</span><span id="dGap">0%</span></div>
    </div>
  </div>
  <div class="box">
    <div class="box-head">E. CORE PARTIES</div>
    <div class="box-body small">
      <div class="row"><span>DTC</span><span>Depository (real shares)</span></div>
      <div class="row"><span>NSCC CNS</span><span>Nets settlements</span></div>
      <div class="row"><span>AP</span><span>Creates/redeems ETF</span></div>
      <div class="row"><span>ETF Issuer</span><span>Issues shares, books recv</span></div>
      <div class="row"><span>MM/Broker</span><span>Routes orders, lends</span></div>
    </div>
  </div>
  <div class="box">
    <div class="box-head">F. CORE DATA</div>
    <div class="box-body small">
      <div class="row"><span>S (Shares Outstanding)</span><span>Fixed real supply</span></div>
      <div class="row"><span>E (Entitlements)</span><span>S + Short Interest</span></div>
      <div class="row"><span>SI (Short Interest)</span><span>Borrowed claims</span></div>
      <div class="row"><span>Phantom = E - S</span><span>Excess claims</span></div>
      <div class="row"><span>FTD/Receivable</span><span>Undelivered stock</span></div>
    </div>
  </div>
</div>

<div class="formula">
  <b>RECURSION:</b> Cash-in-lieu → E<sub>t+1</sub> = E<sub>t</sub> + Basket (S unchanged) → Phantom grows → 
  Claims lendable → More shorts → More creates → <b>Loop ↺</b><br>
  <b>CNS MASK:</b> Net = Gross × (1 - NetFactor) — Netting hides gross obligations, reducing forced delivery
</div>

</div>

<script>
const $=id=>document.getElementById(id);
const arena=$('arena');
let S={s:100,e:100,r:0,cash:0,bask:0,t:0,tick:0,busy:false,run:false};
let timer=null;

function P(){
  return{
    b:Math.max(1,+$('pB').value||10),
    c:Math.max(0,+$('pC').value||1000),
    cov:Math.max(0,Math.min(100,+$('pCov').value||0)),
    net:Math.max(0,Math.min(100,+$('pNet').value||90)),
    spd:Math.max(50,+$('pSpd').value||400)
  };
}

function chain(i){
  document.querySelectorAll('.step').forEach(s=>s.classList.remove('on'));
  const el=document.querySelector('.step[data-i="'+i+'"]');
  if(el)el.classList.add('on');
}

function flash(t){
  const f=$('flow');f.textContent=t;f.classList.add('on');
  setTimeout(()=>f.classList.remove('on'),200);
}

function tok(cls,ch,x,y){
  const d=document.createElement('div');
  d.className='token '+cls;d.textContent=ch;
  d.style.left=x+'px';d.style.top=y+'px';
  arena.appendChild(d);return d;
}

function mv(d,x,y){
  return new Promise(r=>{
    setTimeout(()=>{d.style.left=x+'px';d.style.top=y+'px'},10);
    setTimeout(r,420);
  });
}

function rm(d){d.style.opacity='0';setTimeout(()=>d.remove(),200)}

function log(a,dE,dR,net){
  const tr=document.createElement('tr');
  tr.innerHTML=`<td>${S.t}</td><td>${a}</td><td class="r">${dE>=0?'+':''}${dE}</td><td class="r">${dR>=0?'+':''}${dR}</td><td class="r">${net}</td>`;
  $('log').prepend(tr);
}

function calcNet(){
  const{net}=P();
  return Math.round(S.r*(1-net/100));
}

function upd(){
  const p=Math.max(0,S.e-S.s);
  const n=calcNet();
  const{net}=P();

  $('cyc').textContent=Math.floor(S.tick/6);
  $('mS').textContent=S.s;
  $('mE').textContent=S.e;
  $('mP').textContent=p;
  $('mR').textContent=S.r;
  $('mN').textContent=n;

  $('bS').style.width='100%';
  $('bE').style.width=Math.min(100,S.e/S.s*50)+'%';
  $('bP').style.width=Math.min(100,p/S.s*100)+'%';
  $('bR').style.width=Math.min(100,S.r/S.s*100)+'%';
  $('bN').style.width=Math.min(100,n/S.s*100)+'%';

  $('pDtc').textContent=S.s;
  $('pCns').textContent=S.r;
  $('pMkt').textContent=S.e;

  // A
  $('aS').textContent=S.s;
  $('aDtc').textContent=S.s;
  $('aE').textContent=S.e;
  $('aReal').textContent=S.s;
  $('aPhantom').textContent=p;
  $('aOver').textContent=Math.round((S.e-S.s)/S.s*100)+'%';

  // B
  $('bGross').textContent=S.r;
  $('bNetF').textContent=net+'%';
  $('bNet').textContent=n;
  $('bCash').textContent='$'+S.cash;
  $('bFtd').textContent=S.r;

  // C
  $('cHeld').textContent=0;
  $('cRecv').textContent=S.r;
  $('cCash').textContent='$'+S.cash;
  $('cBask').textContent=S.bask;
  $('cNav').textContent=S.r;

  // D
  $('dAsset').textContent=S.s;
  $('dLiab').textContent=S.e;
  $('dUnmatch').textContent=p;
  $('dGap').textContent=Math.round(p/S.s*100)+'%';
}

async function step(){
  if(S.busy)return;
  S.busy=true;
  const{b,c,cov}=P();
  const i=S.tick%6;
  chain(i);

  if(i===0){
    $('status').textContent='AP needs '+b+' GME for basket';
    flash('NEED GME');
    log('AP initiates create',0,0,calcNet());
  }
  if(i===1){
    $('status').textContent='Locate fails — GME unavailable';
    flash('LOCATE FAIL');
    log('Cannot locate GME',0,0,calcNet());
  }
  if(i===2){
    $('status').textContent='AP pays $'+c+' cash-in-lieu';
    flash('$'+c+' CASH');
    const t=tok('t-cash','$',420,15);
    await mv(t,420,70);rm(t);
    S.cash+=c;
    log('Cash-in-lieu delivered',0,0,calcNet());
  }
  if(i===3){
    $('status').textContent='ETF created — books GME receivable';
    flash('ETF ISSUED');
    S.bask++;
    log('ETF shares issued',0,0,calcNet());
  }
  if(i===4){
    $('status').textContent='+'+b+' phantom entitlements';
    flash('+'+b+' PHANTOM');
    S.e+=b;S.r+=b;
    for(let k=0;k<Math.min(4,b);k++){
      const t=tok('t-ent','?',380+k*20,15);
      mv(t,500+k*18,70).then(()=>setTimeout(()=>rm(t),600));
    }
    log('Entitlements created',b,b,calcNet());
  }
  if(i===5){
    const covered=Math.round(S.r*cov/100);
    S.r=Math.max(0,S.r-covered);
    $('status').textContent='CNS nets — cover '+cov+'%';
    flash('CNS NETS');
    log('CNS netting cycle',0,-covered,calcNet());
  }

  S.t++;S.tick++;
  upd();
  S.busy=false;
}

async function loop(){
  if(!S.run)return;
  await step();
  timer=setTimeout(loop,P().spd);
}

function run(){if(S.run)return;S.run=true;loop()}
function stop(){S.run=false;clearTimeout(timer)}
function reset(){
  stop();
  S={s:100,e:100,r:0,cash:0,bask:0,t:0,tick:0,busy:false,run:false};
  $('log').innerHTML='';
  $('status').textContent='Ready';
  chain(-1);upd();
}

$('stepBtn').onclick=step;
$('runBtn').onclick=run;
$('stopBtn').onclick=stop;
$('resetBtn').onclick=reset;
upd();
</script>
</body>
</html>
```

{% endcode %}

v1

</details>

<details>

<summary>simple</summary>

{% code expandable="true" %}

```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>GME Phantom Claims (Cash-in-Lieu + CNS)</title>
<style>
*{margin:0;padding:0;box-sizing:border-box}
body{font:12px Arial,Helvetica,sans-serif;background:#f4f4f4;color:#000;padding:10px}
.wrap{max-width:900px;margin:0 auto;background:#fff;border:2px solid #000}
.hdr{background:#000;color:#fff;padding:10px 12px;font-weight:700}
.main{padding:10px 12px}
.controls{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:8px;background:#f0f0f0;border:1px solid #000;margin-bottom:10px}
button,input{font:12px Arial,Helvetica,sans-serif;border:1px solid #000;background:#fff;padding:6px 10px}
button:hover{background:#000;color:#fff}
input{width:80px;text-align:right}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px}
.kpi{border:1px solid #000}
.kpi .t{background:#e9e9e9;border-bottom:1px solid #000;padding:6px 8px;font-size:11px;font-weight:700}
.kpi .v{padding:10px 8px;font-size:22px;font-weight:700;text-align:center}
.kpi .v.bad{background:#fff0f0;color:#c00}
.panel{border:1px solid #000;margin-bottom:10px}
.panel .t{background:#000;color:#fff;padding:6px 8px;font-size:11px;font-weight:700}
.panel .b{padding:8px}
.flow{font-size:11px;line-height:1.4}
.flow .line{padding:3px 0;border-top:1px solid #eee}
.flow .line:first-child{border-top:none}
.note{background:#fffbe6;border:1px solid #000;padding:8px;font-size:11px;line-height:1.35}
.log{border:1px solid #000;max-height:160px;overflow:auto}
table{width:100%;border-collapse:collapse;font-size:11px}
th,td{border:1px solid #ccc;padding:4px 6px}
th{background:#eee;position:sticky;top:0;text-align:left}
td.r{text-align:right}
.bad{color:#c00;font-weight:700}
.small{font-size:11px;color:#333}
</style>
</head>
<body>
<div class="wrap">
  <div class="hdr">GME PHANTOM CLAIMS — ETF CASH-IN-LIEU + CNS NETTING</div>
  <div class="main">

    <div class="controls">
      <button id="stepBtn">Step</button>
      <button id="runBtn">Run</button>
      <button id="stopBtn">Stop</button>
      <button id="resetBtn">Reset</button>
      <span class="small">Basket GME</span><input id="pB" type="number" value="10" min="1">
      <span class="small">Cash $</span><input id="pC" type="number" value="1000" min="0">
      <span class="small">CNS net %</span><input id="pNet" type="number" value="90" min="0" max="100">
      <span class="small">Cycle</span><span id="cyc" class="small" style="font-weight:700">0</span>
    </div>

    <div class="kpis">
      <div class="kpi"><div class="t">REAL SHARES (S)</div><div class="v" id="kS">100</div></div>
      <div class="kpi"><div class="t">TOTAL CLAIMS (E)</div><div class="v" id="kE">100</div></div>
      <div class="kpi"><div class="t">ETF IOU (RECEIVABLE)</div><div class="v bad" id="kR">0</div></div>
      <div class="kpi"><div class="t">PHANTOM (E − S)</div><div class="v bad" id="kP">0</div></div>
    </div>

    <div class="panel">
      <div class="t">FLOW OF FUNDS (CREATION)</div>
      <div class="b flow">
        <div class="line"><b>1)</b> Buyer → Broker → MM/AP (cash)</div>
        <div class="line"><b>2)</b> AP pays <span id="cashLbl" class="bad">$1000</span> cash-in-lieu → ETF Custodian</div>
        <div class="line"><b>3)</b> ETF Issuer mints ETF shares → AP/MM → Broker → Buyer</div>
        <div class="line"><b>Missing:</b> AP does <span class="bad">not</span> deliver GME; ETF books “<span id="iouLbl" class="bad">10 GME IOU</span>”</div>
      </div>
    </div>

    <div class="note" id="status">Ready.</div>

    <div class="log" style="margin-top:10px">
      <table>
        <thead><tr><th>t</th><th>Action</th><th class="r">ΔClaims</th><th class="r">ΔIOU</th><th class="r">CNS net due</th></tr></thead>
        <tbody id="log"></tbody>
      </table>
    </div>

  </div>
</div>

<script>
const $=id=>document.getElementById(id);

let st={ S:100, E:100, R:0, t:0, phase:0, run:false, timer:null };

function P(){
  return{
    b:Math.max(1, +$('pB').value||10),
    c:Math.max(0, +$('pC').value||1000),
    net:Math.max(0, Math.min(100, +$('pNet').value||90))
  };
}

function netDue(){
  const { net } = P();
  return Math.round(st.R * (1 - net/100));
}

function logRow(action,dE,dR,net){
  const tr=document.createElement('tr');
  tr.innerHTML=`<td>${st.t}</td><td>${action}</td><td class="r">${dE>=0?'+':''}${dE}</td><td class="r">${dR>=0?'+':''}${dR}</td><td class="r">${net}</td>`;
  $('log').prepend(tr);
}

function upd(){
  const { b,c } = P();
  const phantom=Math.max(0, st.E - st.S);

  $('kS').textContent=st.S;
  $('kE').textContent=st.E;
  $('kR').textContent=st.R;
  $('kP').textContent=phantom;

  $('cashLbl').textContent='$'+c;
  $('iouLbl').textContent=b+' GME IOU';
  $('cyc').textContent=Math.floor(st.t/4);
}

function step(){
  const { b,c,net } = P();
  const i = st.phase % 4;

  if(i===0){
    $('status').textContent=`AP needs ${b} GME for ETF creation; can't locate/deliver.`;
    logRow('Need GME (no locate)',0,0,netDue());
  }
  if(i===1){
    $('status').textContent=`AP pays $${c} cash-in-lieu; creation continues anyway.`;
    logRow('Cash-in-lieu paid',0,0,netDue());
  }
  if(i===2){
    st.E += b;
    st.R += b;
    $('status').textContent=`ETF mints shares; ETF now has a ${b} GME IOU; market claims +${b}.`;
    logRow('Mint vs IOU',b,b,netDue());
  }
  if(i===3){
    const nd = netDue();
    $('status').textContent=`CNS nets trades. Net shares due now ≈ ${nd} (netting % = ${net}%).`;
    logRow('CNS netting',0,0,nd);
  }

  st.t++;
  st.phase++;
  upd();
}

function run(){
  if(st.run) return;
  st.run=true;
  (function loop(){
    if(!st.run) return;
    step();
    st.timer=setTimeout(loop,450);
  })();
}

function stop(){ st.run=false; clearTimeout(st.timer); }

function reset(){
  stop();
  st={ S:100, E:100, R:0, t:0, phase:0, run:false, timer:null };
  $('log').innerHTML='';
  $('status').textContent='Ready.';
  upd();
}

$('stepBtn').onclick=step;
$('runBtn').onclick=run;
$('stopBtn').onclick=stop;
$('resetBtn').onclick=reset;

upd();
</script>
</body>
</html>

```

{% endcode %}

</details>

<details>

<summary>simple</summary>

{% code expandable="true" %}

```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>GME Phantom Claims (Cash-in-Lieu + CNS)</title>
<style>
*{margin:0;padding:0;box-sizing:border-box}
body{font:12px Arial,Helvetica,sans-serif;background:#f4f4f4;color:#000;padding:10px}
.wrap{max-width:900px;margin:0 auto;background:#fff;border:2px solid #000}
.hdr{background:#000;color:#fff;padding:10px 12px;font-weight:700}
.main{padding:10px 12px}
.controls{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:8px;background:#f0f0f0;border:1px solid #000;margin-bottom:10px}
button,input{font:12px Arial,Helvetica,sans-serif;border:1px solid #000;background:#fff;padding:6px 10px}
button:hover{background:#000;color:#fff}
input{width:80px;text-align:right}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px}
.kpi{border:1px solid #000}
.kpi .t{background:#e9e9e9;border-bottom:1px solid #000;padding:6px 8px;font-size:11px;font-weight:700}
.kpi .v{padding:10px 8px;font-size:22px;font-weight:700;text-align:center}
.kpi .v.bad{background:#fff0f0;color:#c00}
.panel{border:1px solid #000;margin-bottom:10px}
.panel .t{background:#000;color:#fff;padding:6px 8px;font-size:11px;font-weight:700}
.panel .b{padding:8px}
.flow{font-size:11px;line-height:1.4}
.flow .line{padding:3px 0;border-top:1px solid #eee}
.flow .line:first-child{border-top:none}
.note{background:#fffbe6;border:1px solid #000;padding:8px;font-size:11px;line-height:1.35}
.log{border:1px solid #000;max-height:160px;overflow:auto}
table{width:100%;border-collapse:collapse;font-size:11px}
th,td{border:1px solid #ccc;padding:4px 6px}
th{background:#eee;position:sticky;top:0;text-align:left}
td.r{text-align:right}
.bad{color:#c00;font-weight:700}
.small{font-size:11px;color:#333}
</style>
</head>
<body>
<div class="wrap">
  <div class="hdr">GME PHANTOM CLAIMS — ETF CASH-IN-LIEU + CNS NETTING</div>
  <div class="main">

    <div class="controls">
      <button id="stepBtn">Step</button>
      <button id="runBtn">Run</button>
      <button id="stopBtn">Stop</button>
      <button id="resetBtn">Reset</button>
      <span class="small">Basket GME</span><input id="pB" type="number" value="10" min="1">
      <span class="small">Cash $</span><input id="pC" type="number" value="1000" min="0">
      <span class="small">CNS net %</span><input id="pNet" type="number" value="90" min="0" max="100">
      <span class="small">Cycle</span><span id="cyc" class="small" style="font-weight:700">0</span>
    </div>

    <div class="kpis">
      <div class="kpi"><div class="t">REAL SHARES (S)</div><div class="v" id="kS">100</div></div>
      <div class="kpi"><div class="t">TOTAL CLAIMS (E)</div><div class="v" id="kE">100</div></div>
      <div class="kpi"><div class="t">ETF IOU (RECEIVABLE)</div><div class="v bad" id="kR">0</div></div>
      <div class="kpi"><div class="t">PHANTOM (E − S)</div><div class="v bad" id="kP">0</div></div>
    </div>

    <div class="panel">
      <div class="t">FLOW OF FUNDS (CREATION)</div>
      <div class="b flow">
        <div class="line"><b>1)</b> Buyer → Broker → MM/AP (cash)</div>
        <div class="line"><b>2)</b> AP pays <span id="cashLbl" class="bad">$1000</span> cash-in-lieu → ETF Custodian</div>
        <div class="line"><b>3)</b> ETF Issuer mints ETF shares → AP/MM → Broker → Buyer</div>
        <div class="line"><b>Missing:</b> AP does <span class="bad">not</span> deliver GME; ETF books “<span id="iouLbl" class="bad">10 GME IOU</span>”</div>
      </div>
    </div>

    <div class="note" id="status">Ready.</div>

    <div class="log" style="margin-top:10px">
      <table>
        <thead><tr><th>t</th><th>Action</th><th class="r">ΔClaims</th><th class="r">ΔIOU</th><th class="r">CNS net due</th></tr></thead>
        <tbody id="log"></tbody>
      </table>
    </div>

  </div>
</div>

<script>
const $=id=>document.getElementById(id);

let st={ S:100, E:100, R:0, t:0, phase:0, run:false, timer:null };

function P(){
  return{
    b:Math.max(1, +$('pB').value||10),
    c:Math.max(0, +$('pC').value||1000),
    net:Math.max(0, Math.min(100, +$('pNet').value||90))
  };
}

function netDue(){
  const { net } = P();
  return Math.round(st.R * (1 - net/100));
}

function logRow(action,dE,dR,net){
  const tr=document.createElement('tr');
  tr.innerHTML=`<td>${st.t}</td><td>${action}</td><td class="r">${dE>=0?'+':''}${dE}</td><td class="r">${dR>=0?'+':''}${dR}</td><td class="r">${net}</td>`;
  $('log').prepend(tr);
}

function upd(){
  const { b,c } = P();
  const phantom=Math.max(0, st.E - st.S);

  $('kS').textContent=st.S;
  $('kE').textContent=st.E;
  $('kR').textContent=st.R;
  $('kP').textContent=phantom;

  $('cashLbl').textContent='$'+c;
  $('iouLbl').textContent=b+' GME IOU';
  $('cyc').textContent=Math.floor(st.t/4);
}

function step(){
  const { b,c,net } = P();
  const i = st.phase % 4;

  if(i===0){
    $('status').textContent=`AP needs ${b} GME for ETF creation; can't locate/deliver.`;
    logRow('Need GME (no locate)',0,0,netDue());
  }
  if(i===1){
    $('status').textContent=`AP pays $${c} cash-in-lieu; creation continues anyway.`;
    logRow('Cash-in-lieu paid',0,0,netDue());
  }
  if(i===2){
    st.E += b;
    st.R += b;
    $('status').textContent=`ETF mints shares; ETF now has a ${b} GME IOU; market claims +${b}.`;
    logRow('Mint vs IOU',b,b,netDue());
  }
  if(i===3){
    const nd = netDue();
    $('status').textContent=`CNS nets trades. Net shares due now ≈ ${nd} (netting % = ${net}%).`;
    logRow('CNS netting',0,0,nd);
  }

  st.t++;
  st.phase++;
  upd();
}

function run(){
  if(st.run) return;
  st.run=true;
  (function loop(){
    if(!st.run) return;
    step();
    st.timer=setTimeout(loop,450);
  })();
}

function stop(){ st.run=false; clearTimeout(st.timer); }

function reset(){
  stop();
  st={ S:100, E:100, R:0, t:0, phase:0, run:false, timer:null };
  $('log').innerHTML='';
  $('status').textContent='Ready.';
  upd();
}

$('stepBtn').onclick=step;
$('runBtn').onclick=run;
$('stopBtn').onclick=stop;
$('resetBtn').onclick=reset;

upd();
</script>
</body>
</html>

```

{% endcode %}

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.xft.finance/bitnet/clearing-and-settlement/etfs/phantom-shares.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
