# Tracking Solana DeFi Positions in a Portfolio

> Solana DeFi is the least-covered sector in portfolio APIs. How Kamino, Jupiter, Jito and LST positions break token-only portfolio tracking.

- **URL:** https://octav.fi/blog/solana-defi-portfolio-tracking
- **Published:** 2026-05-19
- **Author:** Octav Team — Portfolio Intelligence for Digital Assets
- **Topic:** DeFi Tracking
- **Tags:** solana, defi, portfolio-tracking
- **Source:** Octav, Practical guides on crypto NAV reporting, multi-chain portfolio management and digital asset APIs, from the team behind Octav.

---
<LogoRow items="solana,kamino,jupiter,jito,marinade" caption="Protocols covered" />

Solana is where portfolio APIs diverge most. In
[our nine-provider benchmark](/crypto-portfolio-api-benchmark), several
providers have no Solana support at all, and most of the rest read Solana as a
token list — which on an active wallet is a small fraction of the truth.

Same Solana DeFi whale, same day: full decoding reported **$26.04M**;
token-only reads stopped near **$9.67M**.

## Why Solana breaks token-only tracking

On Solana, as on EVM chains, a DeFi position leaves a token in your wallet that
is a claim, not the value. The difference is that Solana's largest protocols
are all position-based, so the share of a wallet that is invisible to a balance
query tends to be higher.

| Protocol | What sits in the wallet | What it actually represents |
| --- | --- | --- |
| Kamino | Obligation account | Supplies, borrows, rewards, loan health |
| Jupiter Lend | Receipt token | Supplied principal plus earned yield |
| Jito | `jitoSOL` | Staked SOL plus accrued MEV rewards |
| Marinade | `mSOL` | Staked SOL plus staking rewards |
| Liquid staking generally | An LST | Underlying stake, not the LST's own thin market price |

Kamino is the clearest case. A Kamino position is not a token in your wallet —
it is a lending obligation with supplies, borrows, rewards and a health factor.
An API that lists the obligation token gives you a string you cannot read.

## The LST pricing trap

Liquid staking tokens are the most common source of quietly wrong Solana
numbers. `jitoSOL` and `mSOL` accrue value against SOL over time, so their
correct valuation is derived from the underlying stake and the exchange rate —
not from whatever the LST last traded at on a thin pair.

Price an LST as a loose token and net worth drifts, usually downward, in a way
that looks like market movement rather than a data bug.

## What full decoding returns

For a Solana wallet, complete coverage means resolving:

1. **SPL token balances** — the easy part every provider does.
2. **Lending positions** — Kamino and Jupiter Lend supplies, borrows, accrued
   interest and loan health.
3. **Staking** — native stake accounts plus LSTs valued from the underlying.
4. **Liquidity positions** — pool share resolved to underlying assets.
5. **Perps and derivatives** — margin and unrealised PnL held as protocol state.

Octav scores 100 on coverage in the benchmark and reads Solana DeFi most
completely of the nine providers measured. It is worth being precise about what
that costs: our performance score is 40 and our cost score is 54, both below
DeBank and Zerion. Decoding this much takes time. See
[Octav vs DeBank vs Zerion](/octav-vs-debank-vs-zerion) for the trade-off.

## Fetching a Solana portfolio

Solana addresses are base58 and go through the same endpoint as EVM addresses,
so a mixed-chain fund does not need a separate integration:

```bash
curl -s https://api.octav.fi/v1/portfolio \
  -H "Authorization: Bearer $OCTAV_API_KEY" \
  -G --data-urlencode "addresses=<solana-address>,<evm-address>"
```

One call, both ecosystems, positions decoded in the same response shape. The
full endpoint list is in the
[API endpoint reference](/crypto-portfolio-api-endpoint-reference).

There is also a Solana-only endpoint for airdrop eligibility, `/v1/airdrop`,
which does not apply to EVM addresses.

## How to test a provider on Solana

Take a wallet you understand — ideally one with a Kamino position, an LST and a
plain SPL balance — and compare the API's answer to what the protocol UIs show.

Three specific things to check:

- Does the Kamino position appear as supplies and borrows, or as an opaque token?
- Is the LST valued from the underlying stake, or from its own market price?
- Does the total change when you add a Solana address to an EVM-only request?

If a provider silently returns less, you will not get an error. You will get a
number. That failure mode is covered in
[Why Portfolio APIs Disagree About Net Worth](/why-portfolio-apis-disagree).
