setScenarios
Set asset returns scenarios by direct matrix
Using a fints object for the AssetScenarios
argument of setScenarios is not recommended. Use timetable instead for financial time series. For more information, see
Convert Financial Time Series Objects (fints) to Timetables.
Description
sets asset returns scenarios by direct matrix for
obj = setScenarios(obj,AssetScenarios)PortfolioCVaR or PortfolioMAD objects.
For details on the workflows, see PortfolioCVaR Object Workflow,
and PortfolioMAD Object Workflow.
set asset returns scenarios by direct matrix for
obj = setScenarios(obj,AssetScenarios,Name,Value)PortfolioCVaR or PortfolioMAD objects
using additional options specified by one or more
Name,Value pair arguments.
Examples
Given a PortfolioCVaR object p, use the setScenarios function to set asset return scenarios.
m = [ 0.05; 0.1; 0.12; 0.18 ];
C = [ 0.0064 0.00408 0.00192 0;
0.00408 0.0289 0.0204 0.0119;
0.00192 0.0204 0.0576 0.0336;
0 0.0119 0.0336 0.1225 ];
m = m/12;
C = C/12;
AssetScenarios = mvnrnd(m, C, 20000);
p = PortfolioCVaR;
p = setScenarios(p, AssetScenarios);
p = setDefaultConstraints(p);
p = setProbabilityLevel(p, 0.95);
disp(p) PortfolioCVaR with properties:
BuyCost: []
SellCost: []
RiskFreeRate: []
ProbabilityLevel: 0.9500
Turnover: []
BuyTurnover: []
SellTurnover: []
NumScenarios: 20000
Name: []
NumAssets: 4
AssetList: []
InitPort: []
AInequality: []
bInequality: []
AEquality: []
bEquality: []
LowerBound: [4×1 double]
UpperBound: []
LowerBudget: 1
UpperBudget: 1
GroupMatrix: []
LowerGroup: []
UpperGroup: []
GroupA: []
GroupB: []
LowerRatio: []
UpperRatio: []
MinNumAssets: []
MaxNumAssets: []
ConditionalBudgetThreshold: []
ConditionalUpperBudget: []
BoundType: [4×1 categorical]
Given PortfolioMAD object p, use the setScenarios function to set asset return scenarios.
m = [ 0.05; 0.1; 0.12; 0.18 ];
C = [ 0.0064 0.00408 0.00192 0;
0.00408 0.0289 0.0204 0.0119;
0.00192 0.0204 0.0576 0.0336;
0 0.0119 0.0336 0.1225 ];
m = m/12;
C = C/12;
AssetScenarios = mvnrnd(m, C, 20000);
p = PortfolioMAD;
p = setScenarios(p, AssetScenarios);
p = setDefaultConstraints(p);
disp(p) PortfolioMAD with properties:
BuyCost: []
SellCost: []
RiskFreeRate: []
Turnover: []
BuyTurnover: []
SellTurnover: []
NumScenarios: 20000
Name: []
NumAssets: 4
AssetList: []
InitPort: []
AInequality: []
bInequality: []
AEquality: []
bEquality: []
LowerBound: [4×1 double]
UpperBound: []
LowerBudget: 1
UpperBudget: 1
GroupMatrix: []
LowerGroup: []
UpperGroup: []
GroupA: []
GroupB: []
LowerRatio: []
UpperRatio: []
MinNumAssets: []
MaxNumAssets: []
ConditionalBudgetThreshold: []
ConditionalUpperBudget: []
BoundType: [4×1 categorical]
To illustrate using the setScenarios function with AssetScenarios data continued in a timetable object, use the CAPMuniverse.mat which contains a timetable object (AssetTimeTable) for returns data.
load CAPMuniverse;
AssetsTimeTable.Properties;
head(AssetsTimeTable,5) Time AAPL AMZN CSCO DELL EBAY GOOG HPQ IBM INTC MSFT ORCL YHOO MARKET CASH
___________ _________ _________ _________ _________ _________ ____ _________ _________ _________ _________ _________ _________ _________ __________
03-Jan-2000 0.088805 0.1742 0.008775 -0.002353 0.12829 NaN 0.03244 0.075368 0.05698 -0.001627 0.054078 0.097784 -0.012143 0.00020522
04-Jan-2000 -0.084331 -0.08324 -0.05608 -0.08353 -0.093805 NaN -0.075613 -0.033966 -0.046667 -0.033802 -0.0883 -0.067368 -0.03166 0.00020339
05-Jan-2000 0.014634 -0.14877 -0.003039 0.070984 0.066875 NaN -0.006356 0.03516 0.008199 0.010567 -0.052837 -0.073363 0.011443 0.00020376
06-Jan-2000 -0.086538 -0.060072 -0.016619 -0.038847 -0.012302 NaN -0.063688 -0.017241 -0.05824 -0.033477 -0.058824 -0.10307 0.011743 0.00020266
07-Jan-2000 0.047368 0.061013 0.0587 -0.037708 -0.000964 NaN 0.028416 -0.004386 0.04127 0.013091 0.076771 0.10609 0.02393 0.00020157
setScenarios accepts a name-value pair argument name 'DataFormat' with a corresponding value set to 'prices' to indicate that the input to the function is in the form of asset prices and not returns (the default value for the 'DataFormat' argument is 'returns').
r = PortfolioCVaR; r = setScenarios(r,AssetsTimeTable,'dataformat','returns');
In addition, the setScenarios function also extracts asset names or identifiers from a timetable object when the name-value argument 'GetAssetList' set to true (its default value is false). If the 'GetAssetList' value is true, the timetable column identifiers are used to set the AssetList property of the PortfolioCVaR object. To show this, the formation of the PortfolioCVaR object r is repeated with the 'GetAssetList' flag set to true.
r = setScenarios(r,AssetsTimeTable,'GetAssetList',true);
disp(r.AssetList') {'AAPL' }
{'AMZN' }
{'CSCO' }
{'DELL' }
{'EBAY' }
{'GOOG' }
{'HPQ' }
{'IBM' }
{'INTC' }
{'MSFT' }
{'ORCL' }
{'YHOO' }
{'MARKET'}
{'CASH' }
Input Arguments
Object for portfolio, specified using a PortfolioCVaR
or PortfolioMAD object.
For more information on creating a PortfolioCVaR or
PortfolioMAD object, see
Data Types: object
Scenarios for asset returns or prices, specified as a matrix, table, or timetable that contains asset
data that can be converted into asset returns
([NumSamples-by-NumAssets]
matrix).
AssetReturns data can be:
NumSamples-by-NumAssetsmatrix.Table of
NumSamplesprices or returns at a given periodicity for an underlying single-period investment horizon for a collection ofNumAssetsassetsTimetable object with
NumSamplesobservations andNumAssetstime series
If the input data are prices, they can be converted into returns with the
DataFormat name-value pair argument, where the
default format is assumed to be 'Returns'. Be careful
using price data because portfolio optimization usually requires total
returns and not simply price returns.
This function sets up a function handle to indirectly access input
AssetScenarios without needing to make a copy of the
data.
Data Types: double | table | timetable
Name-Value Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN, where Name is
the argument name and Value is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Before R2021a, use commas to separate each name and value, and enclose
Name in quotes.
Example: p = setScenarios(p,
AssetScenarios,'DataFormat','Returns','GetAssetList',false);
Flag to convert input data as prices into returns, specified as the
comma-separated pair consisting of 'DataFormat' and a
character vector with the values:
'Returns'— Data inAssetReturnscontains asset total returns.'Prices'— Data inAssetReturnscontains asset total return prices.
Data Types: char
Flag indicating which asset names to use for the asset list, specified
as the comma-separated pair consisting of
'GetAssetList' and a logical with a value of
true or false. Acceptable
values for GetAssetList are:
false— Do not extract or create asset names.true— Extract or create asset names from table or timetable.
If a table or timetable is passed into
this function as AssetScenarios and the
GetAssetList flag is true, the
column names from the table or timetable are used as
asset names in obj.AssetList.
If a matrix is passed and the GetAssetList flag is
true, default asset names are created based on
the AbstractPortfolio property
defaultforAssetList, which is currently
'Asset'.
If the GetAssetList flag is
false, no action occurs, which is the default
behavior.
Data Types: logical
Output Arguments
Updated portfolio object, returned as a PortfolioCVaR
or PortfolioMAD object. For more information on creating
a portfolio object, see
Tips
You can also use dot notation to set asset return scenarios.
obj = obj.setScenarios(AssetScenarios);
Version History
Introduced in R2012b
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)