Scientific software for portfolio optimization, information theory, networks, and machine learning.
Core maintainer & co-author
skfolio
I am a co-author and core maintainer of skfolio. It provides portfolio optimization and risk modeling in Python, with an API compatible with scikit-learn.
from skfolio.optimization import MeanRisk
from skfolio import RiskMeasure
model = MeanRisk(
risk_measure=RiskMeasure.CVAR
)
model.fit(returns)
OPEN SOURCE / 01
pybsp
Native Python bindings for a backtracking survey-propagation SAT solver
About the project
pybsp exposes the C++ bsp_core solver through a direct nanobind interface. Its Python API accepts SAT formulas and solver options, runs complete solves in process, and returns assignments as NumPy arrays together with pandas diagnostic tables, structured run information, and captured logs. It also provides batch solving, dataset workflows, and a scikit-learn compatible estimator for experiments with random K-SAT instances.
Information-theoretic estimators for continuous and time-series data
About the project
xyz is a Python library implementing estimators for information-theoretic quantities on continuous and time-series data. It provides tools for entropy estimation (Kozachenko-Leonenko k-NN), mutual information (Kraskov-Stögbauer-Grassberger), transfer entropy, and partial information decomposition. It features a scikit-learn compatible API and supports TRENTOOL-style workflows for analyzing directed information flow in complex systems. The documentation is available at https://carlonicolini.github.io/xyz
A library for making portfolio allocation familiar to data scientists and machine learning engineers
About the project
The main idea of scikit-portfolio is to provide many well-known portfolio optimization methods with an easily accessible scikit-learn inspired set of API. This approach makes it possible to incorporate portfolio estimators as if they are classical scikit-learn estimators, thus enabling cross-validation and hyperparameters optimization with the tools of the Python data-science toolkit, and with an eye the highly technical domain of investment portfolio management.
Online Convex Optimization branch of the skfolio library
About the project
skfolio-online is the branch regarding online convex optimization for skfolio, a Python library for portfolio optimization and risk management built on top of scikit-learn. The branch contains modern a collection of modern Online Convex Optimization methods for the regret minimization in online settings, where data come day after day.
Compiled acceleration for skfolio cross-validation
About the project
skfolio-accelerate accelerates repeated skfolio cross-validation by compiling the validation plan once and reusing solver structure across portfolio optimization trajectories.
Autonomous portfolio optimization research using AI agents
About the project
autoresearch-skfolio is a framework for autonomous portfolio optimization research where an AI agent iteratively improves portfolio performance by modifying a single training script. It automates testing of portfolio optimization models (MeanRisk, RiskBudgeting, HierarchicalRiskParity, NestedClustersOptimization) against multiple datasets using walk-forward analysis, cross-validation, and rigorous validation techniques including reversed-return testing.
Evaluation metrics for extreme multilabel classification
About the project
scikit-xml provides specialized evaluation metrics for extreme multilabel classification and ranking tasks, extending scikit-learn functionality. It offers metrics like Precision@k, Recall@k, MAP@k, and NDCG@k with propensity-scored variants for handling imbalanced datasets. The package is optimized with NumPy and Numba implementations.
Scikit-learn compatible wrapper for Omikuji extreme multi-label classification
About the project
scikit-omikuji provides a scikit-learn compatible interface to the high-performance Rust-based Omikuji library for extreme multi-label classification. It implements PARABEL (Partitioned Label Trees) and features 1.3x to 4.6x speedups, sparse matrix support, multi-threaded training and prediction, and comprehensive evaluation metrics for extreme multi-label tasks.
Wilson's algorithm for thermodynamic analysis of graphs
About the project
A Python implementation of Wilson’s algorithm for analyzing thermodynamic properties of graphs through spanning forest sampling and spectral reconstruction. It samples random spanning forests to reconstruct spectral properties and compute thermodynamic quantities including partition functions. Supports Erdős-Rényi, Barabási-Albert, regular, and grid graph families.
This work combines symbolic representations and neural probing to introduce Hyperdimensional Probe, a new paradigm for decoding LLM vector space into human-interpretable features, consistently extracting meaningful concepts across models and inputs.
festival-cli is a modern command-line reimplementation of the Festival Sokoban solver with JSON output support. It solves Sokoban puzzles (finding sequences to push boxes onto goal locations) and outputs solutions in LURD notation. Features configurable time limits, verbose output, and cross-platform support via CMake.
Networkqit is a Python toolbox to perform model optimization and assessment within the spectral entropies of complex networks framework. You can install it with the pip package manager as it is hosted on the pypi repositories: pip install networkqit.
PACO is the second iteration of the FAGSO algorithm, written from scratch with better data structures implementation as well as the full support of the igraph library. PACO implements agglomerative optimization methods as well as simulated annealing, and its written in a modular fashion so optimization of cost functions of various type can be carried on in a series of subsequent steps. We suggest to download and use PACO instead of FAGSO as it is faster and supports a wider variety of quality functions, not only Surprise but also Asymptotical Surprise. Additionally it contains a Matlab wrapper for Infomap community detection.
FAGSO is an agglomerative Surprise Optimization algorithm written in C++ with bindings as MEX MATLAB and Octave file as well as Python library. It comes as the first proof of concept implementation of the idea, and accompanies the paper Modular structure of brain functional connectivity: breaking the resolution limit by Surprise. All the documentation on how to compile and use FAGSO is indicated on the github webpage.
Collections of Matlab functions useful for community detection.
About the project
CommunityAlg is a set of Matlab functions for the analysis of complex networks and it extends largely the Brain connectivity Toolbox (BCT) by Sporns and Rubinov. CommunityAlg at the moment is a moving target and the implementations of the methods may change in the future as well as their signatures.
A library for experiments in visual perception, psychophysics and visualization.
About the project
CNCSVision makes it possible to simulate interactive three-dimensional environments. It connects all the facilities necessary in a research lab of vision science, with head tracking and haptic/psychophysics perception. CNCSVision was developed in the laboraties of IIT in Rovereto, under the supervision of Prof. Fulvio Domini.
A Matlab wrapper around the Lancichinetti-Fortunato-Radicchi benchmark network generator
About the project
LFR is an implementations of the planted partition model where the degrees and the community size is modeled after powerlaws with specific exponents. This implementation is a Matlab wrapper around the LFR Weighted with non overlapping communities that is available on the website of Santo Fortunato.
A Matlab wrapper around the latest available implementation of Rosvall and Bergstroms Infomap code available on github.
About the project
Infomap optimizes the map equation, which exploits the information-theoretic duality between the problem of compressing data, and the problem of detecting and extracting significant patterns or structures within those data. Specifically, the map equation is a flow-based method and operates on dynamics on the network.
A Matlab wrapper around the Traag louvain python package.
About the project
Multilouvain comes a C++ library and a Matlab mex wrapper that is able to optimize different quality functions for community detection on graphs. Multilouvain features Asymptotical Surprise, Significance, Reichardt and Bornholdt, CPM and Newman modularity in a single unified framework. All the credits for the C++ code are to Vincent Traag. This wrapper modified some functions to make faster calls to methods and the code is not completely equal, though.