[R] Non-linear optimisation

Eduard Pieterse (Macquarie Securities) Eduard.Pieterse at macquarie.com
Fri Feb 6 12:24:49 CET 2009


Hi Ravi,

To give you some background:

The function compute_strategy_before_fees returns portfolio returns and
standard deviation. Our optimal portfolio will maximise the returns
whilst keeping the standard deviation at a certain level.

We have an input matrix C that the function uses to calculate the asset
weights in the portfolio over time. Problem is that I am a complete R
novice and would not know where to start in optimising this in R.

Could you please give some guidance on using the R functions?

Thanks,
Eduard 

-----Original Message-----
From: Ravi Varadhan [mailto:rvaradhan at jhmi.edu] 
Sent: 05 February 2009 19:37
To: Eduard Pieterse (Macquarie Securities)
Cc: r-help at r-project.org
Subject: Re: [R] Non-linear optimisation

Hi,

I don't understand your Matlab code.  However, let me say this:

 - you could use "L-BFGS-B" algorithm in optim() or nlminb(), if you
only have box constraints

 - you could use ConstrOptim(), if you only have linear inequality
constraints

 - you could use Rdonlp2 if you have more general equality/inequality
constraints

Best,
Ravi.

____________________________________________________________________

Ravi Varadhan, Ph.D.
Assistant Professor,
Division of Geriatric Medicine and Gerontology School of Medicine Johns
Hopkins University

Ph. (410) 502-2619
email: rvaradhan at jhmi.edu


----- Original Message -----
From: ehxpieterse <eduard.pieterse at macquarie.com>
Date: Thursday, February 5, 2009 2:03 pm
Subject: [R]  Non-linear optimisation
To: r-help at r-project.org


>  Hi there,
>  
>  I have a piece of Matlab code I use to optimise a trding strategy. If

> there  are any Matlab/R specialists out there, I would appreciate your

> help in  doing the exact same optimisation in R.
>  
>  I suspect I would use nlm() in R but am not sure where to define my  
> constraints.
>  
>  I have attached my Matlab code below for reference.
>  
>  Many thanks.
>  
>  Constraints
>  function [c,ceq]=TriskellConstraints(X)  global objFunc_vol;  [a,b] =

> objFunc_vol(X);
>  c(1) = b-6.5;
>  c(2) = std(X(:))-6.5;
>  ceq = [];
>  end
>  
>  Optimise
>  global objFunc_vol
>  objFunc_vol = @(C) compute_strategy_before_fees(prices, C, floor, 
> cap,  m_ret_reb, prices_TR, hedge_fund, vg, euribor, last_reb_date, 
> Maturity,  fixed_fees, var_fees);
>  
>  objFunc_vol(C);
>  
>  objFunc = @(C) compute_strategy_before_fees(prices, C, floor, cap,  
> m_ret_reb, prices_TR, hedge_fund, vg, euribor, last_reb_date, 
> Maturity,  fixed_fees, var_fees);
>  
>  objFunc(C);
>  
>  options = optimset('MaxIter',10000000,'MaxFunEvals',10000000);
>  
>  tic;
>  
>  % OPTIMISE
>  
>  %M =
>  
> fmincon(objFunc,C,[],[],[],[],repmat(-20,12,9),repmat(20,12,9), at Triske
> llConstraints,options);
>  M =
>  
> fmincon(objFunc_vol,C,[],[],[],[],repmat(-20,12,9),repmat(20,12,9), at Tr
> iskellConstraints,options);  [Z, ZZ] = 
> compute_strategy_after_fees(prices, C, floor, cap, m_ret_reb,  
> prices_TR, Hedge_Fund, vg, euribor, last_reb_date, Maturity, 
> fixed_fees,  var_fees, dates, variation_cap_property, eurusd);  [Y, 
> YY] = compute_strategy_after_fees(prices, M, floor, cap, m_ret_reb,  
> prices_TR, Hedge_Fund, vg, euribor, last_reb_date, Maturity, 
> fixed_fees,  var_fees, dates, variation_cap_property, eurusd);
>  
>  timespent = toc/60; %converts to minutes
>  
>  
>  --
>  View this message in context: 
>  Sent from the R help mailing list archive at Nabble.com.
>  
>  ______________________________________________
>  R-help at r-project.org mailing list
>  
>  PLEASE do read the posting guide
>  and provide commented, minimal, self-contained, reproducible code. 

If there is any advice in this email, it is general advice only and has been prepared by Macquarie Group or one of its related entities (“Macquarie”). 

Macquarie has made every reasonable effort to ensure the information provided is correct, but Macquarie makes no representation nor any warranty as to whether the information is accurate, complete or up to date. To the extent permitted by law, Macquarie accepts no responsibility for any errors or misstatements, negligent or otherwise. The information provided may be based on assumptions or market conditions and may change without notice. 
Macquarie, its associates, officers or employees may also have interests in the financial products referred to in this information by acting in various roles. They may buy or sell the financial products as principal or agent and as such may effect transactions which are not consistent with any recommendations (if any in this information).  Macquarie or its associates may also receive fees or brokerage for acting in the above capacities.

The information in this email is confidential. If you ar...{{dropped:9}}




More information about the R-help mailing list