Skip to main content

Python SDK for Tepilora API v3

Project description

Tepilora SDK (Python)

Python SDK (sync + async) for Tepilora API v3.

262 operations across 28 namespaces, auto-generated from the registry.

Install

pip install Tepilora

Optional extras:

pip install 'Tepilora[arrow]'   # PyArrow for binary formats
pip install 'Tepilora[polars]'  # Polars DataFrame support

Quick Start

import Tepilora as T

client = T.TepiloraClient(api_key="YOUR_KEY")

# Typed endpoints (IDE autocomplete)
securities = client.securities.search(query="MSCI ETF", limit=10)
print(securities["totalCount"])

# Raw call
resp = client.call("securities.search", params={"query": "MSCI", "limit": 5})
print(resp.data)

Async

import asyncio
import Tepilora as T

async def main():
    async with T.AsyncTepiloraClient(api_key="YOUR_KEY") as client:
        data = await client.securities.search(query="MSCI", limit=10)
        print(data)

asyncio.run(main())

Namespaces

Namespace Operations Description
securities 12 Search, filter, history, facets, MiFID, fees
news 7 Search, latest, trending, details
publications 5 Research reports and publications
portfolio 20 CRUD, returns, attribution, optimization
analytics 68 Rolling metrics, ratios, risk, factors
alerts 9 Alert rules CRUD, evaluate, history
macro 6 Economic indicators, calendar
stocks 9 Technicals, screening, peers, signals
bonds 9 Analyze, screen, ladder, curve, spread, lookup
options 6 Pricing, Greeks, IV, strategies
esg 5 ESG screening, comparison, portfolio analytics
factors 7 Fama-French, momentum, factor risk models
evolution 12 Feedback, voting, comments, moderation
reporting 8 Tearsheets, fund sheets, templates, rendering
fh 7 Fundamentals history, financials
clients 8 B2B client management
profiling 10 MiFID questionnaires, suitability
billing 10 Fee calculations, schedules, records
documents 4 Document parsing, classification
alternatives 9 Alternative investments
queries 8 Saved queries CRUD, execute
search 1 Global search
data 1 Raw data access
exports 2 Data export to file formats
asset_allocation 10 Strategic asset allocation, model portfolios
realtime 5 Real-time market data, streaming
workflows 2 Cross-module workflows

Examples by Namespace

Securities

# Search
results = client.securities.search(query="MSCI World", limit=20)

# Get details
details = client.securities.details(identifier="IE00B4L5Y983EURXMIL")

# Price history
history = client.securities.history(
    identifiers=["IE00B4L5Y983EURXMIL", "FR0010655712EURXPAR"],
    start_date="2024-01-01",
    limit=1000
)

# Filter by criteria
filtered = client.securities.filter(filters={"Currency": "EUR", "TepiloraType": "ETF"})

# Get facets for building filters
facets = client.securities.facets(fields=["Currency", "TepiloraType", "Country"])

Portfolio

# Create portfolio
portfolio = client.portfolio.create(
    name="My Portfolio",
    input_type="fixed_weights",
    weights={"IE00B4L5Y983EURXMIL": 0.6, "FR0010655712EURXPAR": 0.4},
    start_date="2024-01-01"
)

# Get returns
returns = client.portfolio.returns(
    id=portfolio["portfolio"]["id"],
    start_date="2024-01-01",
    return_method="twr"
)

# Performance attribution
attribution = client.portfolio.attribution(
    id=portfolio["portfolio"]["id"],
    benchmark_weights={"IE00B4L5Y983EURXMIL": 0.5, "FR0010655712EURXPAR": 0.5},
    start_date="2024-01-01",
    end_date="2024-12-31"
)

# Optimize
optimized = client.portfolio.optimize(
    identifiers=["IE00B4L5Y983EURXMIL", "FR0010655712EURXPAR"],
    settings={
        "solver_mode": "risk_parity",
        "constraints": {"single_position_limit": 0.30}
    },
    start_date="2024-01-01"
)

Analytics

# List available functions
functions = client.analytics.list()

# Get function help
help_info = client.analytics.help("rolling_volatility")

# Calculate rolling volatility
vol = client.analytics.rolling_volatility(
    identifiers="IE00B4L5Y983EURXMIL",
    period=252,
    start_date="2023-01-01"
)

# Rolling Sharpe ratio
sharpe = client.analytics.rolling_sharpe(
    identifiers="IE00B4L5Y983EURXMIL",
    period=252,
    rf=0.02
)

# Factor regression
factors = client.analytics.factor_regression(
    identifiers="IE00B4L5Y983EURXMIL",
    model="FF5"
)

News & Publications

# Search news
news = client.news.search(query="bitcoin", limit=20)

# Latest news
latest = client.news.latest(limit=10)

# Trending topics
trending = client.news.trending(limit=50, finance_only=True)

# Search publications
pubs = client.publications.search(query="market outlook", limit=10)

Alerts

# List alerts
alerts = client.alerts.list(enabled=True)

# Evaluate an alert manually
result = client.alerts.evaluate(rule_id="your_rule_id")

Bonds

# Analyze bond (use full TepiloraCode, not plain ISIN)
analysis = client.bonds.analyze(identifier="DE000A2NBZ21EURXFRA")

# Screen bonds
bonds = client.bonds.screen(
    criteria={"min_yield": 4.0, "max_duration": 5.0},
    limit=50
)

# Get yield curve
curve = client.bonds.curve(currency="EUR", date="2024-01-15")

Arrow/Binary Formats

from Tepilora.arrow import read_ipc_stream

# Request Arrow format
resp = client.call_arrow_ipc_stream("securities.search", params={"query": "ETF", "limit": 1000})
table = read_ipc_stream(resp.content)
print(table.to_pandas())

Module-Level API

import Tepilora as T

# Configure globally
T.configure(api_key="YOUR_KEY")

# Use without client instance
T.analytics.rolling_volatility(identifiers="IE00B4L5Y983EURXMIL")

Or via environment variables:

export TEPILORA_API_KEY=your_key
export TEPILORA_BASE_URL=https://tepiloradata.com

Error Handling

from Tepilora.errors import TepiloraAPIError

try:
    data = client.securities.search(query="invalid")
except TepiloraAPIError as e:
    print(f"Error: {e.message}")
    print(f"Code: {e.status_code}")

API Endpoints

  • POST /T-Api/v3 - Unified action router (all operations)
  • GET /T-Api/v3/health - Health check
  • GET /T-Api/v3/pricing - Pricing info
  • GET /T-Api/v3/logs/status - Logs status

Version

import Tepilora
print(Tepilora.__version__)  # 0.5.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tepilora-0.5.4.tar.gz (214.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tepilora-0.5.4-py3-none-any.whl (233.6 kB view details)

Uploaded Python 3

File details

Details for the file tepilora-0.5.4.tar.gz.

File metadata

  • Download URL: tepilora-0.5.4.tar.gz
  • Upload date:
  • Size: 214.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for tepilora-0.5.4.tar.gz
Algorithm Hash digest
SHA256 5172f56e199f50a7a59d297bd3d2d6c88cf8654c9fea270285d5f4948a2ebd47
MD5 ecb77e7175bc19cfba74d7a4436e10a4
BLAKE2b-256 761510fb9ef413549e09244ac99a0a84270f389e7099be6a0f93219d92200aa6

See more details on using hashes here.

Provenance

The following attestation bundles were made for tepilora-0.5.4.tar.gz:

Publisher: publish.yml on Admintepilora/tepilora-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tepilora-0.5.4-py3-none-any.whl.

File metadata

  • Download URL: tepilora-0.5.4-py3-none-any.whl
  • Upload date:
  • Size: 233.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for tepilora-0.5.4-py3-none-any.whl
Algorithm Hash digest
SHA256 fd719e1e2550f730717fb127676d28f9b81145f219fb4f672f39a5e9b168041f
MD5 81200d660a1301bd6322f7041b3dc75f
BLAKE2b-256 a3d24a17cfde59b72a2765ba4893f8042e8be2dea2764fa18eeaacc40d60242c

See more details on using hashes here.

Provenance

The following attestation bundles were made for tepilora-0.5.4-py3-none-any.whl:

Publisher: publish.yml on Admintepilora/tepilora-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page