Methodology
For each tenderer, the ratio is calculated as:- Its number of valid bids is greater than or equal to the upper fence (default: 75th percentile / Q₃) of the set of numbers of valid bids (making it a “top tenderer”), AND
- Its ratio is less than or equal to the lower fence of
Q1 - 1.5(IQR), where Q₁ is the first quartile and IQR is the interquartile range for the set of ratios
Example:75% (Q₃) of bidders in Atlantis submitted at most 100 bids. UnethicalBid Ltd. submitted 150 bids. This is greater than the upper fence of 100, so UnethicalBid Ltd. is a “top tenderer.”25% (Q₁) of bidders in Atlantis won at most half (
0.5) of their bids. 75% (Q₃) of bidders won at most three quarters (0.75) of their bids. This yields a lower fence of one eighth (0.125).UnethicalBid Ltd. won 15 of its 150 bids, or one tenth (0.1). This is less than the lower fence of one eighth, so UnethicalBid Ltd. is flagged.Output
The indicator’s value is the ratio as a decimal (e.g.,0.1666 for winning 1 out of 6 bids).
This indicator only flags tenderers, not individual contracting processes.
Configuration
All configuration is optional.The percentile to use for determining “top tenderers” (those who bid frequently). Only tenderers at or above this percentile in number of bids are evaluated.
Override the calculated lower fence with a fixed threshold. When set, the statistical calculation is bypassed.This would flag top tenderers whose win ratio is ≤ 5%.
Configuration tip: Put all properties under one
[R025] section in your settings file.Exclusions
A contracting process is excluded if:- An award’s status is pending or invalid
- There are multiple active awards (multiple winners) - see issue #14
- A bid is submitted by multiple tenderers (joint ventures) - see issue #17
- An award is made to multiple suppliers - see issue #17
Want to eliminate an exclusion? Please contribute to the linked GitHub issues.
Example Output
Input (Multiple OCDS releases showing a tenderer with low win rate):Implementation Details
Fromsrc/indicators/r025.rs:22-91:
The indicator:
- During fold phase:
- Counts valid bids per tenderer
- Tracks whether each bid won (tenderer is in award suppliers)
- Stores as a fraction (wins/total) in
r025_tenderer - Each tenderer counted once per contracting process
- During finalize phase:
- Calculates upper fence for number of bids (default: Q₃)
- Calculates lower fence for win ratios using Tukey’s method
- Flags tenderers who exceed upper fence AND fall below lower fence
- Optimization: Skips flagging if Q1 ≤ 0 (would flag majority of top tenderers)
Interpretation: A low win ratio alone isn’t necessarily suspicious - many legitimate businesses lose more bids than they win. This indicator specifically targets frequent bidders with unusually low win rates compared to their peers, which may suggest cover bidding in collusion schemes.
