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.31.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.31-py3-none-any.whl (38.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: finpie-0.1.31.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.31.tar.gz
Algorithm Hash digest
SHA256 cfee134f997314c06a499aa0347f026ce2affb51e31e40f62f499319460ef5e1
MD5 7bcb950e9b1be9d09b0aeb2ef532e579
BLAKE2b-256 414ea1c8d0fd1654af6bf7a532292befb26764d56be66c1743a7734a9ae29a9f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: finpie-0.1.31-py3-none-any.whl
  • Upload date:
  • Size: 38.9 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.31-py3-none-any.whl
Algorithm Hash digest
SHA256 8b47072973eb2f53a3772a0ca71128add280893a4006604f40e8423650cccb8e
MD5 027767a721697078f7cefef5ad331389
BLAKE2b-256 f0fd1bcb5796608d3e4977188b14c9d562b95b47befdb6737be8dfcdb4c174bb

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