2

複数の制約を使用して効率的なポートフォリオを構築しています。つまり、特定の資産のロング ポジションと最小ウェイト = 34% (たとえば)。これを行うために fPortfolio パッケージを使用しています。マニュアルによると、文字列ベクトルを作成することで複合制約を提供できます。私はそのアプローチにいくつかの問題があります。fPortfolio マニュアルの例を次に示します。

library(fPortfolio)
Data = SMALLCAP.RET[,c("BKE", "GG", "GYMB", "KRON")]
Spec = portfolioSpec()
setTargetReturn(Spec) = mean(colMeans(Data))
Constraints = "LongOnly"
efficientPortfolio(Data, Spec, Constraints)

これは機能します。ただし、最小重量条件を追加してこれを増やしたい

Spec = portfolioSpec()  
setTargetReturn(Spec) = mean(colMeans(Data))
Constraints = c("LongOnly","minW[1]=0.34")
efficientPortfolio(Data, Spec, Constraints)

上記のコードでは、望ましい結果が得られません。制約の設定が間違っていることはわかっています。どんな助けでも大歓迎です。

4

1 に答える 1

2

はい、それは制約線のように見えます。fPortfolioマニュアルの33ページには

制約は、文字列または文字列のベクトルによって定義されます。要約制約:NULL、 "LongOnly"、 "Short" 3つの特殊なケースがあります。設定は、constraint = NULL、constraint = "Short"、およびconstraint="LongOnly"です。これらの3つの制約設定を、より一般的な制約定義と組み合わせることは許可されていないことに注意してください。

これを試してみると

library(fPortfolio)
Data = SMALLCAP.RET[,c("BKE", "GG", "GYMB", "KRON")]
Spec = portfolioSpec()  
setTargetReturn(Spec) = mean(colMeans(Data))
Constraints = "minW[1]=0.34"
efficientPortfolio(Data, Spec, Constraints)

あなたが得る

Title:
 MV Efficient Portfolio 
 Estimator:         covEstimator 
 Solver:            solveRquadprog 
 Optimize:          minRisk 
 Constraints:       minW 

Portfolio Weights:
   BKE     GG   GYMB   KRON 
0.3400 0.3390 0.1671 0.1538 

Covariance Risk Budgets:
   BKE     GG   GYMB   KRON 
0.3457 0.3421 0.2120 0.1002 

Target Return and Risks:
  mean     mu    Cov  Sigma   CVaR    VaR 
0.0243 0.0243 0.0962 0.0962 0.1592 0.1117 

それがあなたが探しているものだと思います。

于 2011-12-20T01:49:08.453 に答える