Skip to main content

Argenta

PyPI version Python CI License Code style: ruff

Warehouse-native causal ML for experimentation.

Most A/B testing tools answer one question: Did the experiment work?

Argenta answers: For whom did it work, why, and what should you do next?


What Argenta Is

Argenta is an analytics layer that connects to your existing data warehouse, runs a SQL pipeline inside it to construct an experiment dataset, and then applies causal ML methods to produce results your current tool doesn't: heterogeneous treatment effects (HTE), per-user CATE scores, automatic subgroup discovery, and targeted rollout recommendations.

It works with experiments you've already run — using whatever tool assigned variants (Statsig, LaunchDarkly, Optimizely, homegrown feature flags). Argenta only analyzes.

What Argenta Is NOT

  • Not an A/B testing platform. Argenta does not assign variants or run feature flags.
  • Not a real-time system. Analysis runs post-hoc, after experiments have collected data.
  • Not a data pipeline tool. Argenta does not move or replicate your data. SQL runs inside your warehouse; results are written back to a schema you control.

Quick Start

1. Install

# Pick your warehouse:
pip install "argenta-cml[snowflake]"
pip install "argenta-cml[bigquery]"
pip install "argenta-cml[redshift]"
pip install "argenta-cml[all]"   # all warehouses

2. Create a config file

# argenta.yaml
warehouse:
  warehouse_type: snowflake
  output_schema: argenta
  credentials:
    account: my_account
    user: argenta_svc
    password: "${SNOWFLAKE_PASSWORD}"
    database: ANALYTICS
    schema: PUBLIC
    warehouse: COMPUTE_WH

exposures:
  table: ANALYTICS.PUBLIC.STATSIG_EXPOSURES
  user_id_col: user_id
  experiment_id_col: experiment_name
  variant_col: group
  timestamp_col: exposure_time

outcomes:
  table: ANALYTICS.PUBLIC.EVENTS
  user_id_col: user_id
  event_name_col: event_type
  value_col: revenue
  timestamp_col: event_time
  target_events:
    - purchase
    - add_to_cart

user_features:
  table: ANALYTICS.PUBLIC.USER_DIM
  user_id_col: user_id
  feature_cols:
    - country
    - device_type
    - account_age_days
  covariate_col: pre_experiment_revenue

experiment:
  experiment_id: checkout_redesign_2024
  control_variant: control
  treatment_variant: treatment
  alpha: 0.05
  winsorize_percentile: 0.99
  use_cuped: true

3. Run

from argenta import ArgentoConfig, PipelineRunner
from argenta.config.loader import load_config

config = load_config("argenta.yaml")
runner = PipelineRunner(config)
result = runner.run("checkout_redesign_2024")

print(result)

Results are also written back to your warehouse at argenta.experiment_results.


Architecture

Your warehouse (Snowflake / BigQuery / Redshift)
         │
         │  read-only + write to argenta schema
         ▼
Argenta SQL pipeline (runs INSIDE your warehouse)
  ├── 1. Exposure deduplication   — first exposure per user wins
  ├── 2. Outcome join             — only events after first exposure
  └── 3. User feature join        — covariates for CUPED + future CATE
         │
         ▼
Argenta stats layer (Python)
  ├── ATE + Welch CI + p-value
  ├── Winsorization
  ├── SRM detection
  └── CUPED variance reduction
         │
         ▼
Results written back to your warehouse
  ├── argenta.experiment_results   — per-metric ATE, CI, p-value
  ├── argenta.user_cate_scores     — per-user CATE (Phase 2)
  └── argenta.segment_effects      — HTE by segment (Phase 2)

Statistical Methods

Method Purpose
Welch's t-test ATE + p-value
Confidence intervals 95% CI on ATE
Winsorization Outlier handling for revenue metrics
SRM detection Sample ratio mismatch check
CUPED Variance reduction via pre-experiment covariate
Causal Forest (CausalForestDML) Non-parametric CATE estimation
X-Learner CATE with unbalanced treatment/control
Uplift modeling Score users not in experiment
Sequential testing (mSPRT) Always-valid p-values
Multiple testing correction Bonferroni / BH-FDR across metrics

Input Tables Required

Argenta needs three tables in your warehouse (all column names are configurable):

Table Required columns
Exposures user_id, experiment_id, variant, timestamp
Outcomes / events user_id, event_name, value, timestamp
User features user_id, + any feature columns

The user features table is required for CUPED variance reduction. Without it, set use_cuped: false.


Output Tables

Argenta writes results back to {output_schema} in your warehouse (default: argenta):

Table Contents
argenta.experiment_results ATE, CI, p-value, SRM flag per metric
argenta.user_cate_scores Per-user CATE score
argenta.segment_effects HTE by segment

Supported Warehouses

Warehouse Extra Status
Snowflake argenta[snowflake] Supported
BigQuery argenta[bigquery] Supported
Redshift argenta[redshift] Supported
Databricks argenta[databricks] Planned

Documentation


Contributing

Contributions are welcome. See CONTRIBUTING.md for setup instructions, coding conventions, and the PR process.


License

Apache 2.0. See LICENSE.


Side note

The name "Argenta" is inspired by the name of a professor who introduced me to causal inference during my bachelor's degree.

Metadata

Release files for argenta-cml 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for argenta-cml 0.1.0
File Size Uploaded Provenance Actions
argenta_cml-0.1.0.tar.gz 65.0 kB With provenance Details for argenta_cml-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for argenta-cml 0.1.0
File Interpreter ABI Platform Actions
argenta_cml-0.1.0-py3-none-any.whl Python 3 none any Details for argenta_cml-0.1.0-py3-none-any.whl

Total release size: 128.3 kB

Release files / argenta_cml-0.1.0.tar.gz

Download URL argenta_cml-0.1.0.tar.gz
Size 65.0 kB
Tags Source
SHA-256 checksum
How to use checksums
48d8b74ade04894dcf3823b6d5f015c3a7f946038cd516e8f2b8dff6a6d1b61e
BLAKE2b-256 checksum
How to use checksums
ae3e0645790e53a01444357a038e3a5cc65b70b246d8b4b561e5d62c909fb20b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 22, 2026.

Transparency log

Release files / argenta_cml-0.1.0-py3-none-any.whl

Download URL argenta_cml-0.1.0-py3-none-any.whl
Size 63.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e475a2899152c3523d14ced9b66d2e870730caf3b9168f71ff5730e7ed71252a
BLAKE2b-256 checksum
How to use checksums
3a5c4b1b31bde2c28d99f1b5a3144ce97e02aa0abd3b722589d73db255ddd509
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 22, 2026.

Transparency log

Security for argenta-cml 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for argenta_cml-0.1.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 22, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page