File Exchange

image thumbnail

Using MATLAB to Optimize Portfolios with Financial Toolbox

version (118 KB) by Bob Taylor
Scripts and data to demonstrate the new Portfolio object in Financial Toolbox.


Updated 01 Sep 2016

View Version History

View License

A .zip file contains a series of scripts that were used in the MathWorks webinar "Using MATLAB to Optimize Portfolios with Financial Toolbox." The scripts demonstrate features of the Portfolio object and follows with case studies that demonstrate how to customize the tools for different tasks, including Sharpe/information ratio optimization and 130/30 portfolios. A readme.txt. file in the .zip folder describes how to use the scripts.

Cite As

Bob Taylor (2021). Using MATLAB to Optimize Portfolios with Financial Toolbox (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (23)

Cihan Ulas

Excellent work. Thanks.


Ewen Chan


In your comment here:
"The BlueChipStocks file contains monthly total return data for 44 stocks, 1 market index, and 1 cash index."

Are you measuring the return from month-to-month or are you measuring the return based on some other reference point? (e.g. if you had $10000 invested into that asset at the start of the availability of the asset, is your return calculated based on that hypothetical $10000 investment, or is it something else)?

Thank you.

Salvatore Pronesti



in the script, the backtest is performed in quarter, then it is converted into annual (times pfactor).

but in figure(1), the input variable 'X' is in month, then [srsk, sret] = p.estimatePortMoments(swgt) gives the risk and result also in month. Then times pfactor convert it into quarterly result but NOT in annual.


If I understood correctly, in 'part2_strategy.m' file, PortRisk, PortReturn as well as PortMean, PortSigma are converted into quarterly period (times pfactor or sort(pfactor)). So the plotted figure(1) and printed results are also in quarter NOT in annual. Not sure if you mean to do so.

Great scripts.


Dear Bob,

Thank you very much for this. I have a question regarding the Map variable. When you said "...which assets were in the universe on a given date", does it mean certain assets were simply non-existent at certain point in time (i.e. delisted from the exchange)?

meng wang

Great demo!


Ales Kudrna

Chongwu Guo

Amazing model

Bob Taylor

The Portfolio object has the methods estimateFrontierByReturn and estimateFrontierByRisk, where the former provides portfolios for specified portfolio returns and the latter provides portfolios for specified portfolio risks. Once you have portfolios from these methods, the methods estimatePortReturn and estimatePortRisk provide portfolio returns and risks for specified portfolios.

In a mean-variance framework with normally-distributed asset returns, the periodicity of the data has no impact on the portfolios on the efficient frontier. The portfolio returns and risks, however, will depend upon the periodicity of underlying asset returns.


Dear Bob Taylor,

Could you please help me with this question.

How could I find out for what the risk is for a given target return? (line 130)
I can look at the graph and make an estimation but is there a way to output the exact number??

Also I am working on daily data and plotting an efficient frontier for every three month. would it still work?

I look forward to hear back from you, any help will be high appreciated.



Bob Taylor

The webinar and scripts illustrate various ways to implement portfolio optimization under an assumption that you already have the data you need (gathering, managing, scrubbing, and forming total returns data can be a messy or easy process depending upon which data sources you might be able to access). The MATLAB Datafeed Toolbox has a good selection of sources although some sources require that you to have a license to obtain such data.

The BlueChipStocks file contains monthly total return data for 44 stocks, 1 market index, and 1 cash index. These data are in the variable Data with corresponding asset identifiers in the variable Asset and (month-end) dates in the variable Date. The last variable Map contains indicators that match the pattern of Data to identify which assets were in the universe on a given date.

If you have monthly total return data, you should be able to modify these four variables to suit your requirements and the scripts ought to work with minor modification (for example, you would have to specify the time period for backtests and so forth).

Arslan Habib, CFA

The question is how to create the file named bluechipstocks. Please help. I am stuck at this point and its useless I can not define my stocks and time period my choice. Any help will he highly appreciated. You can also send email at

Arslan Habib, CFA

In this video you can not change the stocks in the bluechipstocks sheet. How will change the bluechipstocks sheet to use stocks which i want instead of the stocks you have ?





Many thanks for part1_intro - of great help for my master's thesis' research! Question: in what way does "Confirm that Maximum Sharpe Ratio is a Maximum" fulfill it's purpose as the Sharpe generated there has different values (risk, return) from the one generated in "Maximize the Sharpe Ratio"?


where is "map" coming from? There doesn't seem to be any correspondance between map and when the assets were live.

oussama salhi

Very good model

Raymond Morano

I see the portfolio object in release 2007B

MATLAB Release Compatibility
Created with R2011a
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!