Portfolio: hide non-economic (test gem) token performance from Open Positions / P&L #674

Closed
opened 2026-08-26 21:37:46 +00:00 by leonardocolucci · 8 comments
leonardocolucci commented 2026-08-26 21:37:46 +00:00 (Migrated from gitlab.com)

Summary

The /portfolio page's Open Positions table (and the associated realized P&L / cost basis) currently includes soft-launch test-gem pairs like EMBER/CORAL. These tokens have no economic meaning, so surfacing net position, avg entry, cost basis and realized P&L for them clutters the page and can mislead users into reading test activity as real performance.

Follow-on to #534 (economic-first pair classification + "Test pairs" divider) and #551 (portfolio P&L). The portfolio should apply the same economic/test split that the pair selector already uses.

Actual

Open Positions lists gem pairs with full metrics, e.g.:

Pair Net Position Avg Entry Cost Basis Realized P&L Trades
EMBER/CORAL 9.869 CORAL 1.01332 EMBER/CORAL 10.00 EMBER +20.15 EMBER 3

Expected

Open Positions, realized P&L, cost basis, and any volume/fees totals hide the soft-launch test gems by default: EMBER, CORAL, JADE, TOPAZ, ONYX, RUBY, PEARL, QUARTZ. All real assets stay (CL8Y, UST1, USTR, cLUNC, cUSTC, vFDUSD, SpaceUSD, etc.).

Prefer a "Show test pairs" toggle / "Test pairs" divider (mirroring #534) over hard removal, so QA/testers can still see gem activity — but the default view is real-assets-only.

Notes

  • Reuse the existing economic/test classifier from #534; the same list already drives the pair pickers, so this shouldn't need a new source of truth.
  • Applies to every per-pair performance surface on the page, not just the Open Positions table.
## Summary The [/portfolio](https://dex.cl8y.com/portfolio) page's **Open Positions** table (and the associated realized P&L / cost basis) currently includes soft-launch **test-gem pairs** like EMBER/CORAL. These tokens have no economic meaning, so surfacing net position, avg entry, cost basis and realized P&L for them clutters the page and can mislead users into reading test activity as real performance. Follow-on to #534 (economic-first pair classification + "Test pairs" divider) and #551 (portfolio P&L). The portfolio should apply the same economic/test split that the pair selector already uses. ## Actual Open Positions lists gem pairs with full metrics, e.g.: | Pair | Net Position | Avg Entry | Cost Basis | Realized P&L | Trades | |---|---|---|---|---|---| | EMBER/CORAL | 9.869 CORAL | 1.01332 EMBER/CORAL | 10.00 EMBER | +20.15 EMBER | 3 | ## Expected Open Positions, realized P&L, cost basis, and any volume/fees totals hide the **soft-launch test gems** by default: **EMBER, CORAL, JADE, TOPAZ, ONYX, RUBY, PEARL, QUARTZ**. All real assets stay (CL8Y, UST1, USTR, cLUNC, cUSTC, vFDUSD, SpaceUSD, etc.). Prefer a **"Show test pairs" toggle / "Test pairs" divider** (mirroring #534) over hard removal, so QA/testers can still see gem activity — but the default view is real-assets-only. ## Notes - Reuse the existing economic/test classifier from #534; the same list already drives the pair pickers, so this shouldn't need a new source of truth. - Applies to every per-pair performance surface on the page, not just the Open Positions table.
leonardocolucci commented 2026-08-26 22:01:10 +00:00 (Migrated from gitlab.com)

mentioned in issue #675

mentioned in issue #675
PlasticDigits commented 2026-08-27 00:33:35 +00:00 (Migrated from gitlab.com)

mentioned in merge request !1177

mentioned in merge request !1177
PlasticDigits commented 2026-08-27 00:33:43 +00:00 (Migrated from gitlab.com)

Implemented on !1177.

Done

  • Hide soft-launch test gems from /portfolio Open Positions by default
  • Hide associated realized P&L / cost basis (per-row + header USD from visible rows)
  • Hide gem Recent activity until the hatch is on
  • Reuse #534 isTestPair / isGemTokenId (no second list)
  • Show test pairs toggle + Test pairs divider (default off)
  • Economic assets stay (CL8Y, UST1, USTR, cLUNC, cUSTC, vFDUSD, …)
  • Invariants P674-1–P674-8 + skill AGENTS_FRONTEND_PORTFOLIO_TEST_PAIRS.md + make verify-issue-674

Not in this change

  • /trader public profile still lists every pair (intentional — P674-5)
  • Open limits and LP overview stay unfiltered (cancel / on-chain balances)
  • traders.total_volume_usd stays indexer-wide (no client subtract — P674-7)
  • Unrealized / mark-to-market is #675
Implemented on !1177. **Done** - [x] Hide soft-launch test gems from `/portfolio` Open Positions by default - [x] Hide associated realized P&L / cost basis (per-row + header USD from visible rows) - [x] Hide gem Recent activity until the hatch is on - [x] Reuse `#534` `isTestPair` / `isGemTokenId` (no second list) - [x] **Show test pairs** toggle + **Test pairs** divider (default off) - [x] Economic assets stay (CL8Y, UST1, USTR, cLUNC, cUSTC, vFDUSD, …) - [x] Invariants **P674-1–P674-8** + skill `AGENTS_FRONTEND_PORTFOLIO_TEST_PAIRS.md` + `make verify-issue-674` **Not in this change** - `/trader` public profile still lists every pair (intentional — P674-5) - Open limits and LP overview stay unfiltered (cancel / on-chain balances) - `traders.total_volume_usd` stays indexer-wide (no client subtract — P674-7) - Unrealized / mark-to-market is #675
PlasticDigits (Migrated from gitlab.com) closed this issue 2026-08-27 04:44:32 +00:00
PlasticDigits commented 2026-08-27 04:44:34 +00:00 (Migrated from gitlab.com)

mentioned in commit e4bab0fb4e

mentioned in commit e4bab0fb4e49a4656e5764c1b4fbf8943612c77c
PlasticDigits commented 2026-08-27 04:49:14 +00:00 (Migrated from gitlab.com)

mentioned in commit 06a40e8511

mentioned in commit 06a40e85111a8c689f4bba3b5ebd412b64cb9cdd
PlasticDigits commented 2026-08-27 05:29:51 +00:00 (Migrated from gitlab.com)

mentioned in issue #686

mentioned in issue #686
PlasticDigits commented 2026-08-27 05:29:51 +00:00 (Migrated from gitlab.com)

marked as related to #686

marked as related to #686
PlasticDigits commented 2026-08-27 05:30:20 +00:00 (Migrated from gitlab.com)

Merged via !1177 (e4bab0fb) onto main 36d64528. Conflict union with !1179 kept Show test pairs + Mark/Unrealized on the same table.

make verify-issue-674 PASS (7/7). Playwright SKIP — LocalTerra not up this pass. Coolify leftover: frontend rebuild from 36d64528+. Do not reopen unless P674 is wrong. Post-merge ops: #686.

Merged via !1177 (`e4bab0fb`) onto `main` `36d64528`. Conflict union with !1179 kept **Show test pairs** + Mark/Unrealized on the same table. `make verify-issue-674` **PASS** (7/7). Playwright SKIP — LocalTerra not up this pass. Coolify leftover: frontend rebuild from `36d64528+`. Do not reopen unless P674 is wrong. Post-merge ops: #686.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
code/cl8y-dex-terraclassic#674
No description provided.