Skip to main content

A comprehensive Python library for Brazilian financial data analysis and quantitative research

Project description

finpie

A Python library for quantitative finance, providing tools for data handling, analysis, and trading strategies.

Installation

Regular Installation

pip install finpie

Development Setup

  1. Create a virtual environment:

    # Windows
    python -m venv venv
    
    # Linux/MacOS
    python3 -m venv venv
    
  2. Activate the virtual environment:

    # Windows
    .\venv\Scripts\activate
    
    # Linux/MacOS
    source venv/bin/activate
    
  3. Install in development mode:

    # Install in development mode with all dependencies
    pip install -e .
    
    # Install with development tools
    pip install -e ".[dev]"
    
    # Install with notebook support
    pip install -e ".[notebooks]"
    
    # Install with both development tools and notebook support
    pip install -e ".[dev,notebooks]"
    
  4. Running Jupyter Notebooks:

    # Start Jupyter
    jupyter notebook
    
    # Navigate to the finpie/notebooks directory
    # Open the desired notebook (e.g., data_examples.ipynb)
    

Quick Start

Examples

1. Fetching and Displaying Time Series Data

from finpie.datasource.service import DataService

data_service = DataService.create_default_service()

symbol = "WIN$N"  # Change to your desired symbol
start_date = "2022-01-01"
end_date = "2022-01-10"
interval = "1m"  # 1-minute data

ts_object = data_service.get_close_prices(
    symbol=symbol,
    source='mt5',
    start_date=start_date,
    end_date=end_date,
    interval=interval
)

print(ts_object.data.head())  # Display the first rows of the time series

2. Statistical and Technical Analytics

from finpie.analytics import Statistical, Technical
from finpie.data import TimeSeries

# Assume ts_object is a TimeSeries as above
stat = Statistical(ts_object, column='close')
tech = Technical(ts_object, column='close')

# Statistical analytics
zscore = stat.zscore(window=20)
half_life = stat.half_life()
hurst = stat.hurst_exponent()

# Technical analytics
rsi = tech.rsi(window=14)
macd = tech.macd()

print('Z-score:', zscore.tail())
print('RSI:', rsi.tail())

3. LLM-based Market Forecasting

import torch
import pandas as pd
from finpie.analytics.llm import LLMForecaster, MarketTokenizer
from finpie.data.timeseries import TimeSeries

# Load your time series data (example: from a parquet file)
ts = TimeSeries(pd.read_parquet('finpie/notebooks/win_returns.parquet'))
ret = ts.returns(intraday_only=True)
returns = ret.data[(ret.data.index.hour >= 10) & (ret.data.index.hour < 17)]

# Initialize and train the LLM forecaster
forecaster = LLMForecaster()
forecaster.build_dataset(returns['close'])
forecaster.build_model()
forecaster.train()

# Generate predictions for the next 5 periods
data_prompt = torch.tensor(
    MarketTokenizer.series_to_tokens(
        returns['close'].iloc[-60:],
        forecaster.vocab_size
    )[0],
    dtype=torch.long
).unsqueeze(0)
predicted_tokens = forecaster.fit(data_prompt, steps=5)
predicted_returns = MarketTokenizer.tokens_to_values(
    predicted_tokens, forecaster.bins
)
print('Predicted returns:', predicted_returns)

4. Fetching Fundamentals Data

from finpie.datasource.sources.schemas.status_invest import FundamentalsParams
from finpie.datasource.sources.status_invest import StatusInvestSource

si = StatusInvestSource()
params = FundamentalsParams(max_pe_ratio=10, items_per_page=15)
fundamentals = si.get_fundamentals(params)
print(fundamentals.head())

Project Structure

finpie/
├── data/           # Data handling module
├── analytics/      # Analytics and modeling module
├── datasource/     # Data request module
├── notebooks/      # Usage examples and tutorials
└── docs/           # Documentation

Features

  • Time Series Management

    • Flexible data structure with metadata support
    • Built-in data validation and alignment
    • Support for various frequencies and resampling
    • Comprehensive statistical calculations
  • Statistical Analysis

    • Z-score calculations
    • Mean reversion metrics (half-life, Hurst exponent)
    • Moving average analysis
    • Trading signal generation
  • Specialized Time Series

    • Ratio analysis for pair trading
    • Spread analysis for statistical arbitrage
    • Multi-time series for portfolio analysis

Contributing

Contributions are welcome! Please feel free to submit a Pull Request :).

License

This project is licensed under the MIT License - see the LICENSE file for details.

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

finpie-0.1.3.tar.gz (32.8 kB view details)

Uploaded Source

Built Distribution

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

finpie-0.1.3-py3-none-any.whl (38.8 kB view details)

Uploaded Python 3

File details

Details for the file finpie-0.1.3.tar.gz.

File metadata

  • Download URL: finpie-0.1.3.tar.gz
  • Upload date:
  • Size: 32.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for finpie-0.1.3.tar.gz
Algorithm Hash digest
SHA256 339d73fbc23b776e3a91bfd6327df98aaffcec191b3eb3b1c99347a5d9e45be0
MD5 bd4beffcdc1ca353c0931bd0fb518e0e
BLAKE2b-256 f403694e73a9624493a3e80e55acfa17cb37d78440ecdd967e5db8357c6181c5

See more details on using hashes here.

File details

Details for the file finpie-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: finpie-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 38.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for finpie-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ac4ad941f0e89489014684c93a1205b59d55b5db39015fb545278936e4ee4ad3
MD5 fe583879cc0fd74bafd2e5ffe800cb62
BLAKE2b-256 087dbeaf6fccf92b4c74016342504e620b8b0207d1244cd92e12ab1e9fc63347

See more details on using hashes here.

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