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.
Metadata
Release files for finpie 0.1.32
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| finpie-0.1.32.tar.gz | 48.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| finpie-0.1.32-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 99.1 kB
Release files / finpie-0.1.32.tar.gz
| Download URL | finpie-0.1.32.tar.gz |
|---|---|
| Size | 48.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b1ecad7143c621d76ae3224b66c069fb5197e350bfd17aadbc9a4e5f5e986f1b
|
|
BLAKE2b-256 checksum How to use checksums |
f3632cf055e07abb8703f9c03a023f691a4ded8a7a176dd10383a16930f4c53c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.6
|
Release files / finpie-0.1.32-py3-none-any.whl
| Download URL | finpie-0.1.32-py3-none-any.whl |
|---|---|
| Size | 50.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
68814a505ea492645643944493b2bb47f26bfcc2d8355586be8ea3082d8c19ee
|
|
BLAKE2b-256 checksum How to use checksums |
88b55803a5c540ca6ca93f979903cbc598a54ed112740936465c98a8b7af0caa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.6
|