Selling Printers

The model uses estimates of elasticities of the market for price against time to calculate probability of sale to various clients whose attributes are known - probabilities are summed over all clients to estimate discount required to shift stock

PushPrinter@ Begin

MSACCESS1@ Begin

Customer@ Begin

PrinterModel$ = TABLE2(@.PrinterColor%,SoldColor)
PrinterModel$ = TABLE2(@.PrinterConsumableCost%,SoldConsumableCost)
PrinterModel$ = TABLE2(@.Printerpaper%,SoldPaperSize)
PrinterModel$ = TABLE2(@.PrinterPrice%,SoldPrice)
PrinterModel$ = TABLE2(@.PrinterResolution%,SoldResolution)
SaleModel$ = TABLE2(@.PrinterColor%,SaleColor)
SaleModel$ = TABLE2(@.PrinterConsumableCost%,SaleConsumableCost)
SaleModel$ = TABLE2(@.Printerpaper%,SalePaperSize)
SaleModel$ = TABLE2(@.PrinterPrice%,SalePrice)
SaleModel$ = TABLE2(@.PrinterResolution%,SaleResolution)
PrinterOK@ EQV SaleColor >= SoldColor AND SaleResolution >= SoldResolution AND SalePaperSize >=SoldPaperSize AND SaleQuantity > 0.9 * LastSaleQuantity AND SaleReducedPrice <= 1.10 * SoldPrice

SaleReducedPrice = Salepercent * Saleprice/100
SoldCostOfOwnership = LastSaleQuantity * YearlyServiceFeesPerUnit + YearlyConsumablesConsumption

SaleCostOfOwnership = 0 /* 12 months warranty */ + YearlyConsumablesConsumption * SaleConsumableCost / SoldConsumableCost
CostBenefit = MAX(0,SoldCostOfOwnership - SaleCostOfOwnership)

! For individual prospects, we make up a list of benefits Cost, better resolution, bigger paper, cheaper consumables

CostProbability = round(20 * (CostBenefit / LastSaleQuantity)/ SaleReducedPrice)
PrinterOK@ AND WorthDoing@ EQV Acceptable@
WrittenOut@ EQV JOB(Acceptable@,'JOBFILE Writeprospect.txt')

WorthDoing@ EQV ProspectProbability > ProbabilityCutoff ! Something like 1%

ProspectProbability = MAX(NewAgeProbability, CostProbability)
if ProspectProbability = NewAgeprobability then Reason$ = 'Age' else Reason$ = 'CostBenefit'

! We have a HISTOGRAM of ProspectProbability against LastSaleQuantity and another of ProspectProbability * LastSaleQuantity against Reason$

HowLikely = ROUND(ProspectProbability * LastSaleQuantity / 100)

End !Customer@

End !MSACCESS1@

DirectQuery@ EQV ElasticSales = HIGHEST(ASK(MarketPercent))/10 * ASK(SaleWeeks)/52 *ASK( TotalSalesPerAnnum) ! Has to be switched on

ExistingCustomers@ EQV ASK(AgeProbability) = ROUND(HIGHEST(RepeatBusiness * MarketPercent/10 * ActualSaleWeeks/52)) AND SaleWeeks = 26

RepeatBusiness = 60 ! Should come from relation, varies with type of customer

! We multiply RepeatBusiness by MarketPercent/10 (10 shouldn't be a constant, but later) by SaleWeeks/52 to get probability of sale
! The probability we were going to get the sale in this period has increased by the change in market percentage based on price reduction
! We are telling them about it directly, so we don't have to wait for message to percolate along advertising channel, so will use 6 month figure

! We only have one relation, so elasticity query is unavailable while using it for directly contacted prospects

! The age when people replace their computers and printers also changes with organisation type, but we will say + 3 years for now - for a bank, it might be 8

Seller@ Begin

ASK(DealValue) := ASK(DealPrice) * ASK(DealExtra)
ASK(DealPrice) := ASK(HowLikely) * ASK(SalePercent) * ASK(SalePrice) / 100
ASK(DealExtra) := ASK(ConsumablesFactor) * ASK(ServiceFactor)
ASK(ConsumablesFactor) := ( extract(ASK(ConsumablesConsumptionLevel), 'MAXVALUE',1) - 5 ) / 20 + 1
ASK(ServiceFactor) := ( extract( ASK(ServiceDemand), 'MAXVALUE',1) - 1 ) / 20 + 1
ASK(PriceFactor) := extract( ASK(PriceSensitivity), 'MAXVALUE',1)
ASK(PreferredPayment$) := extract(ASK(PaymentStructure$), 'MAXVALUE',1)
ASK(SaleChancesImprovement) := ( ASK(PriceFactor) * ( 100 - HIGHEST(ASK(SalePercent) )) / 300 + 1 ) * ASK(ProspectProbability)

End !Seller@
End !PushPrinter@