Custom Crypto Fund Reporting System Development
A typical crypto fund: 40+ wallets across 5 blockchains, positions in Uniswap V3, Aave, ETH staking, and some assets on Binance. Manually reconciling reports takes 40 hours per week, and errors in P&L calculation cost thousands of dollars. There is no ready SaaS for such specifics — either you lose granularity or pay for each protocol integration separately.
We build custom reporting systems that aggregate data directly from the blockchain and CEX, calculate P&L with support for FIFO, LIFO, and ACB, and generate NAV, investor reports, and tax reports. Our experience: 5+ years in blockchain development, 20+ projects for funds with AUM up to $500M. Order such a system — it pays for itself in 6 months by reducing manual work by 80%. Typical cost: $15,000–$30,000 for a base system, saving 40 hours/week of analyst time (~$4,000/month).
Why Custom Crypto Fund Reporting System Beats Generic Aggregators
Aggregators like Zapper or DeBank are convenient for portfolio viewing but not for reporting. They don't provide access to raw data, don't support all protocols, and can miscalculate. For audit-grade accuracy, direct blockchain data is needed. EVM networks are queried via RPC using Multicall3 — a contract deployed on all popular chains. It executes dozens of balanceOf calls in one request, reducing collection time by 98% — 50x faster than sequential calls. Solana is handled via Helius RPC with batch requests. CEX integration uses trade history from Binance, OKX, and Bybit APIs.
How Uniswap V3 LP Positions Are Accounted
LP positions are NFTs with a tokenId. We read the NonfungiblePositionManager contract, extracting liquidity, tick range, and accrued fees. Current value is computed via the quantum math of pool ticks — the only correct method. Without it, you miss impermanent loss and uncollected fees.
def get_uniswap_v3_position_value(token_id: int, block: int = None) -> dict: position_manager = w3.eth.contract( address="0xC36442b4a4522E871399CD717aBDD847Ab11FE88", abi=NPM_ABI ) pos = position_manager.functions.positions(token_id).call(block_identifier=block or "latest") # pos: (nonce, operator, token0, token1, fee, tickLower, tickUpper, # liquidity, feeGrowthInside0LastX128, feeGrowthInside1LastX128, # tokensOwed0, tokensOwed1) liquidity = pos[7] tick_lower, tick_upper = pos[5], pos[6] pool = get_pool(pos[2], pos[3], pos[4]) current_tick = pool.functions.slot0().call()[1] sqrt_price = pool.functions.slot0().call()[0] amount0, amount1 = calculate_amounts(liquidity, sqrt_price, tick_lower, tick_upper, current_tick) fees0, fees1 = calculate_uncollected_fees(pos, pool, tick_lower, tick_upper) return { "principal": {"token0": amount0, "token1": amount1}, "fees": {"token0": fees0, "token1": fees1} } Comparison of Cost Basis Methods: FIFO, LIFO, ACB
The choice of method directly affects P&L and tax obligations. Here's a comparison:
| Method | Principle | When Better | Drawbacks |
|---|---|---|---|
| FIFO | First in, first out | Standard, good for long-term investors | May increase tax during growth |
| LIFO | Last in, first out | Optimization in rising markets | Not allowed in some jurisdictions |
| ACB | Average cost | Simple, good for frequent trades | May give inaccurate P&L during high volatility |
Implementation of FIFO in Python:
from dataclasses import dataclass from collections import deque from decimal import Decimal @dataclass class Lot: amount: Decimal cost_basis_usd: Decimal acquired_at: datetime class FIFOLedger: def __init__(self): self.lots: dict[str, deque[Lot]] = {} def buy(self, symbol: str, amount: Decimal, price_usd: Decimal, ts: datetime): if symbol not in self.lots: self.lots[symbol] = deque() self.lots[symbol].append(Lot(amount, amount * price_usd, ts)) def sell(self, symbol: str, amount: Decimal, price_usd: Decimal, ts: datetime) -> Decimal: proceeds = amount * price_usd cost = Decimal(0) remaining = amount while remaining > 0 and self.lots[symbol]: lot = self.lots[symbol][0] if lot.amount <= remaining: cost += lot.cost_basis_usd remaining -= lot.amount self.lots[symbol].popleft() else: portion = remaining / lot.amount cost += lot.cost_basis_usd * portion lot.amount -= remaining lot.cost_basis_usd -= lot.cost_basis_usd * portion remaining = Decimal(0) return proceeds - cost Implementation Phases
- Portfolio analysis — collect addresses, protocols, and required history (7 days, 30 days, or full).
- Architecture design — define adapters for each protocol, cost basis method, and report formats.
- Aggregator development — write scripts for Multicall3, CEX API, and custom contracts.
- Optional P&L ML module — for predicting impermanent loss and optimizing LP rebalancing.
- Report generation — NAV, P&L, transaction history, and tax report in PDF/Excel.
- Deployment and training — deploy on your server or cloud, train your team.
What's Included in the Result
- Aggregation scripts for EVM and Solana, supporting 20+ protocols (Uniswap, Aave, Compound, Lido, Curve, etc.).
- CEX integration (Binance, OKX, Bybit) with automatic trade export.
- P&L calculation (FIFO/LIFO/ACB) including fees and splits.
- Deterministic reports — any auditor can reproduce data from original contracts.
- Full documentation, team training, and accuracy guarantees (verification of each call).
Case Study: How We Reduced Manual Work by 80% for a $200M AUM Fund
Fund M managed 80 wallets across 6 networks, including complex Uniswap V3 LPs and Rocket Pool staking. Previously, reporting took 35 hours per week. We implemented a custom system based on Multicall3 and a FIFO-ledger. Result: automatic collection in 5 minutes, weekly report review in 1 hour. The system has been running for 2 years with zero discrepancies in retrospective audits.
Custom Crypto Fund Reporting System Timelines and How to Get Started
A base version for 5–10 addresses on 3–4 networks with basic DeFi protocols takes 3–5 weeks. Pricing is determined individually based on the number of addresses, protocols, and historical depth. Typically, the project pays for itself within six months by reducing manual work by 80%.
Get a consultation — contact us and we'll prepare a proposal tailored to your specifics. Request a demo version for your portfolio today.







