From 0a4ce162f8cfc554037b8e5d770a6080f7af02f3 Mon Sep 17 00:00:00 2001 From: Viktor Barzin Date: Mon, 18 May 2026 19:11:13 +0000 Subject: [PATCH] monitoring(wealth): keep only FIFO-realized PNL table; pair Positions + vest-cadence side-by-side MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Removed panel 27 (META RSU vest value over time) — superseded by vest-cadence chart which carries the same value signal plus the share-count overlay. - Removed panel 28 (per-vest value at vest vs today) — duplicative with panel 31's FIFO realized PNL. - Removed panel 29 (per-sell realized PNL) — same data as panel 31, just rolled up by sell date instead of vest date. - Resized panel 26 (Positions) to w=12 and moved panel 30 (META vest cadence) to (y=32, x=12, w=12) so they sit side-by-side next to the Positions table. - Moved panel 31 (FIFO realized PNL) to y=118, where the deleted RSU chart used to live. --- .../modules/monitoring/dashboards/wealth.json | 517 +----------------- 1 file changed, 8 insertions(+), 509 deletions(-) diff --git a/stacks/monitoring/modules/monitoring/dashboards/wealth.json b/stacks/monitoring/modules/monitoring/dashboards/wealth.json index fad5666d..26168245 100644 --- a/stacks/monitoring/modules/monitoring/dashboards/wealth.json +++ b/stacks/monitoring/modules/monitoring/dashboards/wealth.json @@ -1960,7 +1960,7 @@ }, "gridPos": { "h": 8, - "w": 24, + "w": 12, "x": 0, "y": 32 }, @@ -2146,507 +2146,6 @@ } ] }, - { - "id": 27, - "title": "META RSU vest value — Schwab account", - "description": "Daily total value of Viktor's META RSU holdings in the Schwab workplace account, in USD. Vest schedule: 1,119 shares vested 2020-11 → 2026-02, all sold 2023-04 → 2026-02 as they vested. The Schwab account is now effectively empty (~$64 residual). Yahoo quote for META powers WF's daily mark.", - "type": "timeseries", - "datasource": { - "type": "grafana-postgresql-datasource", - "uid": "wealth-pg" - }, - "gridPos": { - "h": 9, - "w": 24, - "x": 0, - "y": 118 - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "fixed", - "fixedColor": "blue" - }, - "unit": "currencyUSD", - "decimals": 0, - "custom": { - "drawStyle": "line", - "lineWidth": 2, - "fillOpacity": 25, - "pointSize": 4, - "showPoints": "never", - "spanNulls": true, - "axisPlacement": "auto", - "stacking": { - "group": "A", - "mode": "none" - } - } - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "rsu_value" - }, - "properties": [ - { - "id": "displayName", - "value": "META RSU value (USD)" - } - ] - } - ] - }, - "options": { - "legend": { - "calcs": [ - "last", - "max" - ], - "displayMode": "table", - "placement": "bottom" - }, - "tooltip": { - "mode": "single", - "sort": "desc" - } - }, - "targets": [ - { - "refId": "A", - "datasource": { - "type": "grafana-postgresql-datasource", - "uid": "wealth-pg" - }, - "rawQuery": true, - "editorMode": "code", - "format": "time_series", - "rawSql": "SELECT valuation_date::timestamp AS \"time\", total_value AS rsu_value FROM daily_account_valuation WHERE account_id = '72d34e09-c1a6-41aa-99ea-abe3305ecc4a' AND $__timeFilter(valuation_date) ORDER BY valuation_date" - } - ], - "timeFrom": "6y" - }, - { - "id": 28, - "title": "META vests — value at vest vs today", - "description": "One row per BUY (vest event). Vest-day price × shares is what each tranche was worth when it landed; 'value today' is what the same shares would be worth at META's current quote. The Hypo gain columns show the unrealized P&L if Viktor had held every vest.", - "type": "table", - "datasource": { - "type": "grafana-postgresql-datasource", - "uid": "wealth-pg" - }, - "gridPos": { - "h": 12, - "w": 24, - "x": 0, - "y": 127 - }, - "fieldConfig": { - "defaults": { - "custom": { - "align": "auto", - "displayMode": "auto" - }, - "decimals": 2 - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "shares" - }, - "properties": [ - { - "id": "decimals", - "value": 2 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "vest price" - }, - "properties": [ - { - "id": "decimals", - "value": 2 - }, - { - "id": "unit", - "value": "currencyUSD" - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "vest value" - }, - "properties": [ - { - "id": "decimals", - "value": 2 - }, - { - "id": "unit", - "value": "currencyUSD" - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "today price" - }, - "properties": [ - { - "id": "decimals", - "value": 2 - }, - { - "id": "unit", - "value": "currencyUSD" - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "value today" - }, - "properties": [ - { - "id": "decimals", - "value": 2 - }, - { - "id": "unit", - "value": "currencyUSD" - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "hypo gain" - }, - "properties": [ - { - "id": "decimals", - "value": 2 - }, - { - "id": "unit", - "value": "currencyUSD" - }, - { - "id": "custom.cellOptions", - "value": { - "type": "color-text" - } - }, - { - "id": "thresholds", - "value": { - "mode": "absolute", - "steps": [ - { - "color": "red", - "value": null - }, - { - "color": "green", - "value": 0 - } - ] - } - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "hypo %" - }, - "properties": [ - { - "id": "decimals", - "value": 1 - }, - { - "id": "unit", - "value": "percent" - }, - { - "id": "custom.cellOptions", - "value": { - "type": "color-text" - } - }, - { - "id": "thresholds", - "value": { - "mode": "absolute", - "steps": [ - { - "color": "red", - "value": null - }, - { - "color": "green", - "value": 0 - } - ] - } - } - ] - } - ] - }, - "options": { - "cellHeight": "sm", - "footer": { - "show": true, - "reducer": [ - "sum" - ], - "fields": [ - "shares", - "vest value", - "value today", - "hypo gain" - ] - } - }, - "targets": [ - { - "refId": "A", - "datasource": { - "type": "grafana-postgresql-datasource", - "uid": "wealth-pg" - }, - "rawQuery": true, - "editorMode": "code", - "format": "table", - "rawSql": "WITH px AS (SELECT close AS today_price FROM quote_latest WHERE asset_id='4f60833d-0bfb-484f-8ee6-f129af72e137') SELECT activity_date::date AS vest_date, quantity AS shares, unit_price AS \"vest price\", (quantity*unit_price) AS \"vest value\", (SELECT today_price FROM px) AS \"today price\", (quantity * (SELECT today_price FROM px)) AS \"value today\", (quantity * ((SELECT today_price FROM px) - unit_price)) AS \"hypo gain\", (((SELECT today_price FROM px) / unit_price - 1) * 100) AS \"hypo %\" FROM activities WHERE asset_id='4f60833d-0bfb-484f-8ee6-f129af72e137' AND activity_type='BUY' ORDER BY activity_date" - } - ] - }, - { - "id": 29, - "title": "META sells — realized PNL vs 'if held until today'", - "description": "One row per SELL, with vest-price matched FIFO against the original BUY lots. Realized P&L = (sell - matched vest) × shares. Missed-opportunity = (today's META price - sell price) × shares; positive means holding would have outperformed selling.", - "type": "table", - "datasource": { - "type": "grafana-postgresql-datasource", - "uid": "wealth-pg" - }, - "gridPos": { - "h": 12, - "w": 24, - "x": 0, - "y": 139 - }, - "fieldConfig": { - "defaults": { - "custom": { - "align": "auto", - "displayMode": "auto" - }, - "decimals": 2 - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "shares" - }, - "properties": [ - { - "id": "decimals", - "value": 2 - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "sell price" - }, - "properties": [ - { - "id": "decimals", - "value": 2 - }, - { - "id": "unit", - "value": "currencyUSD" - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "vest price (FIFO)" - }, - "properties": [ - { - "id": "decimals", - "value": 2 - }, - { - "id": "unit", - "value": "currencyUSD" - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "realized PNL" - }, - "properties": [ - { - "id": "decimals", - "value": 2 - }, - { - "id": "unit", - "value": "currencyUSD" - }, - { - "id": "custom.cellOptions", - "value": { - "type": "color-text" - } - }, - { - "id": "thresholds", - "value": { - "mode": "absolute", - "steps": [ - { - "color": "red", - "value": null - }, - { - "color": "green", - "value": 0 - } - ] - } - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "PNL if held" - }, - "properties": [ - { - "id": "decimals", - "value": 2 - }, - { - "id": "unit", - "value": "currencyUSD" - }, - { - "id": "custom.cellOptions", - "value": { - "type": "color-text" - } - }, - { - "id": "thresholds", - "value": { - "mode": "absolute", - "steps": [ - { - "color": "red", - "value": null - }, - { - "color": "green", - "value": 0 - } - ] - } - } - ] - }, - { - "matcher": { - "id": "byName", - "options": "missed by" - }, - "properties": [ - { - "id": "decimals", - "value": 2 - }, - { - "id": "unit", - "value": "currencyUSD" - }, - { - "id": "custom.cellOptions", - "value": { - "type": "color-text" - } - }, - { - "id": "thresholds", - "value": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 0 - } - ] - } - } - ] - } - ] - }, - "options": { - "cellHeight": "sm", - "footer": { - "show": true, - "reducer": [ - "sum" - ], - "fields": [ - "shares", - "realized PNL", - "PNL if held", - "missed by" - ] - } - }, - "targets": [ - { - "refId": "A", - "datasource": { - "type": "grafana-postgresql-datasource", - "uid": "wealth-pg" - }, - "rawQuery": true, - "editorMode": "code", - "format": "table", - "rawSql": "WITH px AS (SELECT close AS today_price FROM quote_latest WHERE asset_id='4f60833d-0bfb-484f-8ee6-f129af72e137'), lots AS (SELECT activity_date::date AS vest_date, quantity, unit_price AS vest_price, SUM(quantity) OVER (ORDER BY activity_date, id) AS lot_end, SUM(quantity) OVER (ORDER BY activity_date, id) - quantity AS lot_start FROM activities WHERE asset_id='4f60833d-0bfb-484f-8ee6-f129af72e137' AND activity_type='BUY'), sells AS (SELECT activity_date::date AS sell_date, quantity AS sell_qty, unit_price AS sell_price, SUM(quantity) OVER (ORDER BY activity_date, id) AS sell_end, SUM(quantity) OVER (ORDER BY activity_date, id) - quantity AS sell_start FROM activities WHERE asset_id='4f60833d-0bfb-484f-8ee6-f129af72e137' AND activity_type='SELL'), matched AS (SELECT s.sell_date, s.sell_price, l.vest_price, GREATEST(LEAST(l.lot_end, s.sell_end) - GREATEST(l.lot_start, s.sell_start), 0::numeric) AS qty FROM sells s CROSS JOIN lots l WHERE LEAST(l.lot_end, s.sell_end) > GREATEST(l.lot_start, s.sell_start)) SELECT sell_date, SUM(qty) AS shares, MIN(sell_price) AS \"sell price\", (SUM(qty*vest_price)/SUM(qty)) AS \"vest price (FIFO)\", SUM(qty*(sell_price-vest_price)) AS \"realized PNL\", (SUM(qty) * ((SELECT today_price FROM px) - SUM(qty*vest_price)/SUM(qty))) AS \"PNL if held\", (SUM(qty) * ((SELECT today_price FROM px) - MIN(sell_price))) AS \"missed by\" FROM matched GROUP BY sell_date ORDER BY sell_date" - } - ] - }, { "id": 30, "title": "META vest cadence — value vs share count (per vest event)", @@ -2657,10 +2156,10 @@ "uid": "wealth-pg" }, "gridPos": { - "h": 11, - "w": 24, - "x": 0, - "y": 151 + "y": 32, + "x": 12, + "w": 12, + "h": 8 }, "timeFrom": "6y", "fieldConfig": { @@ -2775,10 +2274,10 @@ "uid": "wealth-pg" }, "gridPos": { - "h": 12, - "w": 24, + "y": 118, "x": 0, - "y": 162 + "w": 24, + "h": 12 }, "fieldConfig": { "defaults": {