[R-SIG-Finance] fPortfolio minimum variance optimisation under constraints
pierre.lequeux at hsbc.com
pierre.lequeux at hsbc.com
Tue Nov 1 10:19:02 CET 2016
I have when running an optimisation under constraints to derive a set of
currency hedge ratios using the fPortfolio package. My portfolio is made
of 1 domestic asset (GBP) with a fix weight of 60% and 4 other non-domestic
assets for which I have for each a currency hedged and currency un-hedged
series with a box constraint summing up to the country weight in my
benchmark (respectively 20% for US 10% for Euro, 5% for Japan and 5% for
Switzerland). What I want to do is to find the portfolio that minimise the
variance (and also the one that maximise the risk return ratio). then the
proportionality of weights between the hedge and un-hedged asset will be my
hedge ratio. The code below is in respect of the minimum variance
portfolio. I have coded a few lines and this seems to work most of the time
but in some occasion I am returned with a vector solution where of weights
are equal to zero. So I am obviously doing something wrong. It may be
something trivial, possibly the initial settings of the portfolio spec or
the constraints,.but I can t seem to find what it is and running out of
ideas. I would be really thankful if someonee could take the time to
peruse through the few below lines or point me towarda solution. I have
tried the StackOverflow forum but did not get any answer so far. I have
attached my code and a sample of the data in the below.
GBP-U USD-U EUR-U JPY-U CHF-U USD-H EUR-H JPY-H CHF-H
2016-05-13 0.0013866228 -0.0004015032 0.0023176509 0.004868271 0.0230163636 -0.0046939993 0.0065432710 0.0146679154 0.022040377
2016-05-20 0.0027094242 -0.0063831791 -0.0126106089 -0.006146676 -0.0158351590 0.0031237903 0.0045931268 0.0173505502 0.008964457
2016-05-27 0.0181190929 0.0140661262 0.0099806390 -0.005023782 0.0206840583 0.0223892121 0.0282165690 0.0048453909 0.033676661
2016-06-03 -0.0102711128 0.0081653966 0.0133194563 0.031814348 0.0092257881 0.0009701383 -0.0161380212 -0.0101505102 -0.016812484
2016-06-10 -0.0144639135 0.0160062120 -0.0152727781 0.008429249 0.0015983898 -0.0021260494 -0.0229890046 -0.0054785155 -0.027628141
2016-06-17 -0.0152295990 -0.0183599416 -0.0266861641 -0.039472434 -0.0286395252 -0.0112888146 -0.0217678087 -0.0589147494 -0.026415992
2016-06-24 0.0200253356 0.0317549413 0.0346147227 0.029164922 0.0401491058 -0.0166789670 0.0006268938 -0.0379679346 0.004386684
2016-07-01 0.0696777854 0.0620232077 0.0754752233 0.065465564 0.0704656764 0.0314514909 0.0433540129 0.0379248977 0.041482495
2016-07-08 0.0016753950 0.0369097752 0.0076117981 0.007834512 0.0070165833 0.0130392554 -0.0084350439 -0.0354380321 -0.006380199
2016-07-15 0.0118593292 -0.0037643046 0.0058939005 0.028278185 -0.0020681743 0.0144418213 0.0257127861 0.0888542585 0.015778875
2016-07-22 0.0092918745 0.0130552307 0.0086318585 0.001398931 0.0062780458 0.0067460116 0.0077586182 0.0070486894 0.004685162
2016-07-29 -0.0004646661 -0.0094042916 0.0124831676 0.025141288 0.0018086154 -0.0002180359 0.0040494413 -0.0046691781 -0.006745367
2016-08-05 0.0101311910 0.0160368778 0.0045395343 -0.014712256 0.0081973627 0.0040861320 0.0006639525 -0.0289135714 0.007984259
2016-08-12 0.0177313054 0.0125451367 0.0377475690 0.050109303 0.0322171465 0.0007342288 0.0192744848 0.0332886266 0.014216897
2016-08-19 -0.0086591802 -0.0121869847 -0.0131592756 -0.018946998 -0.0182591489 -0.0003056645 -0.0156054036 -0.0176744155 -0.020491089
2016-08-26 -0.0032629188 -0.0112907806 -0.0099742141 -0.028672792 -0.0178773544 -0.0066076557 0.0061594585 -0.0078421386 0.005324054
2016-09-02 0.0082322936 -0.0063800658 -0.0012434593 0.010783580 0.0006709931 0.0054516933 0.0145201246 0.0429479722 0.015518353
2016-09-09 -0.0172703615 -0.0222186855 -0.0031692051 0.014054238 0.0031503483 -0.0243009678 -0.0119551411 0.0001827415 -0.004089906
2016-09-16 -0.0105444978 0.0257113060 -0.0072348498 -0.002332981 -0.0002596633 0.0054847746 -0.0203191336 -0.0263452760 -0.015320125
2016-09-23 0.0294827487 0.0150126367 0.0358026791 0.041563858 0.0298489405 0.0121889694 0.0268098637 0.0263689159 0.017033142
2016-09-30 -0.0010620124 0.0010033756 -0.0058345738 -0.025319672 -0.0159143301 0.0014163678 -0.0060494835 -0.0215285310 -0.014212323
2016-10-07 0.0213392520 0.0351900327 0.0426486765 0.047394294 0.0333505051 -0.0072195144 0.0034453853 0.0210516899 -0.002539864
2016-10-14 -0.0050982217 0.0095672058 0.0009866843 0.004577971 0.0035956430 -0.0102205657 0.0020303997 -0.0035136735 -0.002926098
2016-10-21 0.0002873986 0.0004041448 -0.0029951394 0.012861688 -0.0135120432 0.0038727554 0.0087025204 0.0127856995 -0.006358163
2016-10-28 -0.0039917961 -0.0029823347 0.0078312950 0.013806532 -0.0053670019 -0.0070482290 -0.0052953175 0.0188646173 -0.014826428
require(fPortfolio)
spec <- portfolioSpec()
mydata <- as.timeSeries(mydata)
cons <- c("eqsumW['GBP-U']=0.6" ,"eqsumW[c('USD-U','USD-H')]=0.20","eqsumW[c('EUR-U','EUR-H')]=0.10","eqsumW[c('JPY-U','JPY-H')]=0.05","eqsumW[c
('CHF-U','CHF-H')]=0.05")
minvariancePortfolio(list(mu=apply(mydata,2,function(x) mean(x)),sigma=cov(mydata)), spec = spec , constraints = cons)
when running the above lines on the data I get the following:
Title:
MV Minimum Variance Portfolio
Estimator: covEstimator
Solver: solveRquadprog
Optimize: minRisk
Constraints: LongOnly
Portfolio Weights:
GBP-U USD-U EUR-U JPY-U CHF-U USD-H EUR-H JPY-H CHF-H
0 0 0 0 0 0 0 0 0
Covariance Risk Budgets:
GBP-U USD-U EUR-U JPY-U CHF-U USD-H EUR-H JPY-H CHF-H
Target Return and Risk:
[1] 0
Description:
Mon Oct 31 11:26:35 2016 by user: 43951663
Clearly this is not right as I have a solution when I optimise this in
excel I get the following when I solve to minimise the portfolio risk:
Constraints
GBP 0.6000
USD 0.2000
EUR 0.1000
JPY 0.0500
CHF 0.0500
Portfolio 1.0000
Weights
GBP-U USD-U EUR-U JPY-U CHF-U USD-H EUR-H JPY-H CHF-H
0.6000 0.0000 0.0000 0.0423 0.0000 0.2000 0.1000 0.0077 0.0500
Portfolio Stdev 0.01562
Portfolio Mean 0.00424
Kind regards
Pierre
************************************************************
HSBC Bank plc
Registered Office: 8 Canada Square, London E14 5HQ
Registered in England - Number 14259
Authorised by the Prudential Regulation Authority and regulated by the
Financial Conduct Authority and the Prudential Regulation Authority
************************************************************
-----------------------------------------
SAVE PAPER - THINK BEFORE YOU PRINT!
This E-mail is confidential.
It may also be legally privileged. If you are not the addressee you may not copy,
forward, disclose or use any part of it. If you have received this message in error,
please delete it and all copies from your system and notify the sender immediately by
return E-mail.
Internet communications cannot be guaranteed to be timely secure, error or virus-free.
The sender does not accept liability for any errors or omissions.
More information about the R-SIG-Finance
mailing list