The ratio of disqualified bids to submitted bids is a high outlier per buyer, procuring entity, or tenderer.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/open-contracting/cardinal-rs/llms.txt
Use this file to discover all available pages before exploring further.
Methodology
This indicator calculates ratios and uses statistical outlier detection to flag suspicious patterns.For Buyers and Procuring Entities
For each buyer, the ratio is calculated as: A buyer is flagged if its ratio is greater than or equal to the upper fence of: where is the third quartile and is the interquartile range for the set of ratios. The same methodology applies to procuring entities.For Tenderers
For each tenderer, the ratio is calculated as: A tenderer is flagged using the same upper fence calculation.Why is this a red flag?A corrupt buyer or procuring entity can award pre-determined bidders by disqualifying other bidders’ bids.A colluding bidder can mimic competition by submitting deliberately unqualified bids.
Output
The indicator’s value is the ratio, as a decimal (between 0.0 and 1.0). If the--map command-line flag is set, the Maps key contains:
The buyer for each
ocid in which at least one bid is disqualified.The procuring entity for each
ocid in which at least one bid is disqualified.Configuration
All configuration is optional.Override the calculated upper fence with a fixed threshold. If not set, the upper fence is calculated using .
Minimum number of submitted bids for a tenderer to be included in the analysis. Tenderers with fewer bids are excluded.
Minimum number of contracting processes for a buyer or procuring entity to be included in the analysis.
Implementation Details
The indicator (fromsrc/indicators/r038.rs):
- Tracks disqualified and submitted bid counts for buyers, procuring entities, and tenderers
- Calculates ratios as fractions (numerator/denominator)
- Uses statistical analysis (quartiles and IQR) to determine outliers
- Only flags entities meeting minimum threshold requirements
- Skips flagging if 75% of cases have no disqualified bids (upper fence = 0)
- Stores metadata about Q1, Q3, and upper fence calculations
Assumptions
This indicator assumes that/buyer/id, /tender/procuringEntity/id and /bids/details[]/tenderers[]/id are stable across contracting processes.
Is this assumption not true for your data? Please contribute to GitHub issue #32.
