Last Sunday morning I ran my monthly DeFi review — forty minutes, no trades. That last clause is the whole trick. Most of what people call "managing a portfolio" is just expensive clicking: every harvest, swap and rebalance pays gas, eats slippage, and can count as a taxable disposal. My session answers one boring question: what did I actually earn after every cost? Its second job is to pre-decide anything that would make me click in the next month.
This is the routine end to end: a four-tab spreadsheet, one net-return formula, a worked month on a $15,000 book, a gas-based harvest rule, and the trigger thresholds that are the only things allowed to turn a review into a rebalance — plus the records I keep for taxes, anchored to IRS guidance. It's the checklist I run on my own wallets, not personalized tax advice.
TL;DR. A review is read-only measurement; a rebalance is a trade, and I only trade on pre-written triggers. My spreadsheet has four tabs — Positions, Rewards/FMV income, Gas USD, Decisions/triggers. Realized return (USD) = interest + protocol fees + rewards at receipt-time FMV − gas − impermanent loss − slippage. A $15,000 September book netted $46.67 (~3.8% annualized) against ~8% advertised. I harvest only above a 10× gas hurdle on L2s (20× on mainnet), monitor fixed thresholds for health factor, LTV, utilization, TVL, peg, withdrawals and reward tokens, and log every receipt's date, hash and FMV for taxes.
A review is not a rebalance
This distinction has saved me more money than any farm I've entered.
- A review is a read-only session. I snapshot balances, log income and fees, compare live risk metrics against fixed thresholds, and write decisions into a ledger. Nothing is signed, nothing is broadcast.
- A rebalance is an on-chain action — repaying debt, trimming a pool, claiming and selling rewards, moving capital between chains. It costs gas, often crosses a spread, and can be a taxable event.
I review on the last Sunday of every month; I rebalance only when a pre-written trigger fires or on a fixed quarterly schedule. The discipline matters for three reasons. Activity has a direct dollar cost — on mainnet one claim-and-swap can exceed a month of income on a small position, per the math in gas fees vs yield. It has a tax cost — selling a reward token or exiting an LP can realize a gain even when you're merely "moving things around." And it has an emotional cost: the more I transact, the more I chase the pool that was hot this week. Target weights come from the portfolio allocator; this review only asks whether drift is large enough to justify paying for a correction.
The 40-minute routine and its four tabs
Standardization is what keeps it to forty minutes:
- 0–10 min — Positions. Record balances and rates from every wallet and dashboard; two sources per number, because dashboards lag.
- 10–22 min — Rewards/FMV income. List every token that landed in any wallet at receipt-time value, cross-checked against explorer transfer history.
- 22–30 min — Gas USD. Export the month's transactions, convert each fee to dollars when paid, and tag its purpose.
- 30–40 min — Decisions/triggers. Walk the thresholds below, write actions as "if X, then Y" rows, and stop. If nothing fires, the output is "no trades this month."
The spreadsheet that holds all of this has exactly four tabs:
| Tab | Key columns | Data source | Question it answers |
|---|---|---|---|
| 1. Positions | Date, chain, protocol, pool/market, assets, quantity, cost basis, price, market value, supplied, borrowed, net, supply APR, borrow APR | Wallet + protocol dashboard (reconcile both) | What do I hold, and what rate is advertised? |
| 2. Rewards / FMV income | Date, tx hash, chain, protocol, token, quantity, FMV USD at receipt, income type, wallet, new cost basis | Explorer token transfers + a price source | What income arrived, and what was it worth then? |
| 3. Gas USD | Date, tx hash, chain, action, gas token, gas used, token price, fee USD, purpose tag | Block explorer export, priced at tx time | What did activity actually cost me? |
| 4. Decisions / triggers | Metric, position, current value, threshold, planned action, created date, resolved date | This review, carried forward monthly | What would make me trade, and did I do it? |
Two habits keep the tabs honest: I snapshot Positions as pasted values, never live formulas, so the sheet can't silently rewrite what was true on the 29th; and income types on tab 2 are fixed categories chosen in advance — interest, staking, incentive/reward token, airdrop, fee share — so twelve months of rows sum without interpretation.
The only return formula I write down
Headline APY is a marketing number compounded in a vacuum. Realized return is an accounting result after the world gets involved. For each month and each position, I compute:
Realized return (USD) = interest + protocol fees + rewards at FMV − gas − impermanent loss − slippage
The terms are operational. Interest is lending interest in dollars at receipt; protocol fees are trading fees accrued to LPs; rewards at FMV are incentive and staking tokens valued the instant they hit my wallet, not when I later sell; gas comes from tab 3, including approvals, claims and bridges; impermanent loss compares the LP's value to simply holding the deposit tokens; slippage is the gap between quoted and executed prices on every required swap.
The monthly rate is net dollars divided by average capital deployed; I annualize with ×12 for a conservative read and check the compounded version in the DeFi yield calculator, which also settles the APY vs APR conversion.
Worked example: September on a $15,000 book
A real-shaped month from my ledger, rounded to cents: $8,000 stablecoin lending, $5,000 in a liquid-staking ETH pair LP, $2,000 in a stable pair LP.
| Position | Capital | Interest | LP fees | Rewards FMV | Gas | IL | Slippage | Net |
|---|---|---|---|---|---|---|---|---|
| USDC lending (L2) | $8,000 | $34.67 | – | $8.40 | −$0.40 | – | – | $42.67 |
| wstETH/ETH LP (L2) | $5,000 | – | $14.20 | – | −$0.30 | −$18.50 | −$2.10 | −$6.70 |
| Stable pair LP (L2) | $2,000 | – | $9.00 | $6.00 | −$0.70 | −$1.20 | – | $13.10 |
| Mainnet reward claim | – | – | – | – | −$2.40 | – | – | −$2.40 |
| Total book | $15,000 | $34.67 | $23.20 | $14.40 | −$3.80 | −$19.70 | −$2.10 | $46.67 |
This is the point of the exercise. Dashboards blended to roughly 8% APY; the booked result was $46.67 — about 0.31% for the month, 3.8% annualized, under half the advertisement. The nominally highest-fee ETH pair lost $6.70 after price movement and one thin-pool rebalance; the boring 5.2% lending book was the best earner per dollar; the $2.40 mainnet claim was a rounding error I've stopped making.
Three rows went onto tab 4: cap the ETH pair smaller, run future pools through the yield risk grader before adding, and benchmark the stable pair monthly against the stablecoin APY tracker so it exits the moment it stops being special.
The gas harvest hurdle
Pending reward tokens trigger more pointless transactions than anything else in DeFi. My rule is mechanical: harvest only when the pending reward's dollar value exceeds the all-in gas of claim-plus-swap by a multiple — 10× on a Layer 2, 20× on Ethereum mainnet — and never more than once a month.
- On an L2, claim plus swap might cost $0.20 all in, so the hurdle is about $2 of pending rewards. Below that, the dust sits unclaimed until it compounds into the next review.
- On mainnet, claim plus swap at $8–12 sets the hurdle around $160–240. Before I even consider it, I open the Etherscan gas tracker; if gwei isn't low, the decision waits. Most months, small mainnet emissions simply never clear the bar, which is correct — chasing them is how the chain out-earns you.
Batch claims where a contract allows, and remember the sale is a separate event: claim-and-hold books income at FMV; claim-and-sell books income and a usually tiny capital gain or loss. The cost math in gas fees vs yield settles borderline cases.
Trigger thresholds: the only reasons I trade
Each Decisions row uses a threshold chosen when calm, not while a pool moves. These are my conservative-book numbers — starting points, not universal law:
| Metric | Comfortable | Alert / action threshold |
|---|---|---|
| Health factor (borrowing) | Above 1.8 | Below 1.5: set a repayment plan. At or below 1.3: repay or add collateral immediately — liquidation lands at 1.0. |
| LTV vs liquidation threshold | Under 60% of the max | Above 75% of the protocol's liquidation LTV: reduce debt regardless of the headline health factor. |
| Market utilization | Under 80% | Over 85%: watch borrow rates and withdrawal latency. Over 90%: trim exposure; high utilization can restrict withdrawals and spike debt costs. |
| Protocol / pool TVL | Within ±20% month over month and above my floor | A 30% monthly TVL drop, or breaching an absolute floor (roughly $5M pool / $100M protocol on my book): investigate, then reduce. |
| Stablecoin peg | Within ±0.3% of $1 | Beyond 0.5%: investigate the cause. Beyond 1% for 24h, or any 2% print: exit or hedge per the plan in the depeg guide. |
| Withdrawal status | Instant, documented redemption time | Queue over 24h or any delay beyond the documented window: stop adding capital and prepare an exit. |
| Reward-token dependence | Under 40% of APR from emissions | Over 50% of APR from a reward token: cap position size. Emissions cut or large unlock within 30 days, or token down ~50%: re-underwrite before the next review. |
TVL and peg checks take two minutes each: I read protocol totals on DeFiLlama and compare stablecoin prices across two venues, never trusting the pool I'm inside. My playbooks for the two slow-motion losses these rows catch are the stablecoin depeg risk and withdrawal queues guides.
Tax recordkeeping: what I log and why
The IRS treats convertible virtual currency as property; its digital assets page is the authoritative starting point. Rev. Rul. 2023-14 addresses staking directly: rewards are ordinary income at fair market value when you gain dominion and control, and that FMV becomes cost basis. My conservative practice is to log every inbound receipt — lending interest, staking, incentive tokens, airdrops, fee share — at receipt-time FMV, then let a qualified tax professional confirm each classification. Consistency across years matters more than hero interpretations.
Selling, swapping or LP-exiting a token later is a second event: gain or loss equals proceeds minus the FMV logged at receipt — which is why tab 2 has a "new cost basis" column. Broker reporting requirements keep evolving, so my own monthly records are the backstop; reconciliation is easy in thirty-day chunks and brutal in April. My fuller workflow, including LP deposit treatment, is in the 2026 DeFi tax guide. This is recordkeeping, not personalized advice — brackets, entities and jurisdiction change the answer.
Putting it together
Forty minutes, four tabs, one formula, fixed thresholds. Most months the conclusion is "hold everything and harvest nothing," and that is the system working: the plan survived contact with the data. The routine pays for itself in the boring months where a TVL drop, a forming queue or a reward-schedule change quietly crossed a line written weeks earlier. For how the positions should be sized in the first place, I pair it with DeFi yield portfolio allocation.
Sources and further reading
- IRS — Digital Assets — official IRS landing page for virtual currency and digital asset reporting.
- IRS Rev. Rul. 2023-14 (PDF) — staking rewards as ordinary income at fair market value upon receipt, establishing cost basis.
- DeFiLlama — protocol, chain and pool TVL used for the monthly TVL drift checks.
- Etherscan Gas Tracker — live Ethereum gas prices I check before any mainnet claim or rebalance.
Frequently asked questions
What is the difference between a DeFi review and a rebalance?
A review is read-only measurement — snapshot positions, log rewards and gas, compare metrics to thresholds, write "if X, then Y" decisions. A rebalance is an on-chain trade that costs gas and slippage and can be a taxable event. I review monthly but rebalance only when a pre-written trigger fires or on a quarterly schedule.
How do you calculate realized DeFi return each month?
In USD: interest plus protocol fees plus reward tokens at receipt-time fair market value, minus gas, minus impermanent loss versus simply holding the deposit tokens, minus slippage. Divide net by average capital deployed, then compare against the advertised APY — in my September example, net ran under half the headline.
When should I harvest pending reward tokens?
Only above a gas hurdle: pending rewards worth at least 10× the all-in claim-and-swap gas on a Layer 2, 20× on Ethereum mainnet, and never more than monthly. A $0.20 L2 claim needs about $2 waiting; a $10 mainnet claim needs roughly $200. Check the Etherscan gas tracker first, and leave dust unclaimed.
What risk thresholds should I check in a monthly DeFi review?
Health factor (alert below 1.5, act at 1.3), LTV versus the liquidation threshold (act above 75% of it), utilization (watch above 85%, trim near 90%), TVL on DeFiLlama (a 30% monthly drop or breaching your floor), stablecoin peg (investigate past 0.5%, exit after 1% sustained), withdrawal queues, and the share of APR coming from reward emissions rather than fees.
What records do I need to keep for DeFi taxes?
For every inbound reward: date, transaction hash, chain, protocol, token, quantity, FMV in USD at receipt, income type, wallet and resulting cost basis. The IRS treats digital assets as property, and Rev. Rul. 2023-14 makes staking rewards ordinary income at FMV upon dominion and control. Log monthly from one documented price source, then share the export with a qualified tax professional — this is recordkeeping, not personalized advice.
Check your real net APY
Run your positions through the DifiCalc calculator — APR to APY, compounding frequency, gas and all — before your next review.
Open the Yield CalculatorMore guides in the DifiCalc blog, including APY vs APR, gas fees vs yield and DeFi yield portfolio allocation.