diff --git a/public/index.html b/public/index.html
index 709f07b..597f145 100644
--- a/public/index.html
+++ b/public/index.html
@@ -330,7 +330,7 @@ async function loadMarket(){
const map=Object.fromEntries(data.map(q=>[q.key,q]));
if(!window._mktCache)window._mktCache={};(data||[]).forEach(function(q){window._mktCache[q.key]=q;});grid.innerHTML=SLOTS.map(slot=>{
const q=map[slot.key];
- if(!q){var c=(window._mktCache||{})[slot.key];if(c){q=c;}else{return '
'+slot.label+'
'+
@@ -341,7 +341,7 @@ async function loadMarket(){
}
async function loadPositions(){
const {data}=await fetch('/api/positions').then(r=>r.json());
- const open=data.filter(p=>p.is_closed===0);
+ const open=data.filter(p=>p.is_closed===0 && +p.netqty!==0);
const tbody=document.getElementById('pos-body'),tfoot=document.getElementById('pos-foot');
if(!open.length){tbody.innerHTML='
| No open positions |
';tfoot.style.display='none';return;}
const sU=open.reduce((s,p)=>s+p.unrealised_pnl,0),sR=open.reduce((s,p)=>s+p.realised_pnl,0),sT=open.reduce((s,p)=>s+p.total_pnl,0);
@@ -507,6 +507,8 @@ function detectStrategy(opts) {
return opts.length+'-Leg Strategy';
}
+
+function calcSD(spot,dte,vix){var v=vix>1?vix/100:0.18;var dv=v/Math.sqrt(252);var move=spot*dv*Math.sqrt(Math.max(dte,1));return{sd1:move,sd2:move*2};}
async function loadPayoff() {
var canvas = document.getElementById('payoff-chart');
var emptyEl = document.getElementById('pf-empty');
@@ -583,7 +585,7 @@ async function loadPayoff() {
var tc = dk?'#3D444D':'#C4B8B0';
if (payoffChartInst) payoffChartInst.destroy();
- canvas._beLines = bes; canvas._spotLine = spot; canvas._chartXs = xs;
+ var vixV=(window._mktCache&&window._mktCache['INDIAVIX'])?window._mktCache['INDIAVIX'].price:0;canvas._sdInfo=calcSD(spot,typeof dte==='number'?dte:7,vixV);canvas._beLines=bes;canvas._spotLine=spot;canvas._chartXs=xs;
payoffChartInst = new Chart(canvas, {
type: 'line',
@@ -634,7 +636,8 @@ async function loadClosedPositions() {
var staleEl = document.getElementById('closed-stale');
if (!tbody) return;
- var data = res.data || [];
+ var tIST=new Date().toLocaleDateString('en-CA',{timeZone:'Asia/Kolkata'});
+ var data=(res.data||[]).filter(function(p){return p.updated_at&&p.updated_at.slice(0,10)>=tIST;});
var totalBooked = res.totalBooked || 0;
// Update collapsed header badge