Featured GitHub project · Florida housing data · Dynamic pricing
Offer-to-Exit: Pricing a Home Under Uncertainty
What is the highest acquisition offer worth making today when seller acceptance, resale value, time to sale, operating costs, and downside risk are uncertain?
Offer-to-Exit is my public GitHub project on the property-level economics of a housing market maker. It turns a loosely stated pricing problem into an explicit decision contract, a multi-year Florida transaction study, linked statistical models, a finite-horizon dynamic program, and reproducible evidence.
It is an applied case study rather than a formal research paper, but it follows the same discipline: state the economic setting, define the choice and counterfactual, explain what the data can identify, solve the decision, and separate the evidence from the claims.
The repository has two evidence layers. Official deeds from Hillsborough County, which contains Tampa, and Orange County, which contains Orlando, support repeat-sale valuation and recorded inventory-duration evidence. A separate location-neutral controlled experiment supplies the counterfactual seller and buyer price responses that public deeds do not reveal.
- Real data
- 2,657,072 Tampa-area and Orlando-area deed records
- Time design
- Tampa training before 2022, calibration in 2022 and 2023, and evaluation from 2024 through August 2026; Orlando is an external-market test
- Horizon
- 17 weekly resale decisions
- Released code
- Scientific Python, tests, typed API, and versioned evidence
A housing market maker with costly inventory.
Offer-to-Exit treats a home acquisition operator as a balance-sheet intermediary. It posts a bid to acquire a house, carries the house as inventory if the seller accepts, and then posts an ask price to resell it. The expected bid-ask spread must compensate the operator for repairs, transaction costs, financing, inventory duration, valuation error, and downside risk.
| Stage | Choice | Economic tradeoff |
|---|---|---|
| Acquisition | Offer a | A higher offer raises seller acceptance but compresses the spread conditional on purchase. |
| Initial listing | Price p0 | A higher price raises proceeds conditional on sale but lowers the probability of selling quickly. |
| Unsold inventory | Hold or mark down | Waiting preserves upside but incurs holding costs and additional market exposure. |
| End of horizon | Terminal exit | A finite terminal value prevents the model from treating indefinite delay as free. |
How much should we pay for a home, given the best way we expect to liquidate it, and once we own it, how aggressively should we price it through time?
The buyer side: a posted price and a weekly sale hazard
The model does not follow a named buyer making an individual yes-or-no decision. It represents aggregate buyer demand as a weekly sale hazard. For state st and posted list price pt, the hazard is the probability that the home sells during week t, conditional on remaining unsold when the week begins:
The operator posts pt. During the week, the home either sells at realized transaction price Pt or remains inventory. If a sale occurs in week t, total contribution profit is:
Here a is the acquisition offer, R is repair cost, K is fixed transaction cost, C(Pt) is the price-dependent selling cost, H is weekly holding cost, and w0 is the number of weeks already carried when the resale horizon begins. The term w0 + t + 1 charges every week held through the sale week.
The risk-neutral weekly pricing problem is represented by the Bellman recursion:
Current-week holding cost is already embedded in realized contribution profit through (w0 + t + 1)H. It is therefore not subtracted again in the no-sale branch. If the home remains unsold, the problem moves to week t + 1, so every later sale carries another week of cumulative holding cost. The terminal value at week 17 disciplines every earlier price, and backward induction compares the expected contribution from selling now with the continuation value of remaining unsold.
- A higher list price increases proceeds conditional on sale.
- A higher list price may reduce the weekly sale hazard.
- Failing to sell increases cumulative holding cost and leaves an aging, risky asset tomorrow.
- The remaining horizon determines how valuable waiting still is.
Why inventory duration matters
A house is a large, indivisible, illiquid unit of inventory. Getting it off the balance sheet matters because delay has an opportunity cost even if the eventual nominal sale price does not change.
- Financing and operating costs
- Capital unavailable for another acquisition
- Exposure to falling market prices
- Uncertainty about eventual proceeds
- Maintenance and operational attention
- Pressure to mark down aging inventory
A $400,000 sale in three weeks and a $400,000 sale in seventeen weeks are therefore not economically equivalent. The objective is not the highest eventual resale price. It is the best risk-adjusted contribution value after time, costs, liquidity, and uncertainty are priced.
Why acquisition must incorporate resale
Before choosing the acquisition offer, the operator solves the resale problem backward. This produces the continuation value of owning the home under the best feasible exit policy. A stylized acquisition problem is:
Profit Π includes seller rejection as the zero-profit outside outcome and, conditional on acceptance, the offer, repairs, transaction costs, weekly carrying costs, resale proceeds, and terminal recovery. The policy π*(a) is solved by backward induction for each candidate offer. The downside term is the average positive loss in the worst decile of weighted stress outcomes:
The parameter λ is an operator risk preference, not a parameter identified from the data. This is a recursive, state-contingent downside rule rather than a static ex ante commitment objective.
- A higher offer raises the probability of acquiring the home.
- A higher offer reduces the spread conditional on acquisition.
- A higher offer leaves less protection against valuation and cost error.
- A higher offer makes the resale policy more sensitive to weak demand and long duration.
This is why acquisition pricing and resale pricing cannot be separate exercises. The maximum offer worth making depends on the liquidity, costs, and downside risk of the optimal exit path.
What this is really about
Offer-to-Exit is a single-property dynamic inventory-pricing model for a balance-sheet intermediary. Its closest economic relatives are dealer and market-making models, dynamic pricing and revenue management, inventory theory, search and bilateral bargaining, optimal stopping, duration modeling, and stochastic dynamic programming.
The acquisition offer is the bid. The resale price is the ask. The current project captures that logic for one home. It does not yet model portfolio capital allocation, correlated inventory risk, geographic concentration, or balance-sheet capacity.
The output is an action, not merely a prediction. The project recommends the preferred supported offer when risk-adjusted value is positive, requests human review when an input or support problem may be resolvable, or declines to price when valid inputs still produce no economically acceptable offer.
A multi-year Florida study with a time test and a geographic test.
The pipeline downloads 2,657,072 official deed rows across the two county archives. After the date, price, property-type, improvement, and deed-qualification screens, the valuation source contains 348,754 Hillsborough County transactions from January 2010 through August 2026 and 72,474 Orange County transactions from January 2022 through August 2026. Names are used transiently to identify recorded iBuyer ownership spells, parcel identifiers are hashed, and only aggregate evidence is published.
The valuation sample is restricted to improved single-family repeat sales with a prior eligible sale no more than 4.5 years earlier and in a strictly earlier calendar quarter. Here, eligible means the earlier transfer also passes the study's date, price, property-type, improvement, and qualification screens. That time rule keeps the prior-quarter normalization fully observable before the target quarter begins. Hillsborough observations must carry the county's qualified-sale designation. Orange uses the county qualification field where it is reported and uses a warranty-deed indicator as a proxy only when that field is missing. The model is therefore a focused repeat-sale exercise for high-turnover homes, not a claim to be a production appraisal model for every property.
A baseline that uses the same prior-sale information
A naive county median would give the fitted model an artificial advantage. The comparison instead rolls each home's own prior eligible sale price forward by the change in its county-quarter median, using only information available before the current sale quarter:
The Tampa model is trained on sales before 2022, calibrated on 2022 and 2023 sales, and tested on sales from 2024 through August 2026. Parcels are separated across those partitions. The fitted Tampa model is then carried to Orange County sales from 2024 through August 2026 without refitting or recalibrating it there. That second exercise is an external-market evaluation, not a preregistered untouched holdout.
| Evaluation | Transactions | Model MAE | Rolled prior-sale MAE | MAE change | 90% interval coverage |
|---|---|---|---|---|---|
| Tampa time test | 10,514 | $76,503 | $78,268 | 2.3% lower | 85.3% |
| Orlando external-market test | 6,036 | $129,039 | $147,902 | 12.8% lower | 80.5% |
The fitted model lowers mean absolute error in both tests, but it does not dominate the rolled prior-sale benchmark under every loss function. In Tampa, the benchmark has lower root mean squared error and lower median absolute error. The nominal 90% intervals also undercover in both markets. Those results are evidence about where the model helps and where it still fails, not a deployment claim.
A 30-day minimum-gap sensitivity leaves 10,506 Tampa and 6,021 Orlando test transactions. The model continues to beat the rolled prior-sale benchmark on mean absolute error in both markets, so the comparison is not driven by a small set of very rapid cross-quarter resales.
Recorded iBuyer inventory duration
A separate linkage follows a parcel from a recorded purchase by a named iBuyer to the first later sale recorded under the same operator. Both deeds must have at least $10,000 in recorded consideration. Open spells are right censored at each county's observation end. Spells that reach the three-year linkage horizon remain censored because their non-exit is observed throughout the 52-week model horizon. The linkage identifies 5,060 acquisition spells, including 3,395 for Opendoor. The common Tampa-Orlando comparison begins in 2022 so that both counties are observed over the same period.
| Opendoor market, 2022+ | Acquisitions | Recorded exits | KM median duration | Exit by day 120 |
|---|---|---|---|---|
| Tampa | 1,190 | 1,132 | 135 days | 43.9% |
| Orlando | 935 | 881 | 120 days | 50.1% |
The duration model is fit with the ordinary person-period likelihood on Tampa acquisitions before 2022, with every training spell administratively censored at the test boundary. It has out-of-time AUC of 0.630 in Tampa and external-market AUC of 0.649 in Orlando, but Brier skill of -0.373 and -0.253, respectively. It provides modest ranking information and poor probability calibration. The operational conclusion is to abstain or recalibrate before using those hazards in a live pricing policy.
Deeds reveal transactions, but not the prices that were never offered.
The Florida records can support repeat-sale prediction and descriptive inventory-duration analysis. They cannot identify a seller's response to an acquisition offer that was never made or a buyer's response to a list price that was never posted. Observed offers and markdowns are endogenous because operators choose them using information about the home, seller, and latent demand.
The repository therefore keeps the observational and experimental evidence separate. A location-neutral controlled experiment varies offer-to-value ratios and list-price premia, generates seller and buyer responses from known functions, and then asks whether deliberately simpler fitted models recover those responses. The experiment contains 720 training homes and 480 homes from an independent seed and a shifted evaluation environment.
The Florida study establishes the data pipeline, repeat-sale benchmark, temporal performance, geographic transport, and recorded iBuyer durations. The controlled experiment establishes model recovery and decision behavior when the counterfactual price response is known. Neither layer identifies real-market seller or buyer elasticities, and neither supports a claim of realized profit lift.
Each model must recover its object before it enters the optimizer.
- 01
Contemporaneous value anchor
A transparent predictive model estimates a contemporaneous generated home-value anchor, while split-conformal calibration supplies a marginal 90% interval. The point estimate and endpoints become explicit 17-week proceeds stress values. This is a decision heuristic, not a learned terminal resale forecast.
- 02
Seller acceptance
A regularized binary-choice model estimates acceptance under each candidate acquisition offer. The key experimental margin is the offer-to-value ratio, with observed heterogeneity from the home, seller timing, and market state.
- 03
Weekly buyer demand
A discrete-time logistic hazard estimates the probability of sale in week t, conditional on remaining unsold. The model retains right-censored spells and uses the experimentally varied list-price premium to identify the price response.
- 04
Continuation value
Backward induction chooses among holding price or cutting it by 1%, 2.5%, or 5% over a 17-week horizon. The fitted value, acceptance, and hazard models all enter the acquisition and resale decision.
The controlled evaluation asks whether each statistical link recovers its intended object before the links are composed into a decision. These results come from the independently seeded, covariate-shifted environment and are not estimates from Florida housing transactions.
| Component | Comparison | Controlled result | Interpretation |
|---|---|---|---|
| Resale valuation | Pooled-median MAE: $123,567 | MAE: $43,536 | 64.8% lower error in the shifted evaluation environment |
| 90% value interval | No interval baseline | 90.0% coverage | Marginal coverage is calibrated inside the experiment |
| Seller acceptance | Pooled-rate Brier: 0.2440 | Brier: 0.1837 | More accurate experimental acceptance probabilities |
| Weekly sale hazard | Period-only log loss: 0.5316 | Log loss: 0.4353 | The price-aware censored hazard improves on the baseline |
| Offer response | Truth: +1.600 | Fitted: +1.667 | Known log-odds response recovered with 0.067 absolute error |
| Resale-price response | Truth: -1.200 | Fitted: -1.288 | Known log-odds response recovered with 0.088 absolute error |
The conformal lower bound, point estimate, and upper bound enter the optimizer as heuristic weighted stress states. Their weights are not estimated probabilities. If a home remains unsold, the implementation remixes those stress states in the next week rather than carrying a persistent latent market regime or updating beliefs. These are transparent modeling choices, not features inferred from the data.
Each generated listing holds one randomized price premium fixed throughout its spell. Applying the fitted common price response to an adaptive markdown path assumes no price-history or carryover effects. The experiment validates a contemporaneous response inside its known data-generating process, not the full behavioral response to a changing sequence of prices.
Fitted-model cases test pricing and abstention, not real-market lift.
The three cases below are selected from the 480-home evaluation sample using observed covariates and fitted valuation outputs. Simulator truth and realized outcomes are not used to choose their actions. The fitted value, acceptance, and sale-hazard models feed the optimizer exactly as they do for every other evaluated home.
| Case | Action | Reference value | Offer | Expected profit per lead | Worst-decile positive loss | First resale action |
|---|---|---|---|---|---|---|
| Healthy demand | Recommend offer | $478,077 | $377,474 | $10,902 | $12,388 | Hold |
| High carrying cost | Abstain | $528,124 | $456,224 diagnostic only | -$925 | $15,295 | Cut 5% if acquired |
| Sparse support | Abstain | $842,883 | $622,610 diagnostic only | -$42 | $2,624 | Hold if acquired |
The two abstention cases show the value of a zero-profit outside option: even the best supported offer is rejected when costs, conversion, and downside risk produce non-positive risk-adjusted value. The decision rule subtracts a configurable penalty on the average positive loss in the worst decile of weighted stress outcomes. The displayed offers and profit numbers are controlled-experiment diagnostics, not forecasts of returns in Tampa or Orlando.
The claim is disciplined applied science, not simulated market success.
What is demonstrated
- Building a privacy-conscious, multi-year transaction panel from two differently structured county data systems.
- Defining a fair prior-sale benchmark, separating development from evaluation through time, and carrying one fitted model to a second market.
- Reporting useful results, non-dominance, interval undercoverage, and poor hazard calibration with equal prominence.
- Separating observational duration evidence from an experiment that supplies the missing behavioral counterfactuals.
- Connecting fitted value, acceptance, and hazard models to a finite-horizon pricing policy with an explicit downside rule and outside option.
- Shipping reproducible scientific Python with automated tests, a typed API, model and data cards, versioned artifacts, and an inspectable decision explorer.
What is not demonstrated
- Real seller-acceptance or buyer-demand elasticities.
- Profit lift for a real operator or superiority to a deployed policy.
- A universal appraisal model or national geographic transportability.
- Causal effects of operator identity on holding duration.
- Persistent latent market regimes, Bayesian belief updating, portfolio capital allocation, renovation operations, or production readiness.
- A dynamically identified response to repeated markdowns or other price-history effects.
The code, economic argument, data provenance, executed results, limitations, and decision explorer are public and versioned.
Inspect Offer-to-Exit on GitHub