Simple financial/technical indicators demo package.
Project description
๐ฏ Composite Indicator Builder
Professional tool for constructing composite indicators using various methodologies
Author: Dr. Merwan Roudane
Email: merwanroudane920@gmail.com
GitHub: merwanroudane/indic
๐ Overview
The Composite Indicator Builder is a comprehensive Python package designed for researchers, economists, and data analysts who need to construct composite indicators following OECD guidelines and academic best practices. The package features a beautiful modern GUI built with CustomTkinter and implements multiple weighting and aggregation methodologies.
โจ Key Features
- ๐จ Modern GUI - Beautiful, intuitive interface with light/dark mode support
- ๐ Multiple Methods - 9 different calculation methodologies
- ๐ Advanced Analytics - Built-in visualizations and statistical analysis
- ๐พ Excel Integration - Import data and export results seamlessly
- ๐ฌ Research-Grade - Based on OECD Handbook and peer-reviewed literature
- ๐ Cross-Platform - Works on Windows, macOS, and Linux
๐ Quick Start
Installation
# Clone the repository
git clone https://github.com/merwanroudane/indic.git
cd indic
# Install the package
pip install -e .
# Or install directly from GitHub
pip install git+https://github.com/merwanroudane/indic.git
Launch the Application
# Run from command line
indicator
# Or run from Python
python -m indicator.gui
Basic Usage Example
import pandas as pd
from indicator import PCA_Calculation, EqualWeights, normalizar_dados
# Load your data
df = pd.read_excel("your_data.xlsx")
# Normalize data
data = pd.DataFrame()
for col in df.select_dtypes(include=['number']).columns:
data[col] = normalizar_dados(df[col].tolist(), orientacao="Min")
# Calculate using PCA
pca_model = PCA_Calculation(data)
results = pca_model.run()
# Access results
for i, result in enumerate(results):
print(f"Unit {i+1}: CI = {result.ci:.3f}, Weights = {result.weights}")
๐ Methodology
Available Methods
-
Principal Component Analysis (PCA)
- Statistical method based on variance explained
- Includes Varimax rotation for interpretability
- Filters components using OECD criteria
-
Shannon's Entropy
- Information theory-based weighting
- Assigns higher weights to discriminatory indicators
- Fully data-driven approach
-
Benefit of the Doubt (BoD)
- Based on Data Envelopment Analysis (DEA)
- Optimizes weights to maximize each unit's performance
- Can incorporate expert opinion through bounds
-
Equal Weights
- Simple arithmetic mean
- Baseline method for comparison
- Assumes equal importance of all indicators
-
Geometric Mean
- Multiplicative aggregation
- Less compensatory than arithmetic mean
- Suitable for essential indicators
-
Harmonic Mean
- Least compensatory aggregation
- Penalizes poor performance
- Ideal for critical dimensions
-
Factor Analysis
- Assumes underlying latent factors
- Alternative to PCA
- Includes Varimax rotation
-
Correlation-based Weighting
- Weights based on correlation structure
- Simple and interpretable
- Can use reference indicator
-
Minimal Uncertainty
- Optimizes to minimize ranking uncertainty
- Combines information from multiple methods
- Provides robust consensus ranking
๐จ GUI Features
Main Interface
The application features a modern, professional interface with:
- Sidebar Controls - Easy access to all settings and options
- Data Preview - View your imported data
- Interactive Results - Explore results with tabs for each method
- Visualizations - Automatic generation of charts and graphs
- Export Functionality - One-click Excel export
Screenshots
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ฌ Indicator Builder Dr. Merwan Roudane โ
โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ โ
โ ๐ Data โ ๐ Data Preview โ
โ Management โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ ๐ Select โ โ DMU โ Ind1 โ Ind2 โ Ind3 โ โ
โ Indicators โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ 1 โ 0.75 โ 0.82 โ 0.91 โ โ
โ โ๏ธ Methods โ โ 2 โ 0.63 โ 0.77 โ 0.85 โ โ
โ โ โ ... โ ... โ ... โ ... โ โ
โ ๐ Calculateโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ ๐พ Export โ ๐ Results & Visualizations โ
โ โ โ
โโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ User Guide
1. Loading Data
- Click "Load Excel File"
- Select your Excel file (.xlsx or .xls)
- Data should have:
- Numeric columns for indicators
- Optional label column for unit names
- No missing values
2. Selecting Indicators
- Check boxes next to indicators you want to include
- Choose a Label Column (optional) for unit identification
- Select a Control Variable (optional) for normalization
3. Choosing Methods
- Select one or more calculation methods
- Different methods provide different perspectives
- Use multiple methods for robustness analysis
4. Calculating
- Click "Calculate Indicators"
- Progress bar shows calculation status
- Results appear in separate tabs
5. Reviewing Results
Each result tab shows:
- Rankings - Sorted composite indicator values
- Weights - Indicator weights used
- Statistics - Min, max, mean, standard deviation
- Visualizations - Bar charts and distributions
6. Exporting
- Click "Export Results"
- Choose save location
- Excel file contains:
- Separate sheets for each method
- Summary statistics sheet
- Full weight information
๐ป Python API
Basic Example
from indicator import PCA_Calculation, normalizar_dados
import pandas as pd
# Load and prepare data
df = pd.read_excel("data.xlsx")
data = pd.DataFrame({
col: normalizar_dados(df[col].tolist(), "Min")
for col in df.select_dtypes(include=['number']).columns
})
# Calculate composite indicators
model = PCA_Calculation(data)
results = model.run()
# Extract CI values and weights
ci_values = [r.ci for r in results]
weights = results[0].weights # Same for all units in PCA
Advanced Usage - Multiple Methods
from indicator import (
PCA_Calculation,
Entropy_Calculation,
BOD_Calculation,
GeometricMean
)
methods = {
'PCA': PCA_Calculation(data),
'Entropy': Entropy_Calculation(data),
'BoD': BOD_Calculation(data),
'Geometric': GeometricMean(data)
}
results = {}
for name, model in methods.items():
results[name] = model.run()
# Compare results across methods
import numpy as np
correlations = {}
for m1 in results:
for m2 in results:
if m1 < m2:
ci1 = [r.ci for r in results[m1]]
ci2 = [r.ci for r in results[m2]]
corr = np.corrcoef(ci1, ci2)[0, 1]
correlations[f"{m1} vs {m2}"] = corr
Custom Bounds for BoD
from indicator import BOD_Calculation
# Set min/max bounds for each indicator
bounds = [
(0.1, 0.5), # Indicator 1: weight between 0.1 and 0.5
(0.0, 0.3), # Indicator 2: weight between 0.0 and 0.3
(0.2, 0.8), # Indicator 3: weight between 0.2 and 0.8
]
model = BOD_Calculation(data, bounds=bounds)
results = model.run()
๐ Data Requirements
Input Format
- File Type: Excel (.xlsx, .xls)
- Structure:
- Rows = Units/Entities (DMUs, countries, regions, etc.)
- Columns = Indicators + optional label column
- Data Type: Numeric values for indicators
- Missing Data: Not allowed (will prompt error)
- Size: Recommended maximum 300 rows
Example Data Structure
| Country | GDP_per_capita | Life_Expectancy | Education_Index |
|---|---|---|---|
| USA | 65000 | 78.5 | 0.92 |
| Germany | 48000 | 81.0 | 0.95 |
| Japan | 42000 | 84.5 | 0.94 |
๐ฌ Scientific Background
Normalization
The package implements Min-Max normalization:
- Min-oriented: (x - min) / (max - min) โ Higher values are better
- Max-oriented: (max - x) / (max - min) โ Lower values are better
Orientation is automatically determined by correlation with control variable.
Weight Determination
Different methods use different approaches:
- PCA/Factor Analysis: Based on variance explained
- Entropy: Based on information content
- BoD: Based on linear programming
- Correlation: Based on correlation structure
Aggregation
Multiple aggregation functions:
- Linear: Weighted arithmetic mean (fully compensatory)
- Geometric: Multiplicative (partially compensatory)
- Harmonic: Least compensatory
๐ References
Key Literature
-
OECD (2008). Handbook on Constructing Composite Indicators: Methodology and User Guide. OECD Publishing, Paris.
-
Nardo, M., et al. (2005). Handbook on Constructing Composite Indicators. OECD Statistics Working Papers.
-
Cherchye, L., et al. (2007). "An Introduction to 'Benefit of the Doubt' Composite Indicators." Social Indicators Research, 82(1), 111-145.
-
Zhou, P., Ang, B.W., & Poh, K.L. (2007). "A non-radial DEA approach to measuring environmental performance." European Journal of Operational Research, 178(1), 1-9.
-
Greco, S., et al. (2019). "On the Methodological Framework of Composite Indices: A Review." Social Indicators Research, 141, 61-94.
๐ ๏ธ Development
Requirements
pip install -r requirements.txt
Testing
pytest tests/
Contributing
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ค Author
Dr. Merwan Roudane
- Email: merwanroudane920@gmail.com
- GitHub: @merwanroudane
- Repository: merwanroudane/indic
๐ Acknowledgments
- OECD for methodological guidelines
- Academic community for research foundations
- Open-source community for excellent tools and libraries
๐ Support
For questions, issues, or suggestions:
- Email: merwanroudane920@gmail.com
- Issues: GitHub Issues
๐ Citation
If you use this package in your research, please cite:
@software{roudane2024indicator,
author = {Roudane, Merwan},
title = {Composite Indicator Builder: A Python Package for Constructing Composite Indicators},
year = {2024},
url = {https://github.com/merwanroudane/indic},
version = {1.0.0}
}
Made with โค๏ธ by Dr. Merwan Roudane
Project details
Release history Release notifications | RSS feed
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 indicators_merwan-1.0.0.tar.gz.
File metadata
- Download URL: indicators_merwan-1.0.0.tar.gz
- Upload date:
- Size: 34.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
011367ac723df57028148657b05b8596c77ce5f68bb0bfd84e30e8ce29a43c53
|
|
| MD5 |
33e55f92d279ba4bc746962ecd258b62
|
|
| BLAKE2b-256 |
e6f840e87b9977c6e0aa49e04a86f795a7dd186c808765b15b54dbd2abf04913
|
File details
Details for the file indicators_merwan-1.0.0-py3-none-any.whl.
File metadata
- Download URL: indicators_merwan-1.0.0-py3-none-any.whl
- Upload date:
- Size: 21.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e38169ab8dab08183df6a28ae968d3b6386c3861ccae2f56d8967eb72113dd2
|
|
| MD5 |
5bbeb62a116e6d261eebb85f104de30b
|
|
| BLAKE2b-256 |
ba16a4f04713f01d480b9665ebd73fad510b9e3dde492712897f3adfc76170fa
|