Skip to content

Market Data Guide

PrivateACB’s Market Data tab helps you manage two types of price data essential for accurate tax calculations:

  1. Exchange Rates - Convert fiat currencies (e.g., USD to CAD, USD to AUD, USD to GBP)
  2. Cryptocurrency Prices - Get historical prices for crypto assets

Why market data matters:

  • Tax authorities require reporting in your local currency (CAD for Canada, USD for US, AUD for Australia, GBP for UK)
  • Many exchanges trade in USD, even for Canadian users
  • Income transactions (staking, mining, airdrops) need crypto-to-fiat prices
  • Missing market data will block ACB calculations

What this guide covers:

  • Understanding when you need exchange rates vs. crypto prices
  • How to fetch exchange rates from Bank of Canada and Federal Reserve
  • How to fetch crypto prices from CoinGecko
  • Manual import options (CSV for rates, manual entry for prices)
  • Troubleshooting common issues

Exchange rates convert one fiat currency to another (e.g., USD → CAD).

You need exchange rates when:

  • You traded on exchanges that use a different currency than your tax jurisdiction
  • Canadian user on Coinbase (USD) → needs USD/CAD rates
  • US user on Newton (CAD) → needs CAD/USD rates
  • Australian user on Coinbase (USD) → needs USD/AUD rates
  • UK user on Coinbase (USD) → needs USD/GBP rates

Example:

Canadian taxpayer buys BTC for $10,000 USD on Coinbase
→ Needs USD/CAD exchange rate for that date
→ CRA requires reporting in CAD

Crypto prices provide the fair market value of a cryptocurrency on a specific date.

You need crypto prices when:

  • Income transactions (staking rewards, mining, airdrops) - no purchase price exists
  • Crypto-to-crypto trades - need fiat value for both sides
  • Transactions without a recorded price in the import data

Example:

You received 10 SOL from staking on June 15, 2024
→ Need SOL price in CAD, USD, or AUD for June 15, 2024
→ This becomes your cost base for those tokens

In the Market Data tab, you’ll see two tables:

TableShows Assets That…Data Needed
Exchange RatesHave a price in a foreign currencyFiat-to-fiat conversion rates
Cryptocurrency PricesAre missing prices entirelyCrypto-to-fiat prices

Key insight:

  • Exchange Rates table - Assets with quote_currency (e.g., BTC bought for USD)
  • Crypto Prices table - Assets without prices (e.g., SOL received from staking)

Step 1: Check Exchange Rates

  1. Navigate to Market Data tab
  2. Select 🍁 CA - Canada (CAD)
  3. Look at Exchange Rates table
  4. If assets appear, click ImportBank of CanadaFetch Rates

Step 2: Check Crypto Prices

  1. Scroll to Cryptocurrency Prices table
  2. If assets appear with missing prices:
    • Configure CoinGecko API key (one-time, see Settings section)
    • Click Fetch Prices for each asset
    • Or use Manual Entry for unsupported assets

Done! Your ACB calculations can now proceed.


Step 1: Configure API Keys (one-time)

  1. Go to Settings tab (Ctrl+7)
  2. Configure Federal Reserve (FRED) API key - Get free key
  3. Configure CoinGecko API key - Get free key

Step 2: Check Exchange Rates

  1. Navigate to Market Data tab
  2. Select 🇺🇸 US - United States (USD)
  3. Look at Exchange Rates table
  4. If assets appear, click ImportFederal ReserveFetch Rates

Step 3: Check Crypto Prices

  1. Scroll to Cryptocurrency Prices table
  2. Click Fetch Prices for each asset needing prices

Done! Your US tax calculations can now proceed.


Step 1: Check Exchange Rates

  1. Navigate to Market Data tab
  2. Select 🇦🇺 AU - Australia (AUD)
  3. Look at Exchange Rates table
  4. If assets appear (e.g., USD-priced transactions), you will need USD/AUD rates

Step 2: Check Crypto Prices

  1. Scroll to Cryptocurrency Prices table
  2. CoinGecko natively supports AUD pricing (vs_currency=aud), so most crypto prices are fetched directly in AUD — no FX conversion needed
  3. Click Fetch Prices for each asset needing prices

Done! Your Australian CGT calculations can now proceed.


  1. Open your database in PrivateACB
  2. Click the Market Data tab in the top navigation (or press Ctrl+2)

At the top of the Market Data tab:

🍁 CA - Canada (CAD) | 🇺🇸 US - United States (USD) | 🇦🇺 AU - Australia (AUD)

This determines:

  • Which currency you’re reporting in
  • Which API sources are available
  • How prices are displayed

Synced with Calculation Dashboard: If you came from the Calculation Dashboard, jurisdiction is automatically synced.


Market Data Tab

The Market Data tab displays two tables:

Exchange Rates Table

Shows assets that need fiat currency conversion (e.g., USD trades need CAD rates for Canadian users).

Columns:

ColumnDescription
AssetCryptocurrency symbol (BTC, ETH, etc.)
Needs RatesNumber of transactions needing conversion
Date RangeEarliest to latest transaction date
Status✅ Complete, ⚠️ Partial, 🔴 Needs Rates
ActionsImport dropdown

Only shows assets that need conversion - if all your trades are in your reporting currency, this table is empty.


Cryptocurrency Prices Table

Shows assets that need historical crypto prices (e.g., staking rewards without recorded prices).

Columns:

ColumnDescription
AssetCryptocurrency symbol
Needs PricesTransactions missing price data
Prices StoredCached prices with currency label, e.g., “18 (CAD)“
MissingDates still needing prices
Status✅ Complete, ⚠️ Partial, 🔴 None, ⚪ Unavailable
ActionsFetch / Manual buttons

Only shows assets with missing prices - assets with complete price data don’t appear.


Both tables use consistent status indicators:

StatusIconMeaningAction
CompleteAll data availableNone - ready for calculation
Partial⚠️Some data missingImport/fetch more
None/Needs🔴No data availableImport/fetch immediately
UnavailableNot supported (crypto only)Manual entry required

At the bottom, you’ll see your import history:

Recent Imports
🍁 USD → CAD | Bank of Canada | 365 rates | 2 hours ago
🦎 BTC/CAD | CoinGecko | 180 prices | 1 day ago
📁 Manual CSV | 45 rates | 3 days ago

Icons:

  • 🍁 Bank of Canada
  • 🏛️ Federal Reserve
  • 🦎 CoinGecko
  • 📁 CSV Import
  • ✏️ Manual Entry

Use Bank of Canada if:

  • You’re filing Canadian taxes (reporting in CAD)
  • You have transactions in USD
  • You traded on US exchanges (Coinbase, Kraken, Binance.US)
  1. Market Data tab → Select 🍁 CA - Canada
  2. Find your asset in the Exchange Rates table
  3. Click Import dropdown → Bank of Canada
  4. Review the date range (auto-detected from transactions)
  5. Click Fetch Rates from Bank of Canada
  6. Wait 2-10 seconds
  7. Success: ”✅ Imported 365 USD/CAD rates”

Notes:

  • No API key required (free public service)
  • Official rates used by CRA
  • Rate limit: 10 requests/minute (handled automatically)

Use Federal Reserve if:

  • You’re filing US taxes (reporting in USD)
  • You have transactions in CAD
  • You traded on Canadian exchanges (Newton, NDAX)

Federal Reserve requires a free API key:

  1. Visit FRED API Registration
  2. Click Request API Key
  3. Create account and fill form
  4. Copy your API key (e.g., be6f7e03ad0b956492148e0d919774eb)

Configure in PrivateACB:

  1. Settings tab (Ctrl+7) → Data SourcesCurrency API Configuration
  2. Find Federal Reserve row → Click Configure
  3. Paste API key → Save API Key
  4. Click Test to verify
  1. Market Data tab → Select 🇺🇸 US - United States
  2. Find asset in Exchange Rates table
  3. Click ImportFederal Reserve
  4. Review date range → Click Fetch Rates
  5. Success: ”✅ Imported 365 CAD/USD rates”

  • Custom exchange rates
  • Unsupported currency pairs (EUR, GBP, etc.)
  • Working offline
date,from_currency,to_currency,rate
2024-01-01,USD,CAD,1.3500
2024-01-02,USD,CAD,1.3525
2024-01-03,USD,CAD,1.3480

Columns:

  • date: YYYY-MM-DD format
  • from_currency: 3-letter code (USD, CAD, EUR)
  • to_currency: 3-letter code
  • rate: Exchange rate as decimal
  1. Market Data tab → Select jurisdiction
  2. Asset row → ImportManual CSV Import
  3. Upload your CSV file
  4. Map columns if needed (usually auto-detected)
  5. Click Import Rates

Use CoinGecko when:

  • You have income transactions (staking, mining, airdrops)
  • Transactions are missing price data
  • You need historical crypto prices in CAD or USD
  1. Visit CoinGecko API
  2. Click Get Your API Key
  3. Create free account (Demo plan)
  4. Copy your API key (starts with CG-)

Demo Plan Limits:

  • 30 calls per minute
  • 10,000 calls per month
  • 365 days of historical data (important!)

Configure in PrivateACB:

  1. Settings tab (Ctrl+7) → Data SourcesCurrency API Configuration
  2. Find CoinGecko row → Click Configure
  3. Paste API key → Save API Key
  4. Click Test to verify

  1. Market Data tab → Select jurisdiction
  2. Scroll to Cryptocurrency Prices table
  3. Find asset needing prices
  4. Click Fetch Prices button
  5. Progress indicator shows fetching status
  6. Success: ”✅ Fetched 180 prices for SOL/CAD”

What happens:

  • PrivateACB requests prices from CoinGecko
  • Prices are cached in your database
  • Status updates to show coverage

Example:

Today: January 7, 2026
API can provide: January 7, 2025 to today
Prices before January 7, 2025: NOT available via API

If your transactions are older:

  1. PrivateACB automatically limits to 365 days
  2. Fetches the most recent 365 days available
  3. Older dates need manual entry

Options for older dates:

  • Use manual price entry (look up on CoinGecko website)
  • Upgrade to CoinGecko Pro API ($129+/month)

PrivateACB includes mappings for 100+ cryptocurrencies including:

  • Bitcoin (BTC), Ethereum (ETH), Solana (SOL)
  • Cardano (ADA), Polygon (MATIC), Avalanche (AVAX)
  • Chainlink (LINK), Uniswap (UNI), Aave (AAVE)
  • Stablecoins: USDT, USDC, DAI

If your asset shows ⚪ Unavailable:

  • Asset isn’t mapped to CoinGecko
  • Use manual price entry instead

  • Asset not supported by CoinGecko
  • Transactions older than 365 days
  • You have a specific price source
  1. Market Data tabCryptocurrency Prices table
  2. Find asset → Click Manual button
  3. Fill in the form:
    • Date: Transaction date
    • Asset: Pre-filled
    • Currency: CAD or USD
    • Price: Price per unit
    • Source: Optional note
  4. Click Save Price
  5. Repeat for each missing date

CoinGecko Website:

  1. Go to coingecko.com
  2. Search for your asset
  3. Click Historical Data tab
  4. Find the date you need
  5. Note the price in your currency

Other sources:

  • CoinMarketCap historical data
  • Your exchange’s trade history
  • Blockchain explorers

Settings Tab (Ctrl+7) → Data Sources → Currency API Configuration

Section titled “Settings Tab (Ctrl+7) → Data Sources → Currency API Configuration”
APIPurposeKey RequiredLimit
Bank of CanadaUSD/CAD ratesNo10 req/min
Federal Reserve (FRED)CAD/USD ratesYes (free)120 req/min
CoinGeckoCrypto pricesYes (free)30 req/min, 365 days

For each API requiring a key:

  1. Settings tab (Ctrl+7)
  2. Open Data SourcesCurrency API Configuration
  3. Find the API row → Click Configure
  4. Enter API key → Save
  5. Click Test to verify connection

API keys are stored securely using Windows DPAPI encryption in the Registry — they are never saved in the database file.


“Missing conversion rates” in Calculation Dashboard

  • Navigate to Market Data tab (Ctrl+2)
  • Import rates using Bank of Canada or Federal Reserve
  • Ensure date range covers all transactions

“Federal Reserve API key not configured”

  • Get free key from FRED website
  • Configure in Settings (Ctrl+7) → Data Sources → Currency API Configuration

“0 rates imported”

  • Rates already exist for those dates
  • This is normal - duplicates are skipped

“No API key configured”

  • Get free CoinGecko API key
  • Configure in Settings (Ctrl+7) → Data Sources → Currency API Configuration

Asset shows “Unavailable”

  • Asset not in CoinGecko’s supported list
  • Use manual price entry instead

Only partial prices fetched

  • Likely hit the 365-day limit
  • Use manual entry for older dates

“Connection test failed”

  • Check API key is correct (starts with CG-)
  • Verify internet connection
  • Wait 1 minute and retry (rate limit)

“Asset still shows as Invalid after importing”

  • Check you imported the correct currency (CAD vs USD)
  • Verify date range covers all transactions
  • Click refresh button
  • Close and reopen database if needed

Import is very slow

  • Large date ranges take longer
  • API rate limits are handled automatically
  • Wait patiently - import will complete

Before importing transactions, configure:

  • CoinGecko (for crypto prices)
  • FRED (for US users needing CAD/USD rates)

This ensures data can be fetched immediately after import.

After importing new transactions:

  1. Go to Market Data tab
  2. Check both tables for new items
  3. Import/fetch any missing data
  4. Then run ACB calculations
  • Exchange Rates - Assets with foreign currency prices
  • Crypto Prices - Assets without any prices

Both may need attention for complete coverage.

For transactions older than 365 days:

  • CoinGecko API won’t provide prices
  • Look up prices manually on CoinGecko website
  • Enter using Manual Entry feature
  • Do this before calculating ACB

CoinGecko Demo plan: 10,000 calls/month. If approaching the limit:

  • Prioritize essential assets
  • Consider upgrading to a CoinGecko Pro plan for heavy usage

Key Takeaways:

  1. Market Data tab manages two types of price data:

    • Exchange Rates (fiat conversion)
    • Cryptocurrency Prices (crypto-to-fiat)
  2. Exchange Rates table - Use Bank of Canada (Canada) or Federal Reserve (US)

  3. Crypto Prices table - Use CoinGecko API (free, 365-day limit)

  4. API keys - FRED and CoinGecko require free API keys (one-time setup)

  5. Manual options - CSV import for rates, Manual Entry for prices

  6. Check both tables before running ACB calculations

Quick Reference:

NeedSourceLocation
USD → CAD ratesBank of CanadaMarket Data → Exchange Rates → Import
CAD → USD ratesFederal ReserveMarket Data → Exchange Rates → Import
Crypto pricesCoinGeckoMarket Data → Crypto Prices → Fetch
Custom ratesCSV fileMarket Data → Exchange Rates → Import → CSV
Manual pricesWebsite lookupMarket Data → Crypto Prices → Manual

Last Updated: February 2026 PrivateACB Version: 2.0