lecture 23 - purdue universitywang913/teaching/stat598w2014/lecturenotes/... · lecture 23...

34
Lecture 23 Xiaoguang Wang STAT 598W April 17, 2014 (STAT 598W) Lecture 23 1 / 34

Upload: duongkiet

Post on 19-Jul-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Lecture 23

Xiaoguang Wang

STAT 598W

April 17, 2014

(STAT 598W) Lecture 23 1 / 34

Page 2: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Outline

1 More VBA Syntax

2 Control Statements

3 Workbook and Worksheet Objects

4 Range Object

5 Applications

(STAT 598W) Lecture 23 2 / 34

Page 3: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Outline

1 More VBA Syntax

2 Control Statements

3 Workbook and Worksheet Objects

4 Range Object

5 Applications

(STAT 598W) Lecture 23 3 / 34

Page 4: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Global variables

The variables have three different scopes: procedure-level, private-globaland public-global.

Local variables: available only within the procedure. Syntax:Dim name_variable As Type

Private Global variables:

Syntax: Private name_variable As Type at the top of the module(or use the keyword Dim)Available only to other procedures within the same module.

Public Global variables:

Syntax: Public name_variable As Type at the top of the moduleAvailable only to all modules within a project.

(STAT 598W) Lecture 23 4 / 34

Page 5: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Arrays

Group of variables with the same type and name.

You can specify the array’s size by using the syntax:Dim name_array(lowerbound To upperbound) As type.

You can access elements by indexing: name_array(i).

If you want to declare a lower bound of 1 always use:Option Base 1 at the top of the module. Then just define:Dim name_array(upperbound) As type

(STAT 598W) Lecture 23 5 / 34

Page 6: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Multidimensional Arrays

VBA allows to create arrays up to 60 dimensions.

Syntax: Dim Multiarray(size_1,...,size_k)

(STAT 598W) Lecture 23 6 / 34

Page 7: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Example

Compute two uniform(0,1) numbers, store them using an array andcompute their sum.

(STAT 598W) Lecture 23 7 / 34

Page 8: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Redimension an Array

You can change the size of an array by using the ReDim statement.

Dynamic array: you don’t define the array’s size unless you use ReDim.

(STAT 598W) Lecture 23 8 / 34

Page 9: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Example

What is this code doing?

Sub example2()

Dim n, dvec() As Double

n=Range("dvec").Count

ReDim dvec(n)

End Sub

(STAT 598W) Lecture 23 9 / 34

Page 10: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Functions

Functions return values (call by a subroutine or another function).

Syntax:

Function name(arguments)

...

...

End Function

There are two types of functions:

Public: all modules can access a public function. It appears in theInsert dialog box within Excel.Private: this function can be accessed by the functions within the samemodule. (Private Function)

(STAT 598W) Lecture 23 10 / 34

Page 11: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Functions

Create a function BSCallValue(S, X, r, q, T, sigma) that computesthe BS Call option formula with continuous dividends, where S : stockprice, X : strike price, r : interest rate, q: dividend rate, T : time tomaturity and sigma: volatility.

(STAT 598W) Lecture 23 11 / 34

Page 12: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Outline

1 More VBA Syntax

2 Control Statements

3 Workbook and Worksheet Objects

4 Range Object

5 Applications

(STAT 598W) Lecture 23 12 / 34

Page 13: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Conditional Statements (If)

Syntax:

If condition Then

...

Else

...

End If

In order to do comparisons, these operators are important: Equal (=),greater than(>), not equal (<>), greater or equal to (>=).

Logical operators: And, Not and Or.

(STAT 598W) Lecture 23 13 / 34

Page 14: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Loop Statements (For)

Syntax:

For counter=a To b

...

Next

You can change the increments with the statement Step:

For counter=a To b Step c

...

Next

(STAT 598W) Lecture 23 14 / 34

Page 15: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Example

Create a function that computes n!, where n ≥ 1. (Without using excelfunctions).

(STAT 598W) Lecture 23 15 / 34

Page 16: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Conditional Statements (Select Case)

With the Select Case command, you can execute a specific codebased upon a value of a statement.

Syntax:

Select Case variable

Case value1

...

Case value2

...

Case valuek

...

End Select

The Case statement is very general, you can include comparisons orranges.

(STAT 598W) Lecture 23 16 / 34

Page 17: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Example

You can do the same example (factorial), with Select Case:

Function example5(n)

’computes n! for n>=1 (using select case)

Dim i As Integer

Dim tempn As Double

Select Case n

Case 1

example5 = 1

Case Is > 1

tempn = 1

For i = 1 To n

tempn = tempn * i

Next

example5 = tempn

End Select

End Function

(STAT 598W) Lecture 23 17 / 34

Page 18: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

More Control Statements

Do While: do instructions while a condition is true

Do While condition

...

Loop

Do Until: so instructions until a condition is satisfied

Do Until condition

...

Loop

(STAT 598W) Lecture 23 18 / 34

Page 19: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Outline

1 More VBA Syntax

2 Control Statements

3 Workbook and Worksheet Objects

4 Range Object

5 Applications

(STAT 598W) Lecture 23 19 / 34

Page 20: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Object variables

Definition of Objects: Dim object_name as Type

Assignment: Set object_name=object

Example:

Dim book2 As Workbook

Set book2 = ActiveWorkbook

MsgBox book2.Name

(STAT 598W) Lecture 23 20 / 34

Page 21: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Workbook Object

The Workbooks collection has several methods:

Open: it allows to open an existing workbook. You have to specifythe workbook path if it is not within the current folder:Workbooks.Open("path").

Save: save the current workbook: ThisWorkbook.Save("newpath")or ActiveWorkbook.Save("newpath"), or a pre-specified workbook:Workbooks("path").Save("newpath").

Activate: activate the workbook: Workbooks("path").Activate.

Close: close a specified workbook.

Add: add a new workbook to Workbooks collection: Workbooks.Add

(STAT 598W) Lecture 23 21 / 34

Page 22: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Worksheet Object

Some methods:

Add: same as before: Worksheets.Add

Delete

Copy: with its two arguments: Before and After.

Protect: password protect a worksheet so others can’t modify it.(Unprotect)

(STAT 598W) Lecture 23 22 / 34

Page 23: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Worksheet Object

Some properties:

Count: number of Worksheets in the collection.

Visible: Boolean value. (True or False)

Name

(STAT 598W) Lecture 23 23 / 34

Page 24: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

“For Each” Command

Syntax:

For Each object in collection

...

Next

Example:

Sub shownames()

Dim wb As Worksheet

For Each wb In ActiveWorkbook.Worksheets

MsgBox wb.Name

Next

End Sub

(STAT 598W) Lecture 23 24 / 34

Page 25: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

“With” statement

Syntax:

With object

.property

.method

End With

(STAT 598W) Lecture 23 25 / 34

Page 26: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Outline

1 More VBA Syntax

2 Control Statements

3 Workbook and Worksheet Objects

4 Range Object

5 Applications

(STAT 598W) Lecture 23 26 / 34

Page 27: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Range Object

The Range Object can be: a single cell, an entire column/row or aselection of multiple rows.

You can call the Range Object: Range("A1:B5") orRange("myrange").

You can call entire columns or rows by usgin the Columns and Rows

collections.

(STAT 598W) Lecture 23 27 / 34

Page 28: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Methods

Select

Union: creates a multiple area range. Example:Union(Range("A1:B2"),Range("D5:E8")).

Delete

Copy

PasteSpecial

Resize: resize a range. Arguments: Rowsize, ColumnSize.

(STAT 598W) Lecture 23 28 / 34

Page 29: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Properties

Offset: you can define a range which is an offset of a predefinedrange. Example: Range("A1:B1").Offset(2,2).

Hidden: hide a specific range. (Boolean value)

Name: name of a range within Excel worksheet.

Value

Formula

Address

(STAT 598W) Lecture 23 29 / 34

Page 30: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Properties

The most important is Cells property:

Returns the values, methods and properties of a single cell:Range("myrange").Cells(row,column)

You can change format, border style, values, names, etc. on cells.

The Cells collection has the same properties and methods that Range.

(STAT 598W) Lecture 23 30 / 34

Page 31: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Some examples

Use “ActiveCell” in the following two examples:

Example 1: Create a macro that shows the formula and the value inthe current cell.

Example 2: Create a macro that adds a border to the active cell andselect the cell located 2 cells down and 2 cells right from the activeone.

(STAT 598W) Lecture 23 31 / 34

Page 32: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Outline

1 More VBA Syntax

2 Control Statements

3 Workbook and Worksheet Objects

4 Range Object

5 Applications

(STAT 598W) Lecture 23 32 / 34

Page 33: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Binomial Trees

Reminder (see Bjork, 2009):

Bond price process:

B0 = 1

B1 = 1 + R

Stock price:

S0 = s

S1 =

{s · u with prob pu

s · d with prob pd

(STAT 598W) Lecture 23 33 / 34

Page 34: Lecture 23 - Purdue Universitywang913/teaching/stat598w2014/LectureNotes/... · Lecture 23 Xiaoguang Wang STAT 598W April 17, ... (or use the keyword Dim) ... Activate: activate the

Binomial Trees

The market model is arbitrage free iff there exist a martingale measure Q:{qu = (1+R)−d

u−d

qd = u−(1+R)u−d

and if there exists a simple contingent claim X , its arbitrage-free price is:

Π(X ) =1

1 + REQ [X ]

(STAT 598W) Lecture 23 34 / 34