3

特定のリスクレベルに従ってポートフォリオを最適化しようとしています。を使用するのは簡単に思えますfPortfolioが、得られる結果は意味がありません。私はこれを理解するのに何時間も費やしましたが、運がありませんでした。

基本ケース (つまり、制約ではない)

defaultSpec <- portfolioSpec()
lppAssets <- 100*LPP2005.RET[, c("SBI", "SPI", "LMI", "MPI")]
lppData <- portfolioData(data = lppAssets, spec = defaultSpec)
port <- efficientPortfolio(lppData, defaultSpec, constraints = "LongOnly")
port@portfolio

# $weights
#         SBI         SPI         LMI         MPI 
# 0.396009510 0.002142136 0.547715368 0.054132986 

# $covRiskBudgets
#         SBI         SPI         LMI         MPI 
# 0.396009510 0.002142136 0.547715368 0.054132986 

# $targetReturn
#        mean          mu 
# 0.006422759 0.006422759 

# $targetRisk
#       Cov     Sigma      CVaR       VaR 
# 0.1038206 0.1038206 0.2186926 0.1684104 

# $targetAlpha
# [1] 0.05

# $status
# [1] 0


# Slot "messages":
# list()

リスク レベルを 0.09 に設定しようとすると、同じ答えが得られます。

defaultSpec <- portfolioSpec()
setTargetRisk(defaultSpec) <- 0.09 # **this doesn't seem to work**
lppAssets <- 100*LPP2005.RET[, c("SBI", "SPI", "LMI", "MPI")]
lppData <- portfolioData(data = lppAssets, spec = defaultSpec)
port <- efficientPortfolio(lppData, defaultSpec, constraints = "LongOnly")
port@portfolio

# An object of class "fPFOLIOVAL"
# Slot "portfolio":
# $weights
#         SBI         SPI         LMI         MPI 
# 0.396009510 0.002142136 0.547715368 0.054132986 

# $covRiskBudgets
#         SBI         SPI         LMI         MPI 
# 0.396009510 0.002142136 0.547715368 0.054132986 

# $targetReturn
#        mean          mu 
# 0.006422759 0.006422759 

# $targetRisk
#       Cov     Sigma      CVaR       VaR 
# 0.1038206 0.1038206 0.2186926 0.1684104 

# $targetAlpha
# [1] 0.05

# $status
# [1] 0


# Slot "messages":
# list()

「仕様」には、新しいレベルのリスクがターゲットにされていると書かれていますが、結果は変わりません。リスクを 0.09 に設定するか、0.12 に設定するか、またはその他の値に設定するかは問題ではありません。

defaultSpec

# Model List:   
#  Type:                      MV
#  Optimize:                  maxReturn
#  Estimator:                 covEstimator
#  Params:                    alpha = 0.05 a = 1

# Portfolio List:   
#  Portfolio Weights:         NA
#  Target Return:             NA
#  Target Risk:               0.09
#  Risk-Free Rate:            0
#  Number of Frontier Points: 50
#  Status:                    NA

# Optim List:   
#  Solver:                    solveRquadprog
#  Objective:                 portfolioObjective portfolioReturn portfolioRisk
#  Options:                   meq = 2
#  Trace:                     FALSE

私は何を間違っていますか?fPortfolioRを使用してリスクのレベルを設定するにはどうすればよいですか?

4

3 に答える 3

1

fPortfolio のヘルプ ファイルから、リスク目標を設定する場合、maxreturnPortfolio を使用する必要があるようです。setOptimize(spec) <- 'maxReturn' も必要になる場合があります。

Rのヘルプファイルからコピー:「最大リターンポートフォリオ:

関数 maxreturnPortfolio は、固定ターゲット リスクの最大リターンを持つポートフォリオを返します。」

于 2015-05-22T02:02:00.703 に答える