Köpa_lägenhet.R
October 8, 2018•504 words
Skulden på den gamla lägenheten är idag 2.1 miljoner. Om vi vet att lånelöftet ligger på 3.8 miljoner, och tror att priset på den gamla lägenheten kommer att ligga mellan 2.5 och 2.9 miljoner, då får vi följande samband mellan försäljningspriset på den gamla lägenheten (övre raden) och hur mycket den nya lägenheten maximalt kan kosta (under raden).
Sälj: | 2.5 | 2.55 | 2.6 | 2.65 | 2.7 | 2.75 | 2.8 | 2.85 | 2.9 |
---|---|---|---|---|---|---|---|---|---|
Köp: | 2.33 | 2.67 | 3 | 3.33 | 3.67 | 4.0 | 4.33 | 4.5 | 4.55 |
Om vi däremot är osäkra på hur stort lånelöftet är, så kan vi låta det variera mellan 2.6 till 3.8 miljoner. Priset på gamla lägenheten kan vi återigen låta variera mellan 2.5 till 2.9 miljoner. Skulden är fortfarande 2.1 miljoner. Genom att variera såväl lånelöfte som säljpris får vi tabellen nedan som anger vad nya lägenhetens pris kan vara, givet ett visst lånelöfte (rader) och säljpriset (kolumner).
Lån \ Sälj | 2.5 | 2.55 | 2.6 | 2.65 | 2.7 | 2.75 | 2.8 | 2.85 | 2.9 |
---|---|---|---|---|---|---|---|---|---|
2.6 | 2.33 | 2.67 | 3 | 3.10 | 3.15 | 3.2 | 3.25 | 3.3 | 3.35 |
2.8 | 2.33 | 2.67 | 3 | 3.30 | 3.35 | 3.4 | 3.45 | 3.5 | 3.55 |
3 | 2.33 | 2.67 | 3 | 3.33 | 3.55 | 3.6 | 3.65 | 3.7 | 3.75 |
3.2 | 2.33 | 2.67 | 3 | 3.33 | 3.67 | 3.8 | 3.85 | 3.9 | 3.95 |
3.4 | 2.33 | 2.67 | 3 | 3.33 | 3.67 | 4.0 | 4.05 | 4.1 | 4.15 |
3.6 | 2.33 | 2.67 | 3 | 3.33 | 3.67 | 4.0 | 4.25 | 4.3 | 4.35 |
3.8 | 2.33 | 2.67 | 3 | 3.33 | 3.67 | 4.0 | 4.33 | 4.5 | 4.55 |
Hur priset för nya lägenheten (output) beror på lånelöfte och pris på gamla lägenheten (input) visualiseras i 3D plot nedan.
Koden (skriven i R) för att generera plot och tabell finns nedan.
## library
library(data.table)
library(knitr)
library(lattice)
## define function
# output: buy price you can affor.
# input: sell price and the bank's debt promise.
calcer <- function(sellprice, debt_promise, cash_savings=0){
debt_today = 2.1
brokerfee = 50/1000
cash_apartment = sellprice - debt_today - brokerfee
# total cash: cash from apartment sale + cash in savings account
cash_tot = cash_apartment + cash_savings
kvot = debt_promise / (debt_promise + cash_tot)
scenario = ifelse(kvot >= 0.85,
1,
2)
buyprice = ifelse(scenario == 1,
cash_tot/0.15,
cash_tot + debt_promise)
return(buyprice)
}
# exempel
calcer(2.9, 3)
# set params
debt_list <- seq(2.6, 3.8, 0.2)
sellprice_list <- seq(2.5, 2.9, 50/1000)
# example
calcer(sellprice_list, 3)
calcer(2.7, debt_list)
## tabulate a few alternative prices and debt levels
# setup matrix
n_debt <- length(debt_list)
n_salesprice <- length(sellprice_list)
pricematrix <- matrix(NA, nrow=n_debt, ncol=n_salesprice)
# save values to matrix
for (row in 1:n_debt){
for (col in 1:n_salesprice){
sp <- sellprice_list[col]
d <- debt_list[row]
pricematrix[row, col] <- calcer(sp, d)
}
}
# edit matrix
rownames(pricematrix) <- debt_list
colnames(pricematrix) <- sellprice_list
pricematrix <- round(pricematrix, 2)
# show matrix
pricematrix
kable(pricematrix)
## 3d plot
# convert matrix to dataframe format
df <- CJ(debt_list, sellprice_list)
df <- as.data.frame(df)
df$debt <- df$V1
df$sellprice <- df$V2
df <- df[, c("debt", "sellprice")]
df$buyprice <- calcer(df$sellprice, df$debt)
# show plot
wireframe(buyprice ~ sellprice * debt, data=df)