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
-
Create a virtual environment:
# Windows python -m venv venv # Linux/MacOS python3 -m venv venv
-
Activate the virtual environment:
# Windows .\venv\Scripts\activate # Linux/MacOS source venv/bin/activate
-
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]"
-
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file finpie-0.1.32.tar.gz.
File metadata
- Download URL: finpie-0.1.32.tar.gz
- Upload date:
- Size: 48.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b1ecad7143c621d76ae3224b66c069fb5197e350bfd17aadbc9a4e5f5e986f1b
|
|
| MD5 |
5f160fdea459fbc1a2874545b798cd74
|
|
| BLAKE2b-256 |
f3632cf055e07abb8703f9c03a023f691a4ded8a7a176dd10383a16930f4c53c
|
File details
Details for the file finpie-0.1.32-py3-none-any.whl.
File metadata
- Download URL: finpie-0.1.32-py3-none-any.whl
- Upload date:
- Size: 50.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
68814a505ea492645643944493b2bb47f26bfcc2d8355586be8ea3082d8c19ee
|
|
| MD5 |
306239a89175d29f1f611d4cc9b61258
|
|
| BLAKE2b-256 |
88b55803a5c540ca6ca93f979903cbc598a54ed112740936465c98a8b7af0caa
|