df = {
let res = []
for(let symbol in prices) {
prices[symbol] = z.addCol('atr', calculateATR(prices[symbol], 21), prices[symbol])
const row = {
symbol,
...(z.tail(1, prices[symbol])[0]),
}
row.shares = ((portfolio.size * portfolio.risk) / row.atr).toFixed(2)
res.push(row)
}
res = z.addCol('sharedInvested', z.getCol('units', portfolio.stocks), res)
res = z.addCol('cashInvested', z.getCol('invested', portfolio.stocks), res)
res = z.addCol('diff', z.deriveCol((r) => (r.shares - r.sharedInvested).toFixed(2), res), res)
res = z.addCol('diffCash', z.deriveCol((r) => Math.round((r.diff * r.close) / 50) * 50, res), res)
res = z.pickCols(
['symbol', 'date', 'close', 'atr', 'shares', 'sharedInvested', 'diff', 'diffCash', 'cashInvested'],
res
)
res = z.sortByCol('diffCash', 'asc', res)
return res;
}