Building a Portfolio Workbook

July 2010
Building a Portfolio Workbook
Portfolio workbooks are used to manage a collection of trades. This article describes how to
construct a portfolio workbook from a paste example of a FINCAD function. Tips on workbook
building and automation with the use of Visual Basic for Applications (VBA) are introduced.
Portfolio workbooks for different asset classes have been added to FINCAD Analytics Suite for
Excel to address the need in different areas.
Let’s begin building a portfolio workbook. This example uses the function aaBSG.
1. Start a new spreadsheet and paste an example of aaBSG as a portfolio at cell A4.
a. Open Analytics Suite 2010 for Excel and click Analytics Finder.
b. Select the Search tab, type the string “aaBSG” in the text box and click Search.
c. Select the function aaBSG in the search result.
d. Open the Paste Example Options dialog box by clicking the triangle mark on
the Paste Example button and select Paste Example Options as shown in
Figure 1.
e. In the Paste Example Options dialog box, select As portfolio (when available)
and the All statistics (when available) checkbox as shown in Figure 2. Click
OK to confirm the settings.
Figure 1
Figure 2
f.
Select the function aaBSG again and click Paste Example.
g. The function example is pasted horizontally across the screen as shown in
Figure 3.
Figure 3
2. Remove all combo boxes in the pasted example as shown in Figure 4. Right-click each
combo box and select Cut.
Figure 4
Combo boxes are difficult to work with in a portfolio environment. Cell links of the
combo boxes are not updated automatically when making multiple copies. Therefore,
data validation is used in place of combo boxes. The use of data validation requires
two cells. The first cell enforces the data validation and lists out all available options
as shown in Figure 5. The second cell uses the Excel function MATCH to identify the
index of the selected item as shown in Figure 6. Named ranges are used to define
the switch values.
Figure 5
Figure 6
3. Change the statistics input of the function aaBSG to an absolute reference.
a. Select cell M7.
b. In the formula bar, highlight the statistics input M6:T6 as shown in Figure 7.
Figure 7
c. Press the F4 key once to change the cell reference from relative to absolute as
indicated by the $ sign.
d. Press Ctrl + Shift + Enter to recalculate the array.
4. Create a new position in the portfolio with the use of the Macro Recorder. The macro
recorder provides a good starting point for automation and the foundation for further
customization.
a. For Microsoft Excel 2003, open the Record Macro dialog box through the Excel
menu as shown in Figure 8. Go to Tools -> Macro -> Record New Macro.
Figure 8
For Microsoft Excel 2007, the Record Macro dialog box is located under the
Developer tab as shown in Figure 9. If the ribbon is not accessible, go to the
Office icon -> Excel Options -> Popular, select Show Developer Tab in the
Ribbon, and click OK.
Figure 9
b. In the Record Macro dialog box, specify the name, the shortcut and the
description of the new macro as shown in Figure 10.
Figure 10
Improve readability by giving a meaningful function name and providing a
description.
c. Copy the contents in row 7 as shown in Figure 11. Click the row number to
select the entire row 7, then right-click and select Copy.
Figure 11
d. Insert a new position at the top of the portfolio by inserting the copied contents
into the same row as shown in Figure 12. Immediately following the copy from
the previous step (notice the flashing border), right-click the row number again
and select Insert Copied Cells.
Figure 12
e. Press the Escape key once to remove the flashing border and select cell A4.
f.
Stop the recording as shown in Figure 13. Go to Tools -> Macro -> Stop
Recording.
Figure 13
For Microsoft Excel 2007, the Stop Recording button is located under the
Developer tab as shown in Figure 14.
Figure 14
The macro is recorded in a module residing in the current workbook object. It
can be accessed through the VB Editor.
5. Add a button and assign the recorded macro to this button.
a. For Microsoft Excel 2003, make the Form toolbar visible as shown in Figure 15.
Go to View -> Toolbars and ensure Forms has a check mark beside it.
For Microsoft Excel 2007, the Form toolbar can be found in the Control section
of the Developer tab.
Figure 15
b. For Microsoft Excel 2003, click the Button button in the Forms toolbar as shown
in Figure 16. The mouse cursor turns into a + mark, indicating Excel is ready to
draw a button.
Figure 16
For Microsoft Excel 2007, click Insert from the Form Controls section and click
the Button button. (This is usually the first button on the Form Controls menu.)
Figure 17
c. Click on where the button will be located (this is the top left corner of the button)
and drag to size the button. The Assign Macro dialog box pops up when the
mouse button is released.
d. Assign the recorded macro to the button as shown in Figure 18. Select
Add_Trade from the list of macros and click OK.
Figure 18
e. Double-click and highlight the Button Name. Rename the button to Add Trade.
6. Automation is added to this portfolio and we can rerun the add trade operation by
clicking this macro button.
7. Add a formula =SUM(OFFSET($M$6,1,0,COUNT($M$6:$M$8)-1,1)) in cell M3 and
press Enter to calculate the fair value of the portfolio as shown in Figure 19. Excel
functions SUM, OFFSET and COUNT are used. This formula sums a range of cells
specified by the OFFSET function. The OFFSET function specifies a range that starts
one cell below the statistic output value (cell M6). This range is one column wide. Its
length is dynamically adjusted since new trades are added in between the statistic
output value (cell M6) and the last row of the portfolio (cell M8). The minus one after the
COUNT function adjusts the counting of rows begins one row above the first trade.
Figure 19
Never delete the last trade (bottom row) in the portfolio because the COUNT function
has a cell reference associated with this cell in order to count the number of rows in
between.
8. The option portfolio is ready to use.
Automation Enhancement with Visual Basic for Application (VBA)
The recorded macro can be used as long as the portfolio does not move away from cell A4
because there is a direct cell reference in the code.
Let’s examine the recorded code in the VB Editor:
Sub Add_Trade()
'
' Add_Trade Macro
' This macro adds a new trade into the top of the portfolio by duplicating the top row.
'
' Keyboard Shortcut: Ctrl+Shift+A
'
Rows("7:7").Select
Selection.Copy
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False
Range("A7").Select
End Sub
There are direct calls to row 7 and cell A7. The macro stops working correctly if the portfolio is
moved away from these pivotal cells. For example, if we insert a row at the top of the
worksheet, the portfolio now starts at row 8 instead.
We can improve the code in the following ways:
1. Use named ranges instead of cell references. For example, define the top left corner of
the portfolio as a named range. Let’s name cell A6 as anchor_table.
2. Since the top of the portfolio is always one cell below the named range anchor_table,
we can further generalize the subroutine by using the OFFSET function to refer to the
row. The top row of the portfolio can be referenced as
Range(“anchor_table”).Offset(1,0).
With the above changes, the resulting code becomes:
Sub Add_Trade()
'
' Add_Trade Macro
' This macro adds a new trade into the top of the portfolio by duplicating the top row.
'
' Keyboard Shortcut: Ctrl+Shift+A
'
Range("anchor_table").Offset(1, 0).EntireRow.Select
Selection.Copy
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False
Range("anchor_table").Offset(1, 0).Select
End Sub
This is one example of how we can improve the portfolio with the use of VBA. Further
customization can be implemented accordingly.
Some Variations in Building Portfolio Workbooks
When building a portfolio using a function that has table inputs shared across all trades, such as
discount factor curves and holiday lists, the paste as portfolio option is not available for such
functions. The function has to be transposed manually. It is a good idea to start building the
portfolio with one of the FINCAD swap curve templates. The swap curve templates contain one
or more discount factor curves and holiday lists. They are located in the Curves (Interest Rate)
section of the workbook menu. Simply open a swap curve template of your choice, add a new
spreadsheet, and start your work. In a single swap curve template, the discount factor curve is
referred as df_curve and the holiday list is referred as holidays.
When building a portfolio using a function that has different table inputs in each trade, such as
amortizing schedules or reset tables, this brings additional challenges in designing and building
the workbook. How are these input tables stored and arranged? How are the data inputted and
fed into the function? All of these factors affect the design and ease of use of the workbook.
Very often, additional use of VBA is required. FINCAD has recently added new portfolio
workbook solutions into FINCAD Analytics Suite 2010 For Excel that involve different table
inputs. They are:



Overnight Index Swap Portfolio,
CD CDS (Single Asset) Portfolio – ISDA Model, and
Convertible Bond (Amortizing) Portfolio.
FINCAD Professional Services
FINCAD offers custom workbook solutions. We will work with you to custom-build one or more
FINCAD Analytics Suite workbooks to address your specific valuation needs.
Disclaimer
Your use of the information in this article is at your own risk. The information in this article is provided on an “as
is” basis and without any representation, obligation, or warranty from FINCAD of any kind, whether express or
implied. We hope that such information will assist you, but it should not be used or relied upon as a substitute
for your own independent research. This document is for informational purposes only. FinancialCAD
Corporation MAKES NO WARRANTIES, EXPRESSED OR IMPLIED, IN THIS SUMMARY.
Copyright
© 2010 FinancialCAD Corporation (“FINCAD”). All rights reserved. FinancialCAD® and FINCAD® are
registered trademarks of FinancialCAD Corporation. Other trademarks are the property of their respective
holders.