# Algorithmic Trading with MATLAB: Preliminary modeling

This demo is an introduction to using MATLAB to develop a simple trading strategy using an exponential moving average.

Copyright 2010-2012, The MathWorks, Inc. All rights reserved.

## Load in some data (Excel)

LCO is Brent Crude blend, one of the most commonly traded oil benchmarks. Here, we load in price information from August 2003 through March 2011.

```data     = xlsread('brent_1D.xlsx');
LCOClose = data(:,3);
```

## Develop a simple lead/lag technical indicator

We'll use two exponentially weighted moving averages

```[Lead, Lag] = movavg(LCOClose, 5, 20,'e');

% We can interactively create the chart we want with MATLAB's plotting
% tools, and we can automatically generate code for this cart as well.
indicatorChartMA([LCOClose, Lead, Lag])
```

## Develop a preliminary strategy based on the indicator

We will create a simple trading rule based on the moving averages' crossover.

```signal = zeros(size(LCOClose));
signal(Lead > Lag) =  1;                        % Buy  (long)
signal(Lead < Lag) = -1;                        % Sell (short)

trades  = [0; 0; diff(signal(1:end-1))];       % shift trading by 1 period
cash    = cumsum(-trades.*LCOClose);
pandl   = [0; signal(1:end-1)].*LCOClose + cash;
returns = diff(pandl);

annualScaling = sqrt(250);
sharpeRatio   = annualScaling*sharpe(returns,0); % Annual Sharpe ratio
```

Again, we can use MATLAB's plotting tools to provide a custom chart providing the information we need.

```ruleChartMA([LCOClose, Lead, Lag], [signal, pandl], sharpeRatio)
```