Skip to main content

A rule-based and machine learning-based anomaly detection library for financial transactions.

Project description

Finomaly

PyPI & Source Code

PyPI: https://pypi.org/project/finomaly/

Source Code: https://github.com/Barisaksel/finomaly

Finomaly is a modular, open-source Python library for anomaly detection in financial transactions. It supports both rule-based and machine learning-based detection, multi-language reporting, and professional reporting formats.

🆕 NLP Modules & Language-Aware Message Management

TextEmbeddingAnomalyDetector

Provides text anomaly detection using TF-IDF vectorization and IsolationForest. All error and user messages are centrally managed and support multiple languages.

Usage:

from finomaly.nlp.embeddings import TextEmbeddingAnomalyDetector

# You can provide a list of texts, or an Excel file path and column name.
texts = ["Money transfer completed", "Credit card purchase", "Suspicious transaction"]
detector = TextEmbeddingAnomalyDetector(lang='en')
detector.fit(texts)
anomalies = detector.predict(["Very large amount transfer"])
print(anomalies)

# Or load texts directly from an Excel file:
# detector.fit('transactions.xlsx', column='Description')
# anomalies = detector.predict('new_transactions.xlsx', column='Description')

TransactionDescriptionClassifier

Categorizes transaction descriptions using TF-IDF and Logistic Regression. All messages are centrally managed and support multiple languages.

Usage:

from finomaly.nlp.text_classifier import TransactionDescriptionClassifier

# You can provide lists, or load from Excel file with text and label columns.
texts = ["Grocery shopping", "Bill payment", "ATM withdrawal"]
labels = ["Shopping", "Bill", "Cash"]
clf = TransactionDescriptionClassifier(lang='en')
clf.fit(texts, labels)
pred = clf.predict(["Electricity bill"])
print(pred)

# Or load texts and labels from Excel:
# import pandas as pd
# df = pd.read_excel('train.xlsx')
# clf.fit(df['Description'], df['Category'])
# pred = clf.predict(['Electricity bill'])

Multi-Language Support & Message Management

  • All error and user messages are centrally managed in finomaly/core/messages_config.json according to the selected language.
  • If a message key or language is missing, the system automatically returns the default English message without raising an error.

Requirements

  • scikit-learn, pandas, numpy
  • (For NLP) openpyxl (Excel support), language file: messages_config.json

Features

  • Rule-based anomaly detection (JSON-configurable, customer-specific rules)
  • Machine learning models: IsolationForest, RandomForest, XGBoost
  • NLP modules: TextEmbeddingAnomalyDetector (text anomaly), TransactionDescriptionClassifier (text classification)
  • Profile-based analysis (behavioral deviation, unusual time, etc.)
  • Multi-language support (TR/EN) for all messages and reports
  • Centralized message and rule management (with fallback to default language)
  • Professional reporting: Excel, HTML, PDF (with optional charts)
  • Visual analytics: anomaly distribution, scatter plots
  • Easy integration, clean API, and extensible modular structure

Installation

pip install finomaly

Quick Start

import pandas as pd
from finomaly.core.anomaly_system import CorporateAnomalySystem

# Load your data
train_df = pd.read_excel('train.xlsx')
predict_df = pd.read_excel('predict.xlsx')

# Define features and rules
features = ['Tutar', 'Saat']
rules_path = 'rules.json'

# Initialize system
system = CorporateAnomalySystem(features, rules_path=rules_path, ml_method='isolation_forest', lang='en')

# Train model
system.fit('train.xlsx', customer_col='MusteriID', amount_col='Tutar')

# Predict anomalies
output_path = system.predict('predict.xlsx', customer_col='MusteriID', amount_col='Tutar')
result = pd.read_excel(output_path)
print(result.head())

Reporting & Visualization

from finomaly.report.visualizer import Visualizer
from finomaly.report.pdf_reporter import PDFReporter

visualizer = Visualizer()
visualizer.plot_anomaly_distribution(result, amount_col='Tutar', anomaly_col='ML_Anomaly')

pdf_reporter = PDFReporter()
pdf_reporter.generate_pdf_report(result, 'report.pdf')

Project Structure

  • core/ : Rule engine, model management, utilities
  • ml/ : ML models (IsolationForest, RandomForest, XGBoost)
  • profile/ : Profile-based analysis (behavioral, time-based)
  • report/ : Reporting and visualization (Excel, HTML, PDF, charts)

Contributing

Finomaly is open-source and welcomes contributions. Please open issues or pull requests for improvements, bug fixes, or new features.

License

MIT License

Author

Barış

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

finomaly-0.1.5.tar.gz (5.1 kB view details)

Uploaded Source

Built Distribution

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

finomaly-0.1.5-py3-none-any.whl (4.4 kB view details)

Uploaded Python 3

File details

Details for the file finomaly-0.1.5.tar.gz.

File metadata

  • Download URL: finomaly-0.1.5.tar.gz
  • Upload date:
  • Size: 5.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.2

File hashes

Hashes for finomaly-0.1.5.tar.gz
Algorithm Hash digest
SHA256 bae934050b8d8276156cad1ff6a00562ee681b415ea873c67f1bb2898c0de207
MD5 856d299dfb29ab9990516a0c1cb42a52
BLAKE2b-256 d058c64f1a3bb6ddedcf76610d98188e0fe3372720014b83d557a56879697425

See more details on using hashes here.

File details

Details for the file finomaly-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: finomaly-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 4.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.2

File hashes

Hashes for finomaly-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 d1a85003a6a5050588e7a8272789d7be3410eb3b09d03b96bf2b23f9c2ea2cdb
MD5 909f7e90f4adb02f0986b1620d53e6d5
BLAKE2b-256 5ec8aecc6ea749a4ce184d0997368135525a1a2408a1dddbbb0689bdd5c412d6

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