Skip to content

Commit 1a4bd2c

Browse files
committed
Start working on adding expected risk for predictions
1 parent 072eb98 commit 1a4bd2c

File tree

3 files changed

+19
-7
lines changed

3 files changed

+19
-7
lines changed

src/13_Prior/01_Base_Prior.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ Abstract supertype for all prior result types.
155155
"""
156156
abstract type AbstractPriorResult <: AbstractResult end
157157
const PrE_Pr = Union{<:AbstractPriorEstimator, <:AbstractPriorResult}
158+
const Pr_RR = Union{<:AbstractPriorResult, <:AbstractReturnsResult}
158159
"""
159160
prior(pr::AbstractPriorEstimator, rd::ReturnsResult; kwargs...)
160161

src/19_RiskMeasures/25_ExpectedRisk.jl

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,16 @@ function expected_risk(r::ERkNetRet, w::VecNum, X::MatNum, fees::Option{<:Fees}
3232
kwargs...)
3333
return r(calc_net_returns(w, X, fees))
3434
end
35-
function expected_risk(r::ERkNetRet, w::VecNum, pr::AbstractPriorResult,
36-
fees::Option{<:Fees} = nothing; kwargs...)
35+
function expected_risk(r::ERkNetRet, w::VecNum, pr::Pr_RR, fees::Option{<:Fees} = nothing;
36+
kwargs...)
3737
return r(calc_net_returns(w, pr.X, fees))
3838
end
3939
function expected_risk(r::ERkwXFees, w::VecNum, X::MatNum, fees::Option{<:Fees} = nothing;
4040
kwargs...)
4141
return r(w, X, fees)
4242
end
43-
function expected_risk(r::ERkwXFees, w::VecNum, pr::AbstractPriorResult,
44-
fees::Option{<:Fees} = nothing; kwargs...)
43+
function expected_risk(r::ERkwXFees, w::VecNum, pr::Pr_RR, fees::Option{<:Fees} = nothing;
44+
kwargs...)
4545
return r(w, pr.X, fees)
4646
end
4747
function expected_risk(r::ERkw, w::VecNum, args...; kwargs...)
@@ -52,7 +52,8 @@ function expected_risk(r::RiskRatioRiskMeasure, w::VecNum, X::MatNum,
5252
return expected_risk(r.r1, w, X, fees; kwargs...) /
5353
expected_risk(r.r2, w, X, fees; kwargs...)
5454
end
55-
function expected_risk(r::RiskRatioRiskMeasure, w::VecNum, pr::AbstractPriorResult,
55+
function expected_risk(r::RiskRatioRiskMeasure, w::VecNum,
56+
pr::Union{<:AbstractPriorResult <: AbstractReturnsResult},
5657
fees::Option{<:Fees} = nothing; kwargs...)
5758
return expected_risk(r.r1, w, pr.X, fees; kwargs...) /
5859
expected_risk(r.r2, w, pr.X, fees; kwargs...)

src/20_Optimisation/01_Base_Optimisation.jl

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -227,11 +227,21 @@ function calc_net_returns(res::NonFiniteAllocationOptimisationResult, X::MatNum,
227227
end
228228
return calc_net_returns(res.w, X, fees)
229229
end
230-
function calc_net_returns(res::NonFiniteAllocationOptimisationResult,
231-
pr::Union{<:AbstractPriorResult, <:ReturnsResult},
230+
function calc_net_returns(res::NonFiniteAllocationOptimisationResult, pr::Pr_RR,
232231
fees::Option{<:Fees} = nothing)
233232
return calc_net_returns(res, pr.X, fees)
234233
end
234+
function expected_risk(res::OptimisationResult, r::ERkNetRet, X::MatNum,
235+
fees::Option{<:Fees} = nothing; kwargs...)
236+
if isnothing(fees) && hasproperty(res, :fees)
237+
fees = res.fees
238+
end
239+
return expected_risk(r, res.w, X; fees = fees, kwargs...)
240+
end
241+
function expected_risk(res::OptimisationResult, r::ERkNetRet, pr::Pr_RR,
242+
fees::Option{<:Fees} = nothing; kwargs...)
243+
return expected_risk(r, res.w, pr.X; fees = fees, kwargs...)
244+
end
235245
function needs_previous_weights(::Nothing)
236246
return false
237247
end

0 commit comments

Comments
 (0)