tklds — High-Dimensional Sobol’ Sequences for Python
tklds (Tenokonda Low Discrepancy Sequences) is a Python package and direction-number dataset for generating, scrambling, and evaluating high-dimensional Sobol’ sequences for quasi-Monte Carlo (QMC) simulation.
The package includes the tkrg-a-ap5 direction-number set for 50,000 dimensions. The construction satisfies Property A in every supported dimension and Property A′ on every block of five adjacent dimensions. It also includes the new-joe-kuo-6.21201 direction numbers for reference and comparison.
The library provides:
- batch and iterative Sobol’ point generation;
- a SciPy-compatible
SobolEnginewith optional scrambling; - the
tkrg-a-ap5andnew-joe-kuo-6.21201direction-number datasets; - diagnostics for high-dimensional sequence behaviour;
- worked notebooks for integration, stochastic processes, pricing, sensitivities, and risk; and
- reproducibility material for the accompanying 2026 paper.
Scope note: Direction-number performance depends on the integrand, coordinate ordering, path construction, scrambling method, and sample size. The supplied research benchmarks identify material advantages for the tested high-dimensional path-simulation regimes; they do not establish that one direction-number set dominates every QMC problem.
Install
From PyPI
python -m pip install tklds
From a source checkout
git clone https://github.com/TENOKONDA/tklds.git
cd tklds
python -m pip install .
Editable development installation
git clone https://github.com/TENOKONDA/tklds.git
cd tklds
python -m pip install -e ".[examples,test]"
tklds requires Python 3.10 or later. The examples extra installs the packages used by the notebooks; the test extra installs the proposed test runner and coverage tooling.
Quick start
Generate a batch of Sobol’ points
from tklds.constant import SequenceNum
from tklds.interface.generators import generate_lds_rvs
points = generate_lds_rvs(
sequence=SequenceNum.TKRG_A_AP5,
n=1_024,
d=32,
skip=0,
)
print(points.shape) # (1024, 32)
Use the SciPy-compatible engine
from tklds.constant import SequenceNum
from tklds.interface.generators import create_sobol_lds_engine
engine = create_sobol_lds_engine(
sequence=SequenceNum.TKRG_A_AP5,
d=256,
scramble=True,
seed=1234,
)
# 2**10 points. Power-of-two sample sizes preserve the natural
# balance properties of a Sobol’ digital net.
points = engine.random_base2(m=10)
print(points.shape) # (1024, 256)
Generate points iteratively
from tklds.constant import SequenceNum
from tklds.interface.generators import create_iterative_lds_generator
sequence = create_iterative_lds_generator(
sequence=SequenceNum.TKRG_A_AP5,
d=8,
)
first_batch = sequence.rvs(size=(16, 8))
second_batch = sequence.rvs(size=(16, 8))
Available direction-number sets
| Identifier | Direction-number set | Supported dimensions | Intended use |
|---|---|---|---|
SequenceNum.TKRG_A_AP5 |
tkrg-a-ap5 |
50,000 | Default high-dimensional Sobol’ construction supplied by tklds |
SequenceNum.NEW_JOE_KUO |
new-joe-kuo-6.21201 |
21,201 | Established reference construction and compatibility comparisons |
The raw direction-number files are distributed with the package under tklds/direction_numbers.
Choosing a generation method
Use generate_lds_rvs for a direct array of points, create_iterative_lds_generator when points are consumed in successive batches, and create_sobol_lds_engine when interoperability with the SciPy QMC interface is useful.
For deterministic Sobol’ experiments, use scramble=False. For replicate-based error estimation, use independent scrambled engines with controlled seeds. Where the balance properties of the underlying digital net matter, prefer n = 2**m and random_base2(m).
Examples and reproducibility
The repository separates introductory examples from paper-specific reproduction material:
notebooks/01_quickstart.ipynb— package introduction;notebooks/02_integral.ipynb— numerical integration;notebooks/05_spurious_variance.ipynb— transformed-coordinate dependence diagnostic;notebooks/06_brownian_motion.ipynb— process simulation;notebooks/07_sobol_engine_examples.ipynb— SciPy-compatible engine usage; andnotebooks/paper_notebooks— figures and benchmarks associated with the 2026 paper.
Notebook dependencies are installed with:
python -m pip install -e ".[examples]"
Research basis
The current technical reference is:
Andres Oliva Denis, James Wheeldon, Ilya Manyakin, and Adrien Papaioannou. Sobol Direction Numbers for Quasi-Monte Carlo Simulation: Construction, Pathwise Dependence Diagnostics, and Financial Pricing Benchmarks. Tenokonda UK, 30 April 2026. SSRN abstract 7040539.
The paper introduces tkrg-a-ap5, explains its construction over GF(2), develops a pathwise dependence diagnostic, and reports deterministic pricing and risk benchmarks under standard chronological discretisation.
Testing
The repository contains unit tests for the public generator interfaces, iterative generation, the SciPy-compatible Sobol engine, numerical integration utilities, stochastic-process components, and the spurious-variance diagnostic.
Run the current suite from a source checkout with:
python -m unittest discover -s tklds/tests -p "test_*.py"
Automated pull-request and release-gating workflows are a high-priority follow-on item. Until those workflows are added, maintainers should run the complete suite manually before tagging a release.
Project links
Licence
tklds is distributed under the BSD 3-Clause License.
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 tklds-0.2.0.tar.gz.
File metadata
- Download URL: tklds-0.2.0.tar.gz
- Upload date:
- Size: 5.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b52511488ae851532cb098380759398aea3576539df14351a6e2e5b0a038932f
|
|
| MD5 |
e189503852f9aa88f42dca1700ddb362
|
|
| BLAKE2b-256 |
6d56a99e945bd7d83cab151be92e4a3f63773b209025469016fe738347df39da
|
Provenance
The following attestation bundles were made for tklds-0.2.0.tar.gz:
Publisher:
workflow.yml on TENOKONDA/tklds
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tklds-0.2.0.tar.gz -
Subject digest:
b52511488ae851532cb098380759398aea3576539df14351a6e2e5b0a038932f - Sigstore transparency entry: 2236737169
- Sigstore integration time:
-
Permalink:
TENOKONDA/tklds@e2000091e4b1b014b36e3c3b29e7c6db8a5e24db -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/TENOKONDA
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@e2000091e4b1b014b36e3c3b29e7c6db8a5e24db -
Trigger Event:
push
-
Statement type:
File details
Details for the file tklds-0.2.0-py3-none-any.whl.
File metadata
- Download URL: tklds-0.2.0-py3-none-any.whl
- Upload date:
- Size: 5.2 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9986f5dee4ee23a7d7cc584323d6324a5c5fe0daf764fc3484a31939153a4297
|
|
| MD5 |
84c38e992e9f6496daf3ab000930a234
|
|
| BLAKE2b-256 |
5fbbfb4df5147711ffe717f746e385612c38f8f4a26302898d50ecdb06ee1e63
|
Provenance
The following attestation bundles were made for tklds-0.2.0-py3-none-any.whl:
Publisher:
workflow.yml on TENOKONDA/tklds
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tklds-0.2.0-py3-none-any.whl -
Subject digest:
9986f5dee4ee23a7d7cc584323d6324a5c5fe0daf764fc3484a31939153a4297 - Sigstore transparency entry: 2236737720
- Sigstore integration time:
-
Permalink:
TENOKONDA/tklds@e2000091e4b1b014b36e3c3b29e7c6db8a5e24db -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/TENOKONDA
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@e2000091e4b1b014b36e3c3b29e7c6db8a5e24db -
Trigger Event:
push
-
Statement type: