finsdk
Python SDK for financial data and visualization.
Get economic indicators, stock prices, and create beautiful charts with just a few lines of code.
Installation
pip install finsdk
Quick Start
import finsdk
# Set your API key (or use SAVVY_API_KEY environment variable)
finsdk.configure(api_key="sk_...")
# Fetch economic data (returns pandas DataFrame)
df = finsdk.economic_data.fetch("UNRATE", start="2020-01-01")
print(df.head())
# date value
# 0 2020-01-01 3.6
# 1 2020-02-01 3.5
# 2 2020-03-01 4.4
# Fetch stock data
df = finsdk.stock_data.fetch("AAPL", period="1y")
# Create a visualization
chart = finsdk.visualize(df, "Stock price over time")
print(chart.url) # https://savvy-mcp.com/c/abc123
Features
Economic Data
Access data from 20+ sources including FRED, World Bank, IMF, ECB, and more:
# US unemployment rate
df = finsdk.economic_data.fetch("UNRATE")
# GDP growth with date range
df = finsdk.economic_data.fetch("GDP", start="2010-01-01", end="2023-12-31")
# Search for data series
results = finsdk.economic_data.search("inflation")
for r in results:
print(f"{r['provider']}: {r['series_id']} - {r['name']}")
# Compare across countries
df = finsdk.economic_data.compare("unemployment", ["US", "Germany", "Japan"])
Stock Data
Get stock prices from Yahoo Finance:
# Historical data
df = finsdk.stock_data.fetch("AAPL", period="1y")
df = finsdk.stock_data.fetch("MSFT", period="5y", interval="1wk")
# Current quote
quote = finsdk.stock_data.quote("AAPL")
print(f"AAPL: ${quote['price']:.2f} ({quote['change_percent']:+.2f}%)")
Cryptocurrency Data
# Bitcoin price history
df = finsdk.crypto_data.fetch("BTC-USD", period="1y")
# Ethereum quote
quote = finsdk.crypto_data.quote("ETH")
Visualization
Create charts with natural language:
# Simple visualization
chart = finsdk.visualize(df, "Line chart of stock price over time")
# With options
chart = finsdk.visualize(
df,
"Show closing prices with a trendline",
title="AAPL Stock Price",
theme="executive",
)
# Access chart URLs
print(chart.url) # Interactive HTML
print(chart.png) # PNG image
print(chart.svg) # SVG image
print(chart.python) # Python code
Configuration
import finsdk
# Option 1: Use configure()
finsdk.configure(api_key="sk_...")
# Option 2: Environment variable (recommended for production)
# export SAVVY_API_KEY=sk_...
# Option 3: Custom API URL (for development)
finsdk.configure(api_key="sk_...", api_url="https://custom.api.com")
# Read current config
print(finsdk.api_key) # Returns configured key
Error Handling
from finsdk import SavvyError, AuthenticationError, DataNotFoundError
try:
df = finsdk.economic_data.fetch("INVALID_SERIES")
except DataNotFoundError as e:
print(f"Series not found: {e.series_id}")
except AuthenticationError:
print("Invalid API key")
except SavvyError as e:
print(f"API error: {e}")
Data Sources
| Provider | Data Types | Example |
|---|---|---|
| FRED | US economic indicators | UNRATE, GDP, CPIAUCSL |
| World Bank | Global development | NY.GDP.MKTP.CD |
| IMF | Forecasts | gdp_growth |
| ECB | Eurozone rates | EONIA, EURUSD |
| Yahoo Finance | Stocks, ETFs, crypto | AAPL, SPY, BTC-USD |
| Zillow | Housing data | ZHVI:San Francisco |
| And 15+ more... |
Requirements
- Python 3.9+
- pandas
- httpx
Links
License
MIT
Metadata
Release files for finsdk 0.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| finsdk-0.4.1.tar.gz | 16.6 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| finsdk-0.4.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 36.1 kB
Release files / finsdk-0.4.1.tar.gz
| Download URL | finsdk-0.4.1.tar.gz |
|---|---|
| Size | 16.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
869b0fa1ae680ea12b817cfbf6a8395dfc9f8d21f563723c88b5de1eddca7837
|
|
BLAKE2b-256 checksum How to use checksums |
5a384bbb6501d56879871a51b0f87c991ef52aa4db05387ea89b4602aa331359
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.16
|
Release files / finsdk-0.4.1-py3-none-any.whl
| Download URL | finsdk-0.4.1-py3-none-any.whl |
|---|---|
| Size | 19.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
02fdb0703d772680cf4414cf44dc182c31824b5906571d6c55226772ad96ab5f
|
|
BLAKE2b-256 checksum How to use checksums |
391bdc169b70323e37186426551423520259514da705a36f0f5e0c68c0d6f15c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.16
|
Security for finsdk 0.4.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.