Last active
December 1, 2021 16:43
-
-
Save mapmeld/6faff75b308878dfc6ce192d95d75d3d to your computer and use it in GitHub Desktop.
Sort stocks by percent change or my holdings change
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Generally, don't run random JS in your browser console, especially on financial sites, but here we are | |
By default this sorts by Percent Change. If you uncomment the next line it sorts by myDelta (price x your shares) | |
Caveats: | |
- I'm not affiliated with Vanguard or any licensed financial advisor or tax preparer. I don't have a clue what's going on with your finances. | |
- The script assumes you did NOT trade today; it uses today's change and current shares | |
- Delta-sort does not handle penny stocks as well because the UI says 0.01 and we reverse-engineer from current balance | |
*/ | |
let sortRule = 'pct'; | |
// sortRule = 'myDelta'; | |
let table = document.querySelector("#account-0-holdings-table tbody"); | |
let nodes = table.querySelectorAll("tr"); | |
let sortNodes = []; | |
let totalDelta = 0; | |
for (var n = 0; n < nodes.length; n++) { | |
let name = nodes[n].querySelector('[data-name="holding-ticker-link"]').textContent; | |
let pct = 1 * nodes[n].querySelector('[data-name="holding-change-percent"]').textContent.replace('−', '-').replace('%', '').replace('-0.00', '-0.0000001'); | |
let dollarDelta = 1 * nodes[n].querySelector('[data-name="holding-change-amount"]').textContent.replace('−', '-').replace('$', '').replace('-0.00', '-0.0000001'); | |
let myShares = 1 * nodes[n].querySelector('[data-name="holding-quantity"]').textContent; | |
let myBalance = 1 * nodes[n].querySelector('[data-name="holding-balance"]').textContent.replace('−', '-').replace('$', '').replace(',', ''); | |
let myDelta = (Math.abs(dollarDelta) < 0.1) | |
? myBalance - myBalance / (1 + pct/100) | |
: dollarDelta * myShares; | |
totalDelta += myDelta; | |
sortNodes.push([n, name, pct, myDelta]); | |
} | |
sortNodes = sortNodes.sort((a, b) => { | |
if ((sortRule === 'pct') || (b[3] === 0 && a[3] === 0)) { | |
return b[2] - a[2]; | |
} else { | |
return b[3] - a[3]; | |
} | |
}); | |
console.log(sortNodes); | |
table.innerHTML = ''; | |
sortNodes.forEach(newNode => table.appendChild(nodes[newNode[0]])) | |
console.log('Delta for today: $' + totalDelta.toFixed(2)); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment