McCall Model

Pablo Winant

Job-Search Model

  • When unemployed in date, a job-seeker
    • consumes unemployment benefit \(c_t = \underline{c}\)
    • receives in every date \(t\) a job offer \(w_t\)
      • \(w_t\) is i.i.d.,
      • takes values \(w_1, w_2, w_3\) with probabilities \(p_1, p_2, p_3\)
    • if job-seeker accepts, becomes employed at rate \(w_t\) in the next period
    • else he stays unemployed
  • When employed at rate \(w\)
    • worker consumes salary \(c_t = w\)
    • with small probability \(\lambda>0\) looses his job:
      • starts next period unemployed
    • otherwise stays employed at same rate
  • Objective: \(\max E_0 \left\{ \sum \beta^t \log(c_t) \right\}\)
  1. What are the states, the controls, the reward of this problem ? Write down the Bellman equation.
#  your code here
  1. Define a named tuple for the model.
model = (;
    β=0.96,
    λ=0.05, #probabiliyt of loosing job
    w=[0.9, 1.0, 1.1], # center around 1
    p=ones(3)/3,
    cbar=0.8
)

# initial guesses for the unknown
V_U_0 = zeros(3);
V_E_0 = zeros(3);
x_0 = [false, false, false];
  1. Define a function value_update(V_U::Vector{Float64}, V_E::Vector{Float64}, x::Vector{Bool}, p::Parameters)::Tuple{Vector, Vector}, which takes in value functions tomorrow and a policy vector and return updated values for today.
function value_update(V_U, V_E, x, model)

    (;λ, β, p, w, cbar) = model # unpack the parameters
    n_V_U = V_U*0
    n_V_E = V_E*0
    n = length(model.w) # number wage rates

    EVU = sum( (p[i]*V_U[i] for i=1:n) )
    # EVU = p'*w

    # update employed values
    for i=1:n
        n_V_E[i] = log(w[i]) + β*(1-λ)*V_E[i] + β*λ*EVU
    end
    # update unemployed values
    for i=1:n
        if x[i] # if accept
            n_V_U[i] = log(cbar) + β*V_E[i]
        else # else
            n_V_U[i] = log(cbar) + β*EVU    
        end
    end

    return n_V_U, n_V_E
end


value_update(V_U_0, V_E_0, x_0, model)
([-0.2231435513142097, -0.2231435513142097, -0.2231435513142097], [-0.10536051565782628, 0.0, 0.09531017980432493])
  1. Define a function policy_eval(x::Vector{Bool}, p::Parameter)::Tuple{Vector, Vector} which takes in a policy vector and returns the value(s) of following this policies forever. You can add relevant arguments to the function.
using LinearAlgebra: norm
function policy_eval(x, model; T=5000, τ=1e-8)
    # initial guess for the values
    V_U_0 = zeros(3);
    V_E_0 = zeros(3);
    for t=1:T
        V_U, V_E = value_update(V_U_0, V_E_0, x, model)
        η = norm(  [V_U; V_E] - [V_U_0; V_E_0]  )
        if η<τ
            break
        end
        V_U_0, V_E_0 = V_U, V_E
    end
    return V_U_0, V_E_0
end
@time policy_eval([false, false, true], model)
  0.018303 seconds (30.54 k allocations: 1.456 MiB, 99.40% compilation time)
([0.41583429078597567, 0.41583429078597567, 1.165137187535469], [-0.8342230382533695, 0.3630555487673824, 1.446125773816529])
  1. Define a function bellman_step(V_E::Vector, V_U::Vector, p::Parameters)::Tuple{Vector, Vector, Vector} which returns updated values, together with improved policy rules.
function bellman_step(V_U, V_E, model)

    (;λ, β, p, w, cbar) = model # unpack the parameters
    n_V_U = V_U*0
    n_V_E = V_E*0
    
    n = length(model.w) # number wage rates
    x = zeros(Bool, n)

    EVU = sum( (p[i]*V_U[i] for i=1:n) )
    # EVU = p'*w

    # update employed values
    for i=1:n
        n_V_E[i] = log(w[i]) + β*(1-λ)*V_E[i] + β*λ*EVU
    end
    # update unemployed values
    for i=1:n
        V_accept = log(cbar) + β*V_E[i]
        V_reject = log(cbar) + β*EVU    
        x[i] = V_accept>=V_reject
        if x[i]
            n_V_U[i] = V_accept
        else
            n_V_U[i] = V_reject
        end
    end

    return n_V_U, n_V_E, x
end


bellman_step(V_U_0, V_E_0, model)
([-0.2231435513142097, -0.2231435513142097, -0.2231435513142097], [-0.10536051565782628, 0.0, 0.09531017980432493], Bool[1, 1, 1])
  1. Implement Value Function Iteration
function vfi(model; T=5000, τ=1e-8, verbose=false)
    # initial guess for the values
    V_U_0 = zeros(3);
    V_E_0 = zeros(3);
    local x # so that x is available outside the loop
    η_0 = NaN
    for t=1:T
        V_U, V_E, x = bellman_step(V_U_0, V_E_0, model)
        η = norm(  [V_U; V_E] - [V_U_0; V_E_0]  ) # successive approximation errors
        λ = η/η_0
        η_0 = η
        if verbose
        @show (t, η, λ)
        end
        if η<τ
            break
        end
        V_U_0, V_E_0 = V_U, V_E
    end
    return V_U_0, V_E_0, x
end
@time vfi(model; verbose=true)
(t, η, λ) = (1, 0.4117814980221523, NaN)
(t, η, λ) = (2, 0.1895561602019047, 0.46033190202175445)
(t, η, λ) = (3, 0.1743435805221963, 0.9197463186450665)
(t, η, λ) = (4, 0.1313743587844406, 0.7535371155676985)
(t, η, λ) = (5, 0.11739275606321094, 0.8935743409094715)
(t, η, λ) = (6, 0.1083925140301558, 0.9233322196796462)
(t, η, λ) = (7, 0.09974323800703834, 0.9202041201783441)
(t, η, λ) = (8, 0.0916289237038565, 0.9186479758897615)
(t, η, λ) = (9, 0.08418839942230116, 0.9187972096496188)
(t, η, λ) = (10, 0.07742317191816776, 0.9196418087223865)
(t, η, λ) = (11, 0.07128976550490142, 0.9207807396505399)
(t, η, λ) = (12, 0.06573496500400663, 0.922081375053578)
(t, η, λ) = (13, 0.06070622935222232, 0.9234998352630476)
(t, η, λ) = (14, 0.056627288512807315, 0.9328085291585371)
(t, η, λ) = (15, 0.05560223195275818, 0.9818981874822189)
(t, η, λ) = (16, 0.05466414931105856, 0.9831286873070734)
(t, η, λ) = (17, 0.053251412788989795, 0.9741560686505923)
(t, η, λ) = (18, 0.051501168919065976, 0.9671324425352017)
(t, η, λ) = (19, 0.04958281543652998, 0.9627512632664574)
(t, η, λ) = (20, 0.04761984238386464, 0.9604102139948445)
(t, η, λ) = (21, 0.04568784293121487, 0.9594286886320228)
(t, η, λ) = (22, 0.043827624134407425, 0.9592841623184512)
(t, η, λ) = (23, 0.04205775954829764, 0.9596176014314147)
(t, η, λ) = (24, 0.040383651143671845, 0.9601950169812706)
(t, η, λ) = (25, 0.03880342246786217, 0.9608695937326782)
(t, η, λ) = (26, 0.03731153882495751, 0.961552781996478)
(t, η, λ) = (27, 0.03590093817743, 0.96219398363211)
(t, η, λ) = (28, 0.03456423137596557, 0.962766800275298)
(t, η, λ) = (29, 0.03329433871573428, 0.9632599190064929)
(t, η, λ) = (30, 0.03208479405628866, 0.9636711613414923)
(t, η, λ) = (31, 0.03092985852031993, 0.9640036481473889)
(t, η, λ) = (32, 0.02982452936067015, 0.9642633619250597)
(t, η, λ) = (33, 0.028764494695346327, 0.9644576230355643)
(t, η, λ) = (34, 0.027746063559729788, 0.9645941586527745)
(t, η, λ) = (35, 0.02676608793433054, 0.964680552854295)
(t, η, λ) = (36, 0.02582188579427865, 0.9647239393979258)
(t, η, λ) = (37, 0.024911169755634968, 0.9647308470845507)
(t, η, λ) = (38, 0.024031983313445263, 0.9647071393750656)
(t, η, λ) = (39, 0.023182645216393225, 0.9646580107028929)
(t, η, λ) = (40, 0.022361701742458384, 0.9645880154627772)
(t, η, λ) = (41, 0.02156788625172622, 0.9645011144556616)
(t, η, λ) = (42, 0.020800085230089204, 0.9644007292751943)
(t, η, λ) = (43, 0.020057310001705082, 0.9642897988076689)
(t, η, λ) = (44, 0.019338673319985813, 0.9641708343911433)
(t, η, λ) = (45, 0.018643370112092952, 0.9640459716968128)
(t, η, λ) = (46, 0.017970661730564205, 0.96391701835644)
(t, η, λ) = (47, 0.01731986314668123, 0.9637854969594076)
(t, η, λ) = (48, 0.01669033259752725, 0.9636526834061844)
(t, η, λ) = (49, 0.01608146326950483, 0.9635196408181448)
(t, η, λ) = (50, 0.015492676664226324, 0.963387249318598)
(t, η, λ) = (51, 0.01492341734800455, 0.963256232053417)
(t, η, λ) = (52, 0.014373148834028807, 0.9631271778344173)
(t, η, λ) = (53, 0.01384135038736177, 0.9630005607812263)
(t, η, λ) = (54, 0.013327514577853321, 0.9628767573157009)
(t, η, λ) = (55, 0.012831145435688626, 0.9627560608345141)
(t, η, λ) = (56, 0.0123517570892963, 0.9626386943554585)
(t, η, λ) = (57, 0.01188887278635723, 0.9625248214004959)
(t, η, λ) = (58, 0.011442024216295683, 0.962414555350082)
(t, η, λ) = (59, 0.011010751067362575, 0.9623079674731949)
(t, η, λ) = (60, 0.010594600763732623, 0.9622050938138562)
(t, η, λ) = (61, 0.010193128338267746, 0.9621059410903717)
(t, η, λ) = (62, 0.009805896405102073, 0.9620104917435504)
(t, η, λ) = (63, 0.009432475203250596, 0.9619187082521916)
(t, η, λ) = (64, 0.009072442688260303, 0.9618305368175026)
(t, η, λ) = (65, 0.008725384653724967, 0.9617459105049595)
(t, η, λ) = (66, 0.008390894868426018, 0.9616647519194295)
(t, η, λ) = (67, 0.008068575218096447, 0.9615869754795257)
(t, η, λ) = (68, 0.0077580358434334, 0.9615124893467487)
(t, η, λ) = (69, 0.007458895268139593, 0.9614411970593036)
(t, η, λ) = (70, 0.0071707805124982624, 0.9613729989115141)
(t, η, λ) = (71, 0.00689332718937966, 0.961307793114708)
(t, η, λ) = (72, 0.006626179580699626, 0.9612454767718526)
(t, η, λ) = (73, 0.00636899069321818, 0.9611859466908244)
(t, η, λ) = (74, 0.006121422293267019, 0.9611291000605832)
(t, η, λ) = (75, 0.00588314492052653, 0.9610748350097377)
(t, η, λ) = (76, 0.005653837881374634, 0.9610230510637543)
(t, η, λ) = (77, 0.005433189222638903, 0.9609736495164442)
(t, η, λ) = (78, 0.005220895686797932, 0.9609265337278535)
(t, η, λ) = (79, 0.0050166626498263835, 0.9608816093591006)
(t, η, λ) = (80, 0.0048202040429767825, 0.9608387845540302)
(t, η, λ) = (81, 0.004631242259841755, 0.9607979700754884)
(t, η, λ) = (82, 0.00444950805005763, 0.9607590794029561)
(t, η, λ) = (83, 0.004274740401003965, 0.9607220287979024)
(t, η, λ) = (84, 0.0041066864088210855, 0.9606867373411937)
(t, η, λ) = (85, 0.0039451011400302854, 0.9606531269483548)
(t, η, λ) = (86, 0.0037897474849781536, 0.9606211223647009)
(t, η, λ) = (87, 0.003640396004271114, 0.9605906511452172)
(t, η, λ) = (88, 0.0034968247692918173, 0.9605616436204053)
(t, η, λ) = (89, 0.0033588191978273937, 0.9605340328527893)
(t, η, λ) = (90, 0.0032261718857547555, 0.9605077545827893)
(t, η, λ) = (91, 0.003098682435670616, 0.9604827471694635)
(t, η, λ) = (92, 0.002976157283271076, 0.9604589515243361)
(t, η, λ) = (93, 0.002858409522226134, 0.9604363110421617)
(t, η, λ) = (94, 0.0027452587282215894, 0.9604147715277611)
(t, η, λ) = (95, 0.00263653078278214, 0.9603942811212244)
(t, η, λ) = (96, 0.002532057697426949, 0.9603747902215091)
(t, η, λ) = (97, 0.002431677438654506, 0.9603562514098916)
(t, η, λ) = (98, 0.0023352337541952127, 0.9603386193718779)
(t, η, λ) = (99, 0.0022425760009290754, 0.9603218508212812)
(t, η, λ) = (100, 0.0021535589748101548, 0.9603059044232874)
(t, η, λ) = (101, 0.0020680427431057037, 0.9602907407204905)
(t, η, λ) = (102, 0.00198589247920789, 0.9602763220578102)
(t, η, λ) = (103, 0.0019069783002503605, 0.9602626125111235)
(t, η, λ) = (104, 0.0018311751077205055, 0.9602495778164318)
(t, η, λ) = (105, 0.0017583624312307094, 0.960237185300954)
(t, η, λ) = (106, 0.001688424275583911, 0.9602254038162954)
(t, η, λ) = (107, 0.0016212489712436862, 0.9602142036740182)
(t, η, λ) = (108, 0.0015567290282930413, 0.9602035565819661)
(t, η, λ) = (109, 0.0014947609939501693, 0.9601934355840848)
(t, η, λ) = (110, 0.0014352453136867228, 0.960183815001644)
(t, η, λ) = (111, 0.0013780861959793234, 0.9601746703770282)
(t, η, λ) = (112, 0.0013231914807063196, 0.960165978417632)
(t, η, λ) = (113, 0.0012704725111967888, 0.9601577169455554)
(t, η, λ) = (114, 0.001219844009915584, 0.9601498648455506)
(t, η, λ) = (115, 0.0011712239577664613, 0.9601424020170518)
(t, η, λ) = (116, 0.0011245334769822203, 0.9601353093277905)
(t, η, λ) = (117, 0.0010796967175625938, 0.9601285685687636)
(t, η, λ) = (118, 0.0010366407472147015, 0.9601221624114123)
(t, η, λ) = (119, 0.0009952954447451346, 0.9601160743674648)
(t, η, λ) = (120, 0.0009555933968440886, 0.9601102887482696)
(t, η, λ) = (121, 0.0009174697982026568, 0.9601047906281713)
(t, η, λ) = (122, 0.0008808623548970232, 0.9600995658087619)
(t, η, λ) = (123, 0.0008457111909699518, 0.9600946007833645)
(t, η, λ) = (124, 0.0008119587581404997, 0.9600898827048259)
(t, η, λ) = (125, 0.0007795497485693475, 0.9600853993552907)
(t, η, λ) = (126, 0.0007484310106021147, 0.9600811391135168)
(t, η, λ) = (127, 0.000718551467419653, 0.9600770909286301)
(t, η, λ) = (128, 0.0006898620385165034, 0.9600732442921946)
(t, η, λ) = (129, 0.0006623155639311055, 0.9600695892114393)
(t, η, λ) = (130, 0.000635866731151989, 0.9600661161846595)
(t, η, λ) = (131, 0.0006104720046241871, 0.9600628161788011)
(t, η, λ) = (132, 0.0005860895577769024, 0.9600596806035441)
(t, η, λ) = (133, 0.0005626792075027018, 0.9600567012949379)
(t, η, λ) = (134, 0.0005402023510063718, 0.9600538704885019)
(t, η, λ) = (135, 0.0005186219049574219, 0.9600511808052176)
(t, η, λ) = (136, 0.0004979022468686617, 0.9600486252302414)
(t, η, λ) = (137, 0.0004780091586310582, 0.9600461970944851)
(t, η, λ) = (138, 0.00045890977213612676, 0.9600438900592846)
(t, η, λ) = (139, 0.00044057251691642234, 0.960041698100373)
(t, η, λ) = (140, 0.00042296706973615105, 0.9600396154905616)
(t, η, λ) = (141, 0.00040606430606765904, 0.9600376367856817)
(t, η, λ) = (142, 0.0003898362533909907, 0.9600357568144283)
(t, η, λ) = (143, 0.0003742560462499228, 0.960033970659364)
(t, η, λ) = (144, 0.0003592978830072685, 0.9600322736465146)
(t, η, λ) = (145, 0.0003449369842399222, 0.9600306613355254)
(t, η, λ) = (146, 0.00033114955271444874, 0.9600291295064969)
(t, η, λ) = (147, 0.0003179127348875908, 0.9600276741479639)
(t, η, λ) = (148, 0.00030520458387814565, 0.9600262914477504)
(t, η, λ) = (149, 0.00029300402385729404, 0.9600249777843352)
(t, η, λ) = (150, 0.0002812908158051982, 0.9600237297157369)
(t, η, λ) = (151, 0.0002700455245844879, 0.960022543969235)
(t, η, λ) = (152, 0.0002592494872846284, 0.960021417438889)
(t, η, λ) = (153, 0.00024888478278648754, 0.9600203471694371)
(t, η, λ) = (154, 0.00023893420250617882, 0.9600193303547807)
(t, η, λ) = (155, 0.00022938122227200868, 0.9600183643280492)
(t, η, λ) = (156, 0.00022020997529281026, 0.9600174465531324)
(t, η, λ) = (157, 0.00021140522617903566, 0.9600165746257996)
(t, η, λ) = (158, 0.00020295234597241267, 0.96001574625471)
(t, η, λ) = (159, 0.00019483728815212253, 0.9600149592683535)
(t, η, λ) = (160, 0.00018704656557499446, 0.9600142115966769)
(t, η, λ) = (161, 0.00017956722832056384, 0.9600135012827495)
(t, η, λ) = (162, 0.00017238684239913129, 0.9600128264573193)
(t, η, λ) = (163, 0.00016549346929700925, 0.9600121853490323)
(t, η, λ) = (164, 0.00015887564632349223, 0.9600115762777316)
(t, η, λ) = (165, 0.00015252236772750992, 0.9600109976387056)
(t, η, λ) = (166, 0.00014642306655931464, 0.9600104479161244)
(t, η, λ) = (167, 0.00014056759724301394, 0.9600099256633947)
(t, η, λ) = (168, 0.00013494621883652824, 0.9600094295076593)
(t, η, λ) = (169, 0.0001295495789516525, 0.9600089581508532)
(t, η, λ) = (170, 0.00012436869830527677, 0.960008510345609)
(t, η, λ) = (171, 0.00011939495588450916, 0.9600080849237562)
(t, η, λ) = (172, 0.00011462007469369728, 0.96000768076475)
(t, η, λ) = (173, 0.00011003610806620879, 0.960007296804348)
(t, η, λ) = (174, 0.00010563542651744325, 0.9600069320325502)
(t, η, λ) = (175, 0.00010141070511826642, 0.9600065854945053)
(t, η, λ) = (176, 9.735491136681343e-5, 0.9600062562751824)
(t, η, λ) = (177, 9.3461293542295e-5, 0.9600059435127204)
(t, η, λ) = (178, 8.972336951895766e-5, 0.9600056463840213)
(t, η, λ) = (179, 8.613491602396938e-5, 0.960005364107173)
(t, η, λ) = (180, 8.268995832123418e-5, 0.9600050959383702)
(t, η, λ) = (181, 7.938276030495405e-5, 0.9600048411751241)
(t, η, λ) = (182, 7.620781498582527e-5, 0.9600045991480767)
(t, η, λ) = (183, 7.315983535509279e-5, 0.9600043692198837)
(t, η, λ) = (184, 7.023374561139095e-5, 0.9600041507816467)
(t, η, λ) = (185, 6.742467273715714e-5, 0.9600039432643015)
(t, η, λ) = (186, 6.472793840882186e-5, 0.9600037461234997)
(t, η, λ) = (187, 6.21390512285598e-5, 0.9600035588355891)
(t, η, λ) = (188, 5.965369926595247e-5, 0.9600033809099254)
(t, η, λ) = (189, 5.7267742895873825e-5, 0.9600032118806011)
(t, η, λ) = (190, 5.4977207920859545e-5, 0.9600030512957528)
(t, η, λ) = (191, 5.2778278968916844e-5, 0.9600028987447291)
(t, η, λ) = (192, 5.0667293152021756e-5, 0.9600027538196475)
(t, η, λ) = (193, 4.864073397870831e-5, 0.9600026161406932)
(t, η, λ) = (194, 4.669522550844421e-5, 0.9600024853425174)
(t, η, λ) = (195, 4.482752673920333e-5, 0.9600023610785832)
(t, η, λ) = (196, 4.303452621930599e-5, 0.9600022430340933)
(t, η, λ) = (197, 4.131323687251304e-5, 0.9600021308932001)
(t, η, λ) = (198, 3.9660791030005356e-5, 0.9600020243485906)
(t, η, λ) = (199, 3.8074435662064735e-5, 0.9600019231401495)
(t, η, λ) = (200, 3.655152779701429e-5, 0.9600018269852444)
(t, η, λ) = (201, 3.508953012544695e-5, 0.9600017356405341)
(t, η, λ) = (202, 3.368600677827437e-5, 0.9600016488634956)
(t, η, λ) = (203, 3.233861927370158e-5, 0.9600015664236647)
(t, η, λ) = (204, 3.104512262607902e-5, 0.9600014881069936)
(t, η, λ) = (205, 2.980336160971991e-5, 0.9600014137062551)
(t, η, λ) = (206, 2.861126717181357e-5, 0.960001343019052)
(t, η, λ) = (207, 2.746685298915411e-5, 0.9600012758684494)
(t, η, λ) = (208, 2.636821216174979e-5, 0.9600012120850487)
(t, η, λ) = (209, 2.5313514037806285e-5, 0.9600011514821825)
(t, η, λ) = (210, 2.430100116691078e-5, 0.9600010939064685)
(t, η, λ) = (211, 2.3328986374142596e-5, 0.9600010392126676)
(t, η, λ) = (212, 2.239584995071348e-5, 0.9600009872497767)
(t, η, λ) = (213, 2.150003695760258e-5, 0.960000937893301)
(t, η, λ) = (214, 2.064005463586303e-5, 0.9600008910014708)
(t, η, λ) = (215, 1.981446992108469e-5, 0.9600008464442799)
(t, η, λ) = (216, 1.902190705766196e-5, 0.960000804130553)
(t, η, λ) = (217, 1.8261045306679652e-5, 0.9600007639257268)
(t, η, λ) = (218, 1.7530616746895857e-5, 0.960000725724249)
(t, η, λ) = (219, 1.682940416347341e-5, 0.96000068944827)
(t, η, λ) = (220, 1.6156239019542168e-5, 0.9600006549612563)
(t, η, λ) = (221, 1.5509999511612013e-5, 0.9600006222272102)
(t, η, λ) = (222, 1.4889608699363645e-5, 0.9600005911164669)
(t, η, λ) = (223, 1.4294032712536656e-5, 0.960000561542464)
(t, η, λ) = (224, 1.3722279029725202e-5, 0.9600005334876563)
(t, η, λ) = (225, 1.3173394822962467e-5, 0.9600005067981972)
(t, η, λ) = (226, 1.2646465372649005e-5, 0.9600004814708071)
(t, η, λ) = (227, 1.2140612542309683e-5, 0.9600004574058022)
(t, η, λ) = (228, 1.1654993315875972e-5, 0.960000434513387)
(t, η, λ) = (229, 1.118879839436628e-5, 0.9600004127952043)
(t, η, λ) = (230, 1.0741250846434596e-5, 0.9600003921639136)
(t, η, λ) = (231, 1.0311604814147302e-5, 0.9600003725422809)
(t, η, λ) = (232, 9.89914427108729e-6, 0.9600003539222017)
(t, η, λ) = (233, 9.503181828570221e-6, 0.9600003362236506)
(t, η, λ) = (234, 9.123057590924746e-6, 0.9600003194190523)
(t, η, λ) = (235, 8.758138055598827e-6, 0.9600003034411482)
(t, η, λ) = (236, 8.407815058114806e-6, 0.9600002882735937)
(t, η, λ) = (237, 8.071504758315265e-6, 0.96000027385534)
(t, η, λ) = (238, 7.748646667876986e-6, 0.9600002601614438)
(t, η, λ) = (239, 7.438702716260229e-6, 0.9600002471526197)
(t, η, λ) = (240, 7.141156354209506e-6, 0.9600002347989632)
(t, η, λ) = (241, 6.855511692970183e-6, 0.9600002230631817)
(t, η, λ) = (242, 6.581292678019826e-6, 0.960000211912475)
(t, η, λ) = (243, 6.318042295773239e-6, 0.9600002013091151)
(t, η, λ) = (244, 6.065321812286712e-6, 0.9600001912529779)
(t, η, λ) = (245, 5.8227100417632416e-6, 0.960000181683352)
(t, η, λ) = (246, 5.589802645130675e-6, 0.9600001726065622)
(t, η, λ) = (247, 5.366211455882626e-6, 0.960000163969506)
(t, η, λ) = (248, 5.151563833522127e-6, 0.9600001557662817)
(t, η, λ) = (249, 4.945502042409746e-6, 0.9600001479606056)
(t, η, λ) = (250, 4.747682656016189e-6, 0.9600001405929726)
(t, η, λ) = (251, 4.5577759838825495e-6, 0.9600001335613716)
(t, η, λ) = (252, 4.3754655228519245e-6, 0.9600001268874729)
(t, η, λ) = (253, 4.2004474293316715e-6, 0.9600001205343343)
(t, η, λ) = (254, 4.032430013130212e-6, 0.9600001145048986)
(t, η, λ) = (255, 3.871133251259338e-6, 0.9600001087816362)
(t, η, λ) = (256, 3.71628832138478e-6, 0.9600001033743324)
(t, η, λ) = (257, 3.5676371533386357e-6, 0.9600000981649471)
(t, η, λ) = (258, 3.42493199989479e-6, 0.9600000932521121)
(t, η, λ) = (259, 3.287935023339987e-6, 0.9600000885976682)
(t, η, λ) = (260, 3.156417899245597e-6, 0.9600000841985037)
(t, η, λ) = (261, 3.0301614356044603e-6, 0.9600000799414701)
(t, η, λ) = (262, 2.908955208284603e-6, 0.9600000759379742)
(t, η, λ) = (263, 2.792597209876393e-6, 0.9600000721644574)
(t, η, λ) = (264, 2.68089351288495e-6, 0.960000068539642)
(t, η, λ) = (265, 2.5736579471545086e-6, 0.9600000651965308)
(t, η, λ) = (266, 2.470711788555949e-6, 0.9600000618915272)
(t, η, λ) = (267, 2.371883462223554e-6, 0.9600000587724734)
(t, η, λ) = (268, 2.2770082562164375e-6, 0.9600000558551158)
(t, η, λ) = (269, 2.185928046873734e-6, 0.9600000530986015)
(t, η, λ) = (270, 2.0984910350703724e-6, 0.9600000503546253)
(t, η, λ) = (271, 2.014551494189274e-6, 0.9600000479019042)
(t, η, λ) = (272, 1.933969526025369e-6, 0.9600000454709975)
(t, η, λ) = (273, 1.856610828542013e-6, 0.9600000432052614)
(t, η, λ) = (274, 1.7823464713552551e-6, 0.9600000409105244)
(t, η, λ) = (275, 1.7110526821640177e-6, 0.9600000390849781)
(t, η, λ) = (276, 1.6426106381433241e-6, 0.9600000369748213)
(t, η, λ) = (277, 1.5769062704590175e-6, 0.9600000352131083)
(t, η, λ) = (278, 1.5138300724311157e-6, 0.9600000334772332)
(t, η, λ) = (279, 1.453276917691254e-6, 0.9600000318116173)
(t, η, λ) = (280, 1.395145884889543e-6, 0.9600000302116813)
(t, η, λ) = (281, 1.3393400894040865e-6, 0.9600000286064172)
(t, η, λ) = (282, 1.2857665223930954e-6, 0.960000027300887)
(t, η, λ) = (283, 1.2343358946514161e-6, 0.9600000257854314)
(t, η, λ) = (284, 1.1849624892600438e-6, 0.9600000246243219)
(t, η, λ) = (285, 1.1375640172270645e-6, 0.9600000232390667)
(t, η, λ) = (286, 1.0920614818309309e-6, 0.9600000222343082)
(t, η, λ) = (287, 1.048379045615234e-6, 0.9600000211137749)
(t, η, λ) = (288, 1.0064439048847035e-6, 0.9600000201206605)
(t, η, λ) = (289, 9.66186167804522e-7, 0.9600000189928186)
(t, η, λ) = (290, 9.275387385051558e-7, 0.9600000180222149)
(t, η, λ) = (291, 8.904372047904964e-7, 0.9600000170618717)
(t, η, λ) = (292, 8.548197312169762e-7, 0.9600000164167665)
(t, η, λ) = (293, 8.206269552320972e-7, 0.9600000155164878)
(t, η, λ) = (294, 7.878018888652331e-7, 0.9600000144309419)
(t, η, λ) = (295, 7.562898242936894e-7, 0.9600000139414055)
(t, η, λ) = (296, 7.260382414030474e-7, 0.9600000133296857)
(t, η, λ) = (297, 6.969967208997828e-7, 0.9600000126065774)
(t, η, λ) = (298, 6.691168605286211e-7, 0.9600000121447195)
(t, η, λ) = (299, 6.423521936694392e-7, 0.9600000113014084)
(t, η, λ) = (300, 6.166581128065681e-7, 0.9600000107167166)
(t, η, λ) = (301, 5.919917946524463e-7, 0.9600000103106417)
(t, η, λ) = (302, 5.68312128715947e-7, 0.9600000098812156)
(t, η, λ) = (303, 5.455796487714848e-7, 0.960000009157249)
(t, η, λ) = (304, 5.237564677048094e-7, 0.960000008952284)
(t, η, λ) = (305, 5.028062134012661e-7, 0.9600000084097274)
(t, η, λ) = (306, 4.82693968917239e-7, 0.9600000080588176)
(t, η, λ) = (307, 4.633862138073707e-7, 0.9600000075551414)
(t, η, λ) = (308, 4.4485076860184793e-7, 0.9600000072224247)
(t, η, λ) = (309, 4.270567408473879e-7, 0.9600000067204871)
(t, η, λ) = (310, 4.0997447391302866e-7, 0.960000006321259)
(t, η, λ) = (311, 3.935754975182568e-7, 0.9600000062485581)
(t, η, λ) = (312, 3.778324801421097e-7, 0.9600000064144826)
(t, η, λ) = (313, 3.627191827920166e-7, 0.960000004911148)
(t, η, λ) = (314, 3.4821041744108044e-7, 0.9600000054056819)
(t, η, λ) = (315, 3.342820026099065e-7, 0.9600000053601765)
(t, η, λ) = (316, 3.2091072404745503e-7, 0.9600000046127065)
(t, η, λ) = (317, 3.0807429654501075e-7, 0.9600000045478503)
(t, η, λ) = (318, 2.957513260674253e-7, 0.9600000044931206)
(t, η, λ) = (319, 2.8392127424124206e-7, 0.9600000041132996)
(t, η, λ) = (320, 2.725644242252231e-7, 0.9600000033587858)
(t, η, λ) = (321, 2.616618483258761e-7, 0.960000003924437)
(t, η, λ) = (322, 2.511953752277212e-7, 0.9600000031906836)
(t, η, λ) = (323, 2.4114756096284326e-7, 0.9600000029627572)
(t, η, λ) = (324, 2.3150165935920974e-7, 0.9600000034621134)
(t, η, λ) = (325, 2.2224159362210604e-7, 0.9600000027527434)
(t, η, λ) = (326, 2.1335193045375145e-7, 0.9600000025941573)
(t, η, λ) = (327, 2.0481785390096742e-7, 0.9600000031186314)
(t, η, λ) = (328, 1.966251402906376e-7, 0.9600000026643618)
(t, η, λ) = (329, 1.8876013525010283e-7, 0.9600000029044644)
(t, η, λ) = (330, 1.8120973025164663e-7, 0.9600000021802693)
(t, η, λ) = (331, 1.7396134140055208e-7, 0.9600000019809716)
(t, η, λ) = (332, 1.670028879965351e-7, 0.960000001448627)
(t, η, λ) = (333, 1.603227728628398e-7, 0.9600000023123318)
(t, η, λ) = (334, 1.5390986208611316e-7, 0.9600000008594347)
(t, η, λ) = (335, 1.477534681329672e-7, 0.9600000034455138)
(t, η, λ) = (336, 1.418433294992043e-7, 0.9600000006196524)
(t, η, λ) = (337, 1.3616959668183344e-7, 0.9600000025563226)
(t, η, λ) = (338, 1.3072281305206133e-7, 0.9600000017441576)
(t, η, λ) = (339, 1.25493900781984e-7, 0.9600000019277823)
(t, η, λ) = (340, 1.2047414470900593e-7, 0.9599999996677232)
(t, η, λ) = (341, 1.1565517923701185e-7, 0.9600000026260087)
(t, η, λ) = (342, 1.1102897220078589e-7, 0.9600000011521708)
(t, η, λ) = (343, 1.0658781337620897e-7, 0.9600000005715131)
(t, η, λ) = (344, 1.023243009508463e-7, 0.9600000010290641)
(t, η, λ) = (345, 9.82313290823267e-8, 0.9600000016566372)
(t, η, λ) = (346, 9.430207600061801e-8, 0.9600000008305332)
(t, η, λ) = (347, 9.052999301679587e-8, 0.9600000005959847)
(t, η, λ) = (348, 8.690879335051363e-8, 0.9600000006007908)
(t, η, λ) = (349, 8.343244170532943e-8, 0.960000001022179)
(t, η, λ) = (350, 8.009514409331883e-8, 0.9600000006736298)
(t, η, λ) = (351, 7.689133843020683e-8, 0.9600000012562654)
(t, η, λ) = (352, 7.381568510783747e-8, 0.9600000027940586)
(t, η, λ) = (353, 7.086305777060448e-8, 0.9600000009087568)
(t, η, λ) = (354, 6.802853551960885e-8, 0.9600000008442842)
(t, η, λ) = (355, 6.530739407434918e-8, 0.9599999996402198)
(t, η, λ) = (356, 6.269509847545049e-8, 0.9600000025123537)
(t, η, λ) = (357, 6.018729454096494e-8, 0.9600000000722938)
(t, η, λ) = (358, 5.777980270221727e-8, 0.959999999051144)
(t, η, λ) = (359, 5.546861070653375e-8, 0.960000001945406)
(t, η, λ) = (360, 5.3249866206659423e-8, 0.9599999987089458)
(t, η, λ) = (361, 5.1119871593746286e-8, 0.9600000006639122)
(t, η, λ) = (362, 4.907507676806915e-8, 0.9600000007447733)
(t, η, λ) = (363, 4.7112073858702195e-8, 0.960000003287938)
(t, η, λ) = (364, 4.52275908100788e-8, 0.9599999979989141)
(t, η, λ) = (365, 4.341848725744706e-8, 0.9600000017637776)
(t, η, λ) = (366, 4.16817476148583e-8, 0.9599999964924878)
(t, η, λ) = (367, 4.001447769847956e-8, 0.9599999997172766)
(t, η, λ) = (368, 3.841389856243908e-8, 0.9599999992977216)
(t, η, λ) = (369, 3.687734271421682e-8, 0.9600000024541978)
(t, η, λ) = (370, 3.540224901561958e-8, 0.9600000002703944)
(t, η, λ) = (371, 3.398615912479477e-8, 0.9600000019716255)
(t, η, λ) = (372, 3.262671271447832e-8, 0.9599999986663788)
(t, η, λ) = (373, 3.132164414063167e-8, 0.9599999979995681)
(t, η, λ) = (374, 3.0068778476533654e-8, 0.9600000032414406)
(t, η, λ) = (375, 2.8866027252261937e-8, 0.9599999971661513)
(t, η, λ) = (376, 2.771138623378443e-8, 0.9600000024808737)
(t, η, λ) = (377, 2.6602930822505772e-8, 0.9600000013739017)
(t, η, λ) = (378, 2.5538813607735407e-8, 0.9600000006814988)
(t, η, λ) = (379, 2.4517261012662366e-8, 0.9599999980122951)
(t, η, λ) = (380, 2.3536570552213018e-8, 0.9599999991865791)
(t, η, λ) = (381, 2.259510788694784e-8, 0.9600000066629648)
(t, η, λ) = (382, 2.169130344637385e-8, 0.959999994463577)
(t, η, λ) = (383, 2.0823651341152654e-8, 0.9600000015044627)
(t, η, λ) = (384, 1.9990705215893576e-8, 0.9599999965609791)
(t, η, λ) = (385, 1.919107720668636e-8, 0.9600000099760626)
(t, η, λ) = (386, 1.84234338618813e-8, 0.9599999866324541)
(t, η, λ) = (387, 1.7686496572673566e-8, 0.9600000035426358)
(t, η, λ) = (388, 1.6979036814013354e-8, 0.9600000058941425)
(t, η, λ) = (389, 1.6299875170125588e-8, 0.9599999899094847)
(t, η, λ) = (390, 1.5647880382691944e-8, 0.9600000134584699)
(t, η, λ) = (391, 1.5021965090332334e-8, 0.959999995075887)
(t, η, λ) = (392, 1.4421086485812547e-8, 0.9599999999396555)
(t, η, λ) = (393, 1.3844243052668353e-8, 0.9600000018229076)
(t, η, λ) = (394, 1.3290473341439537e-8, 0.9600000007857359)
(t, η, λ) = (395, 1.27588544286313e-8, 0.9600000015687435)
(t, η, λ) = (396, 1.224850017171464e-8, 0.9599999937477609)
(t, η, λ) = (397, 1.1758560211983706e-8, 0.9600000038484428)
(t, η, λ) = (398, 1.1288217844296556e-8, 0.960000003469149)
(t, η, λ) = (399, 1.0836689110581842e-8, 0.9599999982333038)
(t, η, λ) = (400, 1.0403221530748181e-8, 0.9599999985779433)
(t, η, λ) = (401, 9.987092606970218e-9, 0.9599999939876281)
  0.019572 seconds (48.02 k allocations: 2.502 MiB, 85.61% compilation time)
([0.4158342892103646, 0.4158342892103646, 1.1651371859598578], [-0.8342230398289807, 0.363055547191771, 1.4461257722409178], Bool[0, 0, 1])
  1. Implement Policy Iteration and compare rates of convergence.
function policy_iteration(model; T=5000, τ=1e-8, verbose=false)
    # initial guess for the values
    V_U_0 = zeros(3);
    V_E_0 = zeros(3);
    local x # so that x is available outside the loop
    η_0 = NaN
    for t=1:T
        V_U_t, V_E_t, x = bellman_step(V_U_0, V_E_0, model)
        V_U, V_E = policy_eval(x, model)
        η = norm(  [V_U; V_E] - [V_U_0; V_E_0]  ) # successive approximation errors
        λ = η/η_0
        η_0 = η
        if verbose
        @show (t, η, λ)
        end
        if η<τ
            break
        end
        V_U_0, V_E_0 = V_U, V_E
    end
    return V_U_0, V_E_0, x
end
@time policy_iteration(model; verbose=true)
(t, η, λ) = (1, 2.4958819529398997, NaN)
(t, η, λ) = (2, 2.104636943993661, 0.8432437846327664)
(t, η, λ) = (3, 0.6128475729454325, 0.29118921184692376)
(t, η, λ) = (4, 0.0, 0.0)
  0.024155 seconds (46.85 k allocations: 2.239 MiB, 97.71% compilation time)
([0.41583429078597567, 0.41583429078597567, 1.165137187535469], [-0.8342230382533695, 0.3630555487673824, 1.446125773816529], Bool[0, 0, 1])
  1. Discuss the Effects of the Parameters
policy_iteration(
    model;
)[3]
3-element Vector{Bool}:
 0
 0
 1
policy_iteration(
    merge(
        model,
        (;λ=0.15) # higher risk of loosing
    )
    ;
)[3]
3-element Vector{Bool}:
 0
 1
 1
policy_iteration(
    merge(
        model,
        (;β=0.7)  # very impatient
    )
    ;
)[3]
3-element Vector{Bool}:
 0
 1
 1
policy_iteration(
    merge(
        model,
        (;cbar=0.2)  # unemployment benefit is too low
    )
    ;
)[3]
3-element Vector{Bool}:
 1
 1
 1