Tutorials › CAS Exam 8 - Advanced Ratemaking › Building Quote-Level Price and Demand Data

CAS Exam 8 · Elasticity and Demand Models · Tutorial 817 of 989

Building Quote-Level Price and Demand Data

Build defensible quote-level modeling records by aligning each offered price and coverage with the right decision episode, outcome window, and data-quality checks.

Advanced 10 min read

What You'll Learn

  • Define a quote-offer episode as the modeling record when a customer can receive multiple offers.
  • Distinguish offered premium from billed installment, bound premium, and renewal premium.
  • Align purchase or renewal outcomes to a stated follow-up window.
  • Identify duplicates, incomplete follow-up, missing outcomes, and invalid joins.
  • Preserve coverage and customer context needed to interpret each offer.

Why Quote-Level Data Construction Matters

A demand record is not simply a premium joined to a purchase flag. It must identify which offer was made, to whom, when, for what coverage, and whether the customer acted within a defined period. If the price comes from one quote revision while the outcome comes from another, the record describes no actual offer. If the data include only issued policies, offers that were declined have disappeared from the denominator.

This tutorial focuses on building and checking the records that will later be used to study demand. It does not estimate a price-response relationship. The construction choices made here determine what the later analysis can reasonably describe.

Definition: A quote-offer episode is one specific offer of insurance to a customer at a particular time, with a defined price and coverage configuration. A modeling record should represent that episode and its associated outcome. If one quote presents several distinct coverage options, each option may require its own offer record, linked to the same quote episode.

Choose the Observation Unit and Define the Outcome

The observation unit must match the decision being studied. For a new-business purchase question, a useful unit is commonly a quote-offer episode: the customer may accept or decline that offered contract. A customer is not necessarily the right unit, because one customer may receive several offers or quote revisions. A policy is also not the right unit for a purchase analysis if it exists only after acceptance.

For a renewal analysis, define a renewal-offer episode separately from the original new-business quote. The renewal price, offered terms, and decision period should correspond to that renewal. Do not treat a renewal offer as an independent new customer merely because it has a new transaction identifier.

Before extracting data, specify what counts as the outcome. For example, “purchased” might mean that coverage was bound within 30 days of the offer date, while “renewed” might mean that the offered renewal was accepted by its effective date. The chosen rule should be applied consistently and should distinguish a confirmed decline from an outcome that is not yet observable.

Key distinction: A confirmed nonpurchase is an observed outcome. A quote with no decision information because the data feed is incomplete, the follow-up window has not ended, or the record could not be linked is unknown, not automatically a nonpurchase.

Define the Price and Coverage Being Offered

The primary price field should represent the price the customer actually faced for the stated offer. Commonly this is the quoted premium for the full policy term, before any later changes that were not part of that offer. Store the quote date, policy term, currency, payment plan, and any fees or surcharges needed to interpret the amount. Keep a separately defined amount if the business question concerns a different price measure.

Do not substitute a billed installment, a bound premium, or a renewal premium for the offered quote price. These amounts can differ for valid reasons: payment frequency, fees, endorsements, updated information, or a different coverage election. If an installment amount is all that is available, do not silently label it an annual premium. Retain its frequency and the information needed to interpret it, and mark the full-term quoted amount unavailable if it cannot be recovered reliably.

Price also needs coverage context. Preserve the offered limits, deductible, insured property or exposure, and other material coverage choices that define the contract. A lower premium for a lower limit is not the same offer at a lower price. Keeping coverage characteristics with the record allows analysts to identify materially different offers rather than treating their prices as directly interchangeable.

Worked Example: Reconstructing the Offered Full-Term Premium

A hypothetical insurer offers a six-month policy. Its quote shows six monthly installments of $138 and a one-time payment-plan fee of $25. The contract also displays the full-term quoted premium, excluding that fee, as $828. Determine which amounts belong in the price fields for a study of the offered policy price.

Step 1: Identify the quoted premium. The full-term quoted premium is $828. The six installments also sum to \(6 \times \$138 = \$828\), which checks the premium amount before the fee.

Step 2: Identify the total scheduled payment. The six installments total $828, and the separate fee is $25. Thus scheduled payments including the fee are \(\$828+\$25=\$853\).

Step 3: Store the measures with clear labels. Record $828 as the six-month quoted premium and $25 as the one-time fee. If total scheduled payment is relevant to the study, record $853 in a distinct field, with the fee inclusion documented. Do not label $138 as an annual premium: it is one monthly installment for a six-month contract.

Check. Six installments of $138 reproduce the quoted premium, and adding the fee gives the stated scheduled total of $853. The common mistake avoided is mixing a payment amount or fee-inclusive total with the quoted premium field.

Set the Time Window and Preserve the Offer Timeline

A usable record needs dates that establish the sequence: when the offer was created or presented, when it was revised, the proposed effective date, and when a decision or bind occurred. The outcome window should start from a defined event, usually the offer date or the presentation date, and end at a stated deadline. A decision outside that window should not be counted as an in-window purchase unless the outcome definition explicitly allows it.

If the observation period ends before the full outcome window has elapsed, some records are right-censored: their final outcome is not yet known under the chosen rule. Keep these records distinguishable from completed nonpurchases. A data extract should also use consistent time zones and date conventions; a bind just after midnight can otherwise be assigned to the wrong day.

Outcome-window rule: For an offer dated \(t_0\) with a 30-day purchase window, code a purchase only if the linked purchase or bind date is within the specified 30 days. Code a confirmed decline as nonpurchase if that is the outcome definition. If neither decision nor complete follow-up is available, preserve the outcome as unknown or censored rather than assigning zero.

Build and Validate the Record

A practical data specification makes the record grain explicit before joining files. A robust key often combines a quote identifier, offer or option identifier, and revision identifier. Customer and policy identifiers are useful for linking and auditing, but they do not by themselves establish that two rows are the same offer. Two different coverage options from one quote can be legitimate separate records; repeated copies of the same option and revision are not.

1
Define the episode.
Specify the customer decision, offer type, record key, quote date, and whether each coverage option is a separate offer.
2
Select the price and terms.
Join the quoted premium and coverage fields to the exact offer revision presented to the customer, not merely the latest values in a policy system.
3
Apply the outcome rule.
Link a bind, decline, or renewal decision to the same episode and apply the predefined follow-up window.
4
Audit the result.
Check key uniqueness, unmatched joins, duplicate rows, missing fields, date ordering, and whether each outcome has adequate follow-up.

Join cardinality matters. If one quote row matches three transaction rows, a join can turn one offer into three records. That can inflate counts or give the episode extra weight in a later analysis. Before accepting a joined file, compare row counts before and after each join, inspect keys with multiple matches, and decide whether the multiplicity is valid or an error.

Worked Example: Resolving Duplicate Revisions Without Losing a Valid Offer

A hypothetical data extract contains these rows for one customer: quote Q71, option A, revision 1 at 09:00, premium $620; the same key and revision at 09:00 again, premium $620; quote Q71, option A, revision 2 at 10:15, premium $650; and quote Q71, option B, revision 1 at 10:20, premium $710. The customer binds option A at 11:00. The insurer’s audit log confirms that revision 2 of option A replaced revision 1 before the customer made the decision, and option B remained a distinct offered choice. Construct the final records for the offers that were available at decision time.

Step 1: Identify the exact duplicate. The two rows for option A, revision 1 have the same episode key, revision, time, and premium. They are repeated copies of one record, so retain one copy and flag the duplicate in the data-quality log.

Step 2: Apply the revision history. Revision 2 of option A replaced revision 1 before the decision. For the offer represented as option A at decision time, use revision 2 and its $650 premium; do not treat the replaced $620 revision as another simultaneous offer.

Step 3: Retain the distinct option. Option B has a different option identifier and was still available at 10:20. It is a distinct offer, so retain it as a separate quote-offer record with its $710 premium. Do not deduplicate it merely because it shares quote Q71 and the customer.

Step 4: Link the outcome carefully. The bind at 11:00 is for option A. Record a purchase outcome for option A, revision 2. Option B was available but not bound in this episode; classify it according to the prespecified offer-level outcome rule, not by copying the option A bind onto it.

Check. The final data retain two distinct offers, A at $650 and B at $710, and remove one repeated copy. The common mistake avoided is either keeping the superseded revision as a live offer or collapsing distinct coverage options into one customer row.

Missingness, Duplication, and Interpretation

Missing records are not all equivalent. A missing quoted premium may indicate a failed quote-system join; a missing outcome may indicate an unfinished window; a missing coverage limit may make the offer difficult to compare; and a missing customer characteristic may reflect a separate data collection issue. Preserve missingness reasons where possible instead of replacing all missing values with zero or a generic “no.”

Likewise, investigate whether missingness is associated with the outcome. For example, if declined quotes are less likely than bound quotes to be retained in a downstream policy system, a file built from that system will omit relevant nonpurchase episodes. Such a file cannot be repaired simply by assigning nonpurchases to observed policies. The source system and inclusion rules must support the intended population of offers.

Worked Example: Separating Nonpurchase From Incomplete Follow-Up

A hypothetical insurer uses a 30-day window after each quote date to define purchase. Three offers are recorded: offer R on May 1 has a confirmed decline on May 4; offer S on May 10 has no linked decision and the extract ends on May 25; offer T on May 1 has a bind on May 28. Determine the outcome status for each offer as of the extract date.

Step 1: Calculate the end of each window. Using elapsed calendar days after the offer date, R and T have windows ending May 31. S has a window ending June 9.

Step 2: Classify R. R has an explicit decline on May 4, so it is a confirmed nonpurchase under the stated outcome definition. This is not missing merely because no policy was issued.

Step 3: Classify S. The extract ends May 25, before S’s June 9 window end, and no decision is linked. S is not a confirmed nonpurchase; it has incomplete follow-up and should be marked unknown or censored.

Step 4: Classify T. The bind date, May 28, is within the window ending May 31. T is a purchase.

Check. The three statuses are R: confirmed nonpurchase; S: incomplete follow-up; T: purchase. The common mistake avoided is treating every offer without a bind in the extract as a nonpurchase.

These records support interpretation only for the population and offers represented by the data. For example, filtering to quotes with complete premium and coverage information may be necessary, but it changes which episodes remain. Report those exclusions and their counts. Also distinguish a descriptive association among observed offers from a causal price effect: the construction of a clean record does not by itself remove differences between customers who received different prices.

Common Data-Construction Traps

  • Using a policy file as the quote universe. A policy file generally centers on bound business and may omit declined offers.
  • Using the customer as the only key. One customer may have multiple offers, revisions, or renewal episodes.
  • Overwriting the offered price. A later bound premium or transaction amount is not automatically the premium the customer saw.
  • Deduplicating too broadly. Remove repeated copies of the same offer revision, not distinct coverage options that happen to share a customer or quote identifier.
  • Calling unobserved outcomes declines. Require a complete outcome window or a confirmed decision before coding a nonpurchase.
Key takeaway: A defensible quote-level record ties one identifiable offer to its contemporaneous price and coverage, preserves the relevant timeline, and assigns an outcome only under a stated decision rule. Key uniqueness, join cardinality, and follow-up completeness should be checked before modeling.

Check Your Understanding

For each problem, identify the appropriate record construction or outcome classification.

  1. A quote offers a 12-month policy for $1,080, payable in 12 equal installments, with no fees. What full-term quoted premium should be stored, and what is each installment? (Answer: $1,080 full-term premium; $90 per monthly installment.)
  2. One customer receives two options under the same quote: option A with a $500 deductible and option B with a $1,000 deductible. Should these be collapsed into one record if the modeling unit is the offered coverage option? (Answer: No; retain two offer records linked to the same quote episode.)
  3. A quote dated August 3 has a 14-day purchase window. A bind is recorded August 18. Under elapsed calendar days after August 3, is it within the window? (Answer: No; August 18 is 15 days after August 3, so it is outside the 14-day window.)
  4. A joined file has 240 quote-option rows before a transaction join and 276 afterward. What is the immediate diagnostic, and why does it matter? (Answer: Inspect quote-option keys with multiple transaction matches; join multiplication may have duplicated offer records and distorted counts or weights.)
  5. A renewal offer is $1,260 for a six-month term, and the policyholder renews within the defined window. Which price and outcome should be attached to that renewal episode? (Answer: The $1,260 offered six-month renewal premium and a purchase/renewal outcome of 1 under the defined window.)
Clinical Biostats