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.1.tar.gz (28.9 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.1-py3-none-any.whl (33.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: finpie-0.1.1.tar.gz
  • Upload date:
  • Size: 28.9 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.1.tar.gz
Algorithm Hash digest
SHA256 ff925bc982f0a1e43b8e99bc83cd75ee9e5bd02f0764b0391d1c40451178ef7a
MD5 96e8af8b725d593aba07eeb619ae54b0
BLAKE2b-256 7b0cf64b655f3eca8337822acaaebccd872f3d8a00375bd34d5c4732999fbc5a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: finpie-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 33.6 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 02c704c32a15bfb208d115ccb0429de227c56432545999134293124255472567
MD5 ba67482383b48dce31f9dfec5c3d0505
BLAKE2b-256 c96970341bea8343dc36db7acfea73a948ca7b8b5fc585722889a6b99a06a3d2

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