# Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English version of the page.

# estimateAssetMoments

Estimate mean and covariance of asset returns from data

Use the `estimateAssetMoments` function with a `Portfolio` object to estimate mean and covariance of asset returns from data.

For details on the workflow, see Portfolio Object Workflow.

## Syntax

``obj = estimateAssetMoments(obj,AssetReturns)``
``obj] = estimateAssetMoments(obj,AssetReturns,Name,Value)``

## Description

example

````obj = estimateAssetMoments(obj,AssetReturns)` estimates mean and covariance of asset returns from data for a `Portfolio` object.```

example

````obj] = estimateAssetMoments(obj,AssetReturns,Name,Value)` estimates mean and covariance of asset returns from data for a Portfolio object with additional options for one or more `Name,Value` pair arguments.```

## Examples

collapse all

To illustrate using the `estimateAssetMoments` function, generate random samples of 120 observations of asset returns for four assets from the mean and covariance of asset returns in the variables `m` and `C` with the `portsim` function. The default behavior `portsim` creates simulated data with estimated mean and covariance identical to the input moments `m` and `C`. In addition to a return series created by the `portsim` function in the variable `X`, a price series is created in the variable `Y`:

```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; X = portsim(m', C, 120); Y = ret2tick(X);```

Given asset returns and prices in the variables `X` and `Y` from above, the following examples demonstrate equivalent ways to estimate asset moments for the Portfolio object. A Portfolio object is created in `p` with the moments of asset returns set directly in the `Portfolio` function and a second Portfolio object is created in `q` to obtain the mean and covariance of asset returns from asset return data in `X` using the `estimateAssetMoments` function.

```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; X = portsim(m', C, 120); p = Portfolio('mean',m,'covar',C); q = Portfolio; q = estimateAssetMoments(q, X); [passetmean, passetcovar] = getAssetMoments(p)```
```passetmean = 0.0042 0.0083 0.0100 0.0150 ```
```passetcovar = 0.0005 0.0003 0.0002 0 0.0003 0.0024 0.0017 0.0010 0.0002 0.0017 0.0048 0.0028 0 0.0010 0.0028 0.0102 ```
`[qassetmean, qassetcovar] = getAssetMoments(q)`
```qassetmean = 0.0042 0.0083 0.0100 0.0150 ```
```qassetcovar = 0.0005 0.0003 0.0002 0.0000 0.0003 0.0024 0.0017 0.0010 0.0002 0.0017 0.0048 0.0028 0.0000 0.0010 0.0028 0.0102 ```

Notice how either approach yields the same moments. The default behavior of the `estimateAssetMoments` function is to work with asset returns. If, instead, you have asset prices, such as in the variable `Y`, the `estimateAssetMoments` function accepts a parameter name `'DataFormat'` with a corresponding value set to `'prices'` to indicate that the input to the method is in the form of asset prices and not returns (the default parameter value for `'DataFormat'` is `'returns'`). The following example compares direct assignment of moments in the Portfolio object `p` with estimated moments from asset price data in `Y` in the Portfolio object `q`:

```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; X = portsim(m', C, 120); Y = ret2tick(X); p = Portfolio('mean',m,'covar',C); q = Portfolio; q = estimateAssetMoments(q, Y, 'dataformat', 'prices'); [passetmean, passetcovar] = getAssetMoments(p)```
```passetmean = 0.0042 0.0083 0.0100 0.0150 ```
```passetcovar = 0.0005 0.0003 0.0002 0 0.0003 0.0024 0.0017 0.0010 0.0002 0.0017 0.0048 0.0028 0 0.0010 0.0028 0.0102 ```
`[qassetmean, qassetcovar] = getAssetMoments(q)`
```qassetmean = 0.0042 0.0083 0.0100 0.0150 ```
```qassetcovar = 0.0005 0.0003 0.0002 0.0000 0.0003 0.0024 0.0017 0.0010 0.0002 0.0017 0.0048 0.0028 0.0000 0.0010 0.0028 0.0102 ```

## Input Arguments

collapse all

Object for portfolio, specified using a `Portfolio` object. For more information on creating a portfolio object, see

Matrix or `fints` object that contains asset price data that can be converted to asset returns, specified by a `fints` object or `NumSamples`-by-`NumAssets` matrix for asset returns. Use the optional `'DataFormat'` argument to convert `AssetReturns` input data that is asset prices into asset returns. Be careful when using asset price data because portfolio optimization usually requires total returns and not simply price returns.

Data Types: `double`

### Name-Value Pair Arguments

Specify optional comma-separated pairs of `Name,Value` arguments. `Name` is the argument name and `Value` is the corresponding value. `Name` must appear inside single quotes (`' '`). You can specify several name and value pair arguments in any order as `Name1,Value1,...,NameN,ValueN`.

Example: ```p= estimateAssetMoments(p, Y, 'dataformat', 'prices')```

collapse all

Flag to convert input data as prices into returns, specified using a character vector with the values:

• `'Returns'` — Data in `AssetReturns` contains asset total returns.

• `'Prices'` — Data in `AssetReturns` contains asset total return prices.

Data Types: `char`

Flag indicating whether to use ECM algorithm or excludes samples with `NaN` values, specified as a logical with a value of `true` or `false`.

To handle time series with missing data (indicated with `NaN` values), the `MissingData` flag either uses the ECM algorithm to obtain maximum likelihood estimates in the presences of `NaN` values or excludes samples with `NaN` values. Since the default is `false`, it is necessary to specify `MissingData` as `true` to use the ECM algorithm.

Acceptable values for `MissingData` are:

• `false` — Do not use ECM algorithm to handle `NaN` values (exclude `NaN` values).

• `true` — Use ECM algorithm to handle `NaN` values.

For more information on the ECM algorithm, see `ecmnmle` and Multivariate Normal Regression.

Data Types: `logical`

Flag indicating which asset names to use for the asset list, specified as 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 `fints` object.

If a `fints` object is passed into this function and the `GetAssetList` flag is `true`, the series names from the `fints` object 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 `'Asset'`.

If the `GetAssetList` flag is `false`, no action occurs, which is the default behavior.

Data Types: `logical`

## Output Arguments

collapse all

Updated portfolio object, returned as a `Portfolio` object. For more information on creating a portfolio object, see

## Tips

You can also use dot notation to estimate the mean and covariance of asset returns from data.

`obj = obj.estimateAssetMoments(AssetReturns);`