Skip to main content

Ratio Study for Computer Assisted Mass Appraisal (CAMA) models

Ratio-Study is software package for Python developed by the Municipal Property Assessment Corporation (MPAC) of Ontario, Canada. It has been developed and is maintained by ASMA-DS: the Data Science team within the Assessment Standards and Mass Appraisal Department at MPAC.

This package provides a comprehensive suite of functions for evaluating Computer Assisted Mass Appraisal (CAMA) real estate valuation models. These functions comprise but are not limited to the International Association of Assessing Officers (IAAO)' Standard on Ratio Studies, as well as recent advances in this area.

Backend support (pandas / polars / pyarrow)

The package is backend-agnostic thanks to narwhals. Public functions (ratios, rts_calculator, asr_median, cod, prd, prb, rmse, mae, CoC, CoV_adj, vei_analysis, vem, gini_stats, gini_decomp, gini_factors, bo_decompose, bo_multi_decomposition, compare_ratios, etc.) accept any of the following:

  • pandas.DataFrame (default)
  • polars.DataFrame
  • pyarrow.Table
  • A narwhals-wrapped frame (narwhals.DataFrame / narwhals.LazyFrame)
  • 1D values can be any of: numpy.ndarray, pandas.Series, polars.Series, narwhals.Series, or a plain list.

Where the input is a polars / pyarrow / narwhals frame, the result is returned in the same backend so you can keep your pipeline native.

A few third-party libraries remain pandas-only, so the package converts at the function boundary where needed:

  • seaborn (used in graphs.py)
  • xlsxwriter via pd.ExcelWriter (used in reporting.py)
  • statsmodels.formula.api.ols (used in gini_factors)
import polars as pl
from ratio_study import ratios, load_sample_dataset

# Load a polars DataFrame from the bundled parquet sample
df = load_sample_dataset("polars")

# Compute IAAO ratio indicators — result is a polars.DataFrame
result = ratios(
    df,
    market_value_header="time_adjusted_sale_price",
    assessment_header="assessment_value_new",
    list_of_indicators=["Median", "Mean", "CoD", "PRD", "PRB"],
    group_by="property_type",
)
print(result.to_dicts())

References

IAAO's Standard on Ratio Studies available at https://www.iaao.org/media/standards/Standard_on_Ratio_Studies.pdf

Thomas J. DiCiccio. Bradley Efron. "Bootstrap confidence intervals." Statist. Sci. 11 (3) 189 - 228, August 1996. https://doi.org/10.1214/ss/1032280214

Quintos, C. (2020). A Gini measure for vertical equity in property assessments. Journal of Property Tax Assessment & Administration, 17(2). Retrieved from https://researchexchange.iaao.org/jptaa/vol17/iss2/2

Quintos, C. (2021). A Gini decomposition of the sources of inequality in property assessments. Journal of Property Tax Assessment & Administration, 18(2). Retrieved from https://researchexchange.iaao.org/jptaa/vol18/iss2/6

Formulas on article by David Zaslavsky, retrieved from https://www.ellipsix.net/blog/2012/11/the-gini-coefficient-for-distribution-inequality.html

Metadata

Release files for ratio-study 1.0.1

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

Source distribution (sdist)

Source distribution for ratio-study 1.0.1
File Size Uploaded
ratio_study-1.0.1.tar.gz 1.1 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for ratio-study 1.0.1
File Interpreter ABI Platform
ratio_study-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 2.2 MB

Release files / ratio_study-1.0.1.tar.gz

Download URL ratio_study-1.0.1.tar.gz
Size 1.1 MB
Tags Source
SHA-256 checksum
How to use checksums
3c035c287bdcb487af183ff7a7002cf5618d153afb2234878212f16c96a70c93
BLAKE2b-256 checksum
How to use checksums
6f94e0d9900a8b862be9f46489425e42b1a7595c7e4308572bc00caebdaf4c63
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.5

Release files / ratio_study-1.0.1-py3-none-any.whl

Download URL ratio_study-1.0.1-py3-none-any.whl
Size 1.0 MB
Tags Python 3
SHA-256 checksum
How to use checksums
90f419ed54d1dc83490cdf97a0b27d9f94775d98121d88fc36843e0aac59423e
BLAKE2b-256 checksum
How to use checksums
299427a38d5a291beb9a193a244770feec596964540cc4e0da529d5b34467eaa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.5

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files

1.0

2 release files

0.4.91

2 release files

0.4.10

2 release files

0.4.9

2 release files

0.4.8

2 release files

0.4.7

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

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