Foundations  ·  The Valuation Engineer

Implicit Price — Prolog companion

Machine-readable Prolog representation of this entry's facts, rules, and worked example.

Download entry.pl
%% entry.pl
%%
%% Prolog companion to Foundations Vol. 1, Issue 1, Article 004
%%   Title:    Implicit Price
%%   Author:   Bert Craytor
%%   Concept:  implicit_price
%%   Version:  0.1.0-draft

% =====================================================================
% DICTIONARY IMPORT
% =====================================================================

:- use_module('../../../../tools/dictionary/dictionary').
:- dictionary_release('dictionary-2026.1').

% --- From the dictionary (loaded via :- use_module above) -----------
% term(implicit_price, "Implicit Price", economic_theory,
%      "The implicit price of a characteristic is the partial
%       derivative of the hedonic price function with respect to that
%       characteristic, evaluated at a point in the characteristics
%       space; it represents the marginal market price of an
%       incremental unit of the characteristic, holding all other
%       characteristics fixed.", published, 'dictionary-2026.1').
%
% term(hedonic_price_function, ...).
% term(paired_sales_analysis, ...).
% term(adjustment, ...).
%
% formalized_by(implicit_price, rosen_1974).
% depends_on(implicit_price, hedonic_price_function).
% ---------------------------------------------------------------------

:- use_terms([ implicit_price, hedonic_price_function, characteristics_space,
               heterogeneous_good, hedonic_regression,
               sales_comparison_approach, paired_sales_analysis, adjustment,
               comp_selection ]).
:- use_relations([related/2, depends_on/2, formalized_by/2]).

% =====================================================================
% ARTICLE SUBJECT
% =====================================================================

article_concept(implicit_price).
article_issue(volume(1), number(1), year(2026)).
article_id('foundations.2026.004').

% =====================================================================
% LOCAL VOCABULARY
% =====================================================================

local_term(partial_derivative).
local_term(marginal).
local_term(total).
local_term(locality).
local_term(conditionality).
local_term(market_dependence).

% =====================================================================
% IMPLICIT PRICE AS PARTIAL DERIVATIVE
% =====================================================================
%
% π_i(z) = ∂p(z)/∂z_i

implicit_price_definition(
    "Implicit price of characteristic i at point z = partial derivative of p with respect to z_i, evaluated at z.").

unit_of_implicit_price(continuous, "dollars per unit of the characteristic").
unit_of_implicit_price(binary,     "the full premium between the two states").

% =====================================================================
% THREE PROPERTIES OF IMPLICIT PRICES (per the article)
% =====================================================================

property_of_implicit_prices(local,
    "The implicit price of GLA at 1,650 sf is not necessarily the same as at 2,500 sf. p is generally nonlinear; partial derivatives vary with location.").
property_of_implicit_prices(conditional,
    "Implicit price depends on where the OTHER characteristics are held fixed. View premium on a beachfront submarket differs from inland.").
property_of_implicit_prices(market_dependent,
    "Implicit prices are equilibrium prices reflecting the current buyer pool. Market shifts change implicit prices even when characteristics do not.").

% =====================================================================
% IMPLICIT-PRICE / ADJUSTMENT EQUIVALENCE
% =====================================================================
%
% Every adjustment in a sales-comparison grid IS the application of an
% implicit price to a characteristic difference.

adjustment_as_implicit_price_application(
    "Adjustment magnitude = (implicit price of attribute at relevant point) * (characteristic difference between comp and subject).").

% =====================================================================
% LINEAR-FORM IMPLICIT PRICES (from entry 003's adopted specification)
% =====================================================================
%
% Under the additive linear specification, implicit prices ARE the
% regression coefficients. The article reproduces them:

:- consult('../../kb/pacifica_comps').

% Implicit price per characteristic, as inherited from the additive
% form of p adopted in entry 003.
implicit_price_of(gla_sqft,  575.00,   "per square foot").
implicit_price_of(lot_sqft,   22.70,   "per square foot").
implicit_price_of(view,    86179.03,   "per yes/no").
implicit_price_of(cond,    49824.33,   "per step on the ordinal scale").

% =====================================================================
% PAIRED-SALES DECOMPOSITION: COMP A vs COMP B
% =====================================================================
%
% Returns to the article-001 paired comparison and decomposes it using
% implicit prices.
%
% Comp A and Comp B share GLA, bedrooms, baths, condition.
% They differ in: view (+1) and lot_sqft (+1800).
% Predicted differential = 86179 + 40860 = 127039.
% Observed differential  = 145000.
% Unexplained            = 17961  (~$18,000).

paired_sales_decomposition(comp_a, comp_b,
    [ contribution(view,     86179),
      contribution(lot_sqft,  40860) ],
    127039,
    145000,
    17961).

% Derived from the data + coefficients (for the linter to type-check
% against the dataset rather than the hand-computed values).
contribution_for_pair(A, B, Attr, Contribution) :-
    coord(A, Attr, VA),
    coord(B, Attr, VB),
    Diff is VA - VB,
    Diff =\= 0,
    implicit_price_of(Attr, Pi, _),
    Contribution is Diff * Pi.

% Tiny coord helper for symbolic view/cond values.
coord(P, A, N) :-
    attribute_value(P, A, V),
    ( number(V) -> N = V
    ; A == view, V == yes -> N = 1
    ; A == view, V == no  -> N = 0
    ; V = N
    ).

% =====================================================================
% MARGINAL vs TOTAL CONTRIBUTION
% =====================================================================
%
% The article emphasizes the distinction. The implicit price of lot is
% $22.70 per square foot (marginal); the TOTAL contribution of Comp A's
% 9,000-sf lot is 9,000 * 22.70 = $204,300.

distinction(marginal_vs_total,
    "Implicit price is MARGINAL ($22.70 per additional sqft of lot). Total contribution of a 9,000-sf lot is 9,000 * $22.70 = $204,300. Confusing them is a common source of error in everyday appraisal language.").

%! total_contribution(?Property, ?Attribute, -Total) is det.
%
% Total dollar contribution of a characteristic to a property's bundle
% price under the linear specification.

total_contribution(P, A, Total) :-
    coord(P, A, V),
    implicit_price_of(A, Pi, _),
    Total is V * Pi.

% =====================================================================
% DEFENSIBILITY QUESTIONS RAISED
% =====================================================================

defensibility_question(location_in_space,
    "An implicit price is defensible only when estimated near the subject's location in characteristics space; a view premium from inland comps applied to a beachfront subject extrapolates into unknown territory.").
defensibility_question(local_geometry,
    "If view interacts with lot size, treating them as additively separable misspecifies the function. The implicit price of view depends on lot.").
defensibility_question(epistemic_provenance,
    "Paired-sales analysis, regression coefficient, industry rule, and professional judgment all point to the same quantity but have different epistemic standing. Defensibility requires declaring the source.").

% =====================================================================
% CROSS-REFERENCES
% =====================================================================

cross_reference(heterogeneous_good).
cross_reference(characteristics_space).
cross_reference(hedonic_price_function).
cross_reference(hedonic_regression).

The source above is the canonical Prolog form of this entry. It imports the journal-wide dictionary (Issues/tools/dictionary/) and can be queried using SWI-Prolog. See the article's prose form (PDF / HTML galleys) for the human-readable exposition.