Valuation: VC edition
Download
Report
Transcript Valuation: VC edition
Introduction
Downloads
Today’s work is in: matlab_lec01.m
Datasets we need today: data_bp.m,
data_vlcm.m
All course materials can be found here:
http://personal.lse.ac.uk/faviluki/fm457.html
Save all of your matlab files to H:\Matlab
Make sure same folder is selected as Current
Folder at the top of the Matlab window
What is Matlab?
“The Language of Technological
Computing”
A very fancy calculator
A simple and user friendly programming
language
A tool for data analysis and statistics
A tool to produce pretty plots
Accessing Matlab
Basics
From any LSE computer:
Start/Programs/Specialist and teaching
software/Mathematics/Matlab/Matlab R2012a
Student version can be purchased at discount:
http://www.mathworks.co.uk/academia/student_version/
One of several online tutorials:
http://www.indiana.edu/~statmath/math/matlab/gettingstarted/index.html
Matlab Website:
http://www.mathworks.com/
Course Outline
Introduction to Matlab
Simulation
Volatility
GARCH and VAR
Multiple Securities
Factor Models
Option Pricing
Fixed Income
Only by practicing what you see in
class will you get comfortable with
Matlab!!!
.m files
.m files are just
text files
Do work in .m file
Paste work into
Matlab prompt
Use ; to end lines
Save .m files
Use % to add
comments
The Matlab Prompt
This is where commands are executed
>> denotes where you type commands
Type or paste commands, then hit enter
If entering multiple commands, separate them
by ;
Multiple commands may be on same line, as
long as they are separated by ;
Ending a command with ; also tells Matlab to
not display the output
If want output displayed, do not use ;
>>2+2
ans =
4
>>
Variables
Variables are the basic building blocks
Capitalization matters, x not same as X
Matrix is a variable that contains multiple
entries, i.e. V=[.98 1.02 .99 1.07];
Matlab is great with vectors and matrices,
however, their orientation and size matter
You will get errors if try to add vectors of
different size or different orientation
Basic Operations
Always use brackets [ ] to define matrices
Always use parenthesis ( ) to call values of
matrices
The row is always first, the column is always
second, i.e. M1(3,2) is not the same as
M1(2,3)
To see which variables exist, use >>whos
To delete variables x and y, use >>clear x y
To find out size use >>size(M1)
Elementary Algebra
Use +, -, *, / for basic operations
Use ./ and .* for element by element
operations on matrices and vectors
Use / and * for matrix multiplication, but
this only makes sense if you are familiar
with Linear Algebra
Use ‘ to transpose a matrix
You can always multiply a matrix by a
scalar
You can always overwrite old variables
Ranges of numbers
Colon specifies range of numbers
>>V3=[1:5] sets V3 to be the numbers 1
through 5
>>V3=[1:3:13]’ sets V3 to be the numbers 1
through 13, skipping every 3rd. Note, it is
transposed
>>M5=M1(1:2,1:5) sets M5 to be all the
numbers in rows 1-2 and columns 1-5 of M1
>>V3=M1(:,2) sets V3 to be the whole second
column of M1
Finding Data: Yahoo
Go to finance.yahoo.com
Enter a quote and hit get quotes
Click on historical prices (left toolbar)
Enter a date range, scroll to bottom and
click Download To Spreadsheet
Open spreadsheet in Excel
Problem: dates come out weird if load
into Matlab
Problem: this gives prices, usually need
to convert them to returns
Finding Data: WRDS
Go to
http://wrds-web.wharton.upenn.edu/wrds/connect/
Follow directions to sign in
Select dataset (i.e. CRSP)
Select series (i.e. daily stocks)
Select company name (i.e. VLCM) and
which info you want (i.e. prices and holding
period return)
Click submit request and wait a moment
Open the text file
CRSP has historical stock and bond data,
COMPUSTAT has accounting data
Stock Return
For most of our purposes the correct security
return to use is the Holding Period Return
This is the return to you if you buy the
security today, sell the security tomorrow,
and keep any dividend payments from the
security
Rt+1=(Pt+1+Dt)/Pt
Sometimes 1 is subtracted so that when the
return is 3%, .03 instead of 1.03 is reported
CRSP does this
Use whatever convention you are most comfortable
with, but make sure you are consistent
CRSP output
Loading Data
Open new .m file
Type dataset=[ ];
Copy all of the data from your Excel or
text file and paste it inside [ ]
Save the .m file in Matlab’s work
directory (I recommend H:\Matlab)
For example call the file matlabin.m
Loading Data
At the Matlab prompt type: matlabin;
This executes any code in the file
matlabin.m
Inside matlabin.m you have defined a
matrix called dataset, this matrix now
exists in Matlab’s memory just like any
other matrix
Potential Problems
All rows must have same size!!!!!!!!
Matlab only knows numbers, it will give
you errors if there are any letters in what
you pasted!!!!!!!
Do not include field headings in your
copy/paste
Potential Problems
Date formats (i.e. 28-Dec-1979) may be
problematic. If pasting from Excel, I
suggest not pasting dates, or formatting
them to numbers
Don’t forget semicolon, otherwise all data
will appear on screen
This procedure may crash your computer
if dataset is too big (50000 numbers
should be no problem)
Writing Data
Matlab can write any variable to a text file
>>dlmwrite(‘filename.txt’, X, ’ ’);
You can then open this text file manually,
or have Excel open it
If open in notepad, sometimes line breaks
look weird. Just open it in something else,
like Word or Wordpad
Related functions: dlmread, xlswrite,
xlsread
Data Sets
I have created datasets from two securities
British Petroleum (BP) and Volcom (VLCM)
which are stored in files data_bp.m and
data_vlcm.m
These contain the daily return for the year
2006 for each security
When you type >>data_bp; into the Matlab
prompt a variable called bp is loaded into
Matlab
Note that the file name (data_bp) is different from the
variable name (bp), having same name will lead to
problems!
Data Sets
bp has length 251 (251 trading days in
2006)
bp has width 4, the rows are:
Perm Number (unimportant info from CRSP)
Date
Price
Holding period return
Useful functions
More functions
>>var(bp(:,4)) %variance
>>cov(bp(:,4),bp(:,4)) %similar to corrcoef but
gives the variance and covariance
>>sum(bp(:,4)) %adds up all numbers in the 4th
row of dataset
>>abs(x) %absolute value
>>x.^3 %takes powers (note, . only needed for
element by element)
>>exp(x) %exponent
>>sqrt(x) %square root
>>round(x) %rounds to nearest integer
Plots
>>[a b]=size(vlcm); t=1:a;
>>plot(t,vlcm(:,4),’b’);
Plots
>>hold on; %keeps what is on current plot
>>plot(t,bp(:,4),’r--’);
Multiple plots
>>hold off; %turns off hold on
>>subplot(2,1,1); %splits plot into 2 plots
%split is vertical, currently on top plot
>>plot(t,vlcm(:,3),’b’);
>>subplot(2,1,2); %switches to bottom plot
>>plot(vlcm(:,4),bp(:,4),’k.’);
Labels
>>xlabel(‘Volcom’);
>>ylabel(‘British Petroleum’);
>>title(‘Scatter Plot of Returns’);
Saving
your work
>>save workspace1 x y % saves the
%variables x and y in a file called
%workspace1.mat
>>save workspace1 % saves all variables
in %workspace1.mat
>>load workspace1 % loads the variables
in %workspace1.mat
>>clear all % deletes all variables
Getting help
>>help %lists topic areas, for example
%one of these is graph2d
>>help graph2d %lists functions within
%graph2d, for example plot
>>help plot %gives help on plot
>>lookfor keyword %searches for
keywords within help, pretty slow
Next week
Logic
Loops
Creating your own functions
Functions
we learned
General: whos, clear, size, dlmwrite,
save
Matrix: zeros, ones, whos
Math: +, -, *, /, ^,sum, exp, abs, sqrt,
round
Stats: min, max, mean, std, corrcoef,
var, cov
Plots: plot, hold, subplot, xlabel, ylabel,
title