Source data
The source data about your investments must be entered into the PortfolioSlicer-src.xlsx Excel workbook. This workbook has multiple sheets and each sheet contains data for one table (or subject area). The main tables are "Date", "Trans", "Portfolio", "TransType" and "Symbol". Other tables are used just for specific, non-critical reports or are tables used to group calculated measures. Below you can find an explanation for each table and column.
Note: When entering source data into Excel workbooks, you have to make sure that each worksheet does not have empty rows or columns. After you empty cell data, excel might still treat that row/column as "used" and load it into PowerPivot. This is most common error that was reported by Portfolio Slicer user. To see what columns/rows are used in your worksheet you need to press "CTRL+END" - your cursor should jump to cell in the last row and last column. Delete empty rows and columns and press "CTRL+END" again - cursor should go to last used cell.
Table "Portfolio"
Note: You must populate this table with values specific to your environment.
This table contains a list of portfolios for your investments. It is up to the user as to what defines a portfolio. Often, this is an account in your bank or with your broker.
This table has the following columns:
| Column Name | Explanation |
| Portfolio | Portfolio name |
| Portfolio Group | Portfolio group name. Used to group portfolios. |
| Portfolio Tax | Portfolio tax designation. Example: IRA, RRSP, TFSA. Used to group portfolios. |
| Portfolio Currency | Portfolio currency. |
Table “Trans”
Note: You must populate this table with values specific to your environment.
The “Trans” table is a primary table for Portfolio Slicer that contains all of the transactions for your selected tracking period. Ideally, this table should have every record that is in your portfolio's bank statement. But you can start by entering just major transactions and check reports generated from that data. Later add dividends and distributions and see a complete picture of your investments. It is understood that entering all of the transactions takes time, but at this point there is no automated way of generating dividend payment information.
This table has the following columns:
| Column Name | Explanation |
| Portfolio | Transaction Portfolio, value should exists in Portfolio.Portfolio column |
| TransDate | Transaction date, value should exists in Date.Date column |
| TransType | Transaction type, value should exists in TransType.TransType column |
| TransSymbolName | Symbol or Symbol alias for this transaction. Value should exists in Symbol.Symbol or luSymbolAlias.[Symbol Ticker or Name] column. If TransSymbolName is found in Symbol.Symbol column then this is actually symbol for this transaction. If no, then will look for Symbol in luSymbolAlias.[Symbol table. |
| TransQtyStmt | Transaction Quantity. When buying/selling stocks - this would be number of shares. For cash transactions (like deposits, withdrawals) use value 1. |
| TransPrice | Transaction price per unit or total amount. If related value TransType.IgnoreQtyFlag is set to 1, then this is total transaction amount, otherwise this is amount per TransQtyStmt. When buying stock this would be price per 1 share. When depositing money this would be total deposit amount. |
| TransFee | Transaction fee. If there is no fee associated with this transaction, leave this field empty. If record has ExchRate field not empty, then transaction fee will be calculated by multiplying TransFee and ExchRate to get total transaction fee in the currency of Portfolio. |
| Currency | Transaction currency. This is just a reference field that will not be used in any calculations. Actual symbol currency is defined in Symbol table. Actual Portfolio currency is defined in Portfolio table. |
| ExchRate | Exchange rate applied for this transaction on TransPrice and TransFee fields. Used just when you buy symbol with currency that is different from portfolio currency. For example it is common for Canadian investors to buy US stocks into canadian portfolio. This exchange rate is used to calculate total transaction cash amount effect in portfolio currency. If currency of symbol and portfolio matches, you can leave this field empty. |
| Comment | Comment about this transaction. |
| TransCalcAmnt | Calculated column. Calculated transaction amount, used just to confirm that calculated transaction cash impact matches bank statements. |
| Symbol | Calculated column. This field should not be empty - empty value indicates that symbol/name is not defined in Symbol table or luSymbolAlias table. At first we check if TransSymbolName column has value in Symbol table. If that is the case, then this value will be copied to Symbol column. Otherwise we check for TransSymbolName value in luSymbolAlias name and if found, return actual symbol. |
| TransID | Calculated column. Increment by 1 for each row. Could be used for audit purpose. |
| RecordCheck | Calculated column. Shows error or "Record OK" depending on data in current row. |
Table “TransType”
Note: You might need to change/add values to this table.
This table already comes with set of predefined transaction types that most likely do not need to change. You can modify the names of existing transaction types, but you have to make sure that every transaction type used in the Trans table, has a matching record here. The Transaction Type records in this table has a set of [*Sign] and [*Flag] attributes that specifies how each transaction type affects the portfolio's cash value and/or symbol quantity and book value.
The "TransType" table is a cricital table that defines what happens for each transaction type:
- Transaction might change the quantity on hand for specific symbol (Columns IgnoreQtyFlag, QtySign)
- Transaction might increase or decrease the cash amount in portfolio (Column CashTransSign).
- Transaction might change the book value for specific symbol (column BookValueSign)
- Transaction might be defined as beeing a "dividend" payment (column DividendFlag)
- Transaction might be defined as beeing a "deposit" into portfolio (column DepositFlag)
This table has the following columns:
| Column Name | Explanation |
| TransType | Transaction type |
| TransTypeGroup | Transaction type group. Used to group transaction. |
| Description | Transaction type description. Used to explain in more details what happens after this transaction. |
| IgnoreQtyFlag | Values 0/1. For some transaction types you might want to ignore quantity provided in transactions table. For example, we might have transaction “300 MSFT shares paid 30$ dividend”. In such transaction we can ignore quantity 300 (set this field value to 1) as we care just about 30$ added to cash value. But you might also have transaction “300 MSFT shares paid 10 cents each dividend”. For such case we would set this field value to 0. |
| QtySign | Values -1/0/1. Value -1 means that this transaction will decrease symbol quantity held in portfolio by TransQty count. Value 0 means that this transaction does not have any impact to symbol quantity in portfolio. Value 1 means that this transaction will increase symbol quantity held in portoflio by TransQty count. |
| CashTransSign | Values -1/0/1. Value -1 means that this transaction will reduce portfolio cash value by total transaction amount. Value 0 means that this transaction has no impact to portfolio cash value. Value 1 means that this transaction will increase portfolio cash value by total transaction amount. |
| BookValueSign | Values -1/0/1. Value -1 means that this transaction will reduce book value for this symbol by total transaction amount. Value 0 means that this transaction has no impact to symbol book value. Value 1 means that this transaction will increase book value for this symbol by total transaction amount. |
| DividendFlag | Values 0/1. Value 0 means that this transaction has no impact to portfolio dividend payments. Value 1 means that this transaction total amount will be used to add to total portfolio dividends received. |
| DepositTransSign | Values -1/0/1. Value -1 means money are withdrawn from portfolio cash. Value 0 means this transaction has no impact to deposit. Value 1 means money were added to portfolio cash. |
Table “Symbol”
Note: You must populate values in this table.
This table lists all of the symbols and their attributes used in your investment portfolios. Most of the attributes are used to group symbols one way or another (by Allocation, by style, type, etc). All of these attribute values are not critical and can be defined any way you want.
This table should have one special Symbol "* Cash". This symbol is used to track the cash amount in your portfolio.
This table has the following columns:
| Column Name | Explanation |
| Symbol | Symbol |
| TickerAlias | Symbol alias. Might be used for different symbol presentation in reports. |
| Equity Name | Symbol/Equity name |
| Allocation | Symbol allocation (1). Used for symbol groupings in reports. |
| Allocation2 | Symbol allocation (2). Used for symbol groupings in reports. |
| Allocation3 | Symbol allocation (3). Used for symbol groupings in reports. |
| Category | Symbol category |
| Symbol Sector | Symbol Sector. |
| Symbol Industry | Symbol industry. |
| Stock Style | Symbol investment style. Example: Mid Value, Large Value, etc |
| Stock Type | Symbol investment type. Example: High Yeld, Aggressive Growth, etc |
| Symbol Type | Symbol type. Example: Cash, Equity, ETF, Mutual Fund, Other |
| Currency | Currency that this symbol is traded with |
| Sector Defined | Calculated column that shows if symbol has sector defined in table SymbolSector |
| Region Defined | Calculated column that shows if symbol has country/region defined in table SymbolCountry |
Table “luSymbolAlias”
Note: You might need to populate values in this table.
The data from this table is not loaded into the PowerPivot database. It is just used to lookup the Symbol in the Trans table based on a symbol alias or name. This is done so that in many cases when you enter data into Trans table, you copy it from bank statements that lists names and not symbols. This extra lookup helps speed up the transaction-entering process by resolving names to proper symbols.
This table has following columns:
| Column Name | Explanation |
| SymbolAlias | Name or alternative ticker for symbol |
| Symbol | Symbol matching Symbol table value. |
Table “SymbolSector”
Note: You will need to populate this table if you want to report your investment holding detail splits by sector.
If the investment for this Symbol is assigned to one sector, then you just need to enter one record per symbol with Percent=100%. However, if one symbol's investments are split between different sectors, then you should enter the percentage for each sector. It is very important that the sum of the Percent field for each symbol is exactly 100%.
This table has the following columns:
| Column Name | Explanation |
| Symbol | Symbol for which this sector record is defined for |
| Sector | Sector. |
| Sector Group | Sector group |
| Sensitivity | Calculated column. Sensitivity of sector. This is calculated value from relationships defined in table luSectorSensitivity |
| Percent | Sector percentage allocation for this symbol. It is very important that sum of Percent field for each symbol would be 100% |
Table “luSectorSensitivity”
Note: You might want to change data in this table if the existing sensitivity for sector relationship does not work for you or if you want to add more sectors.
Data from this table is not loaded into the PowerPivot workbook, but it is used by the table “SymbolSector” to calculate sensitivity for a specific sector.
This table has following columns:
| Column Name | Explanation |
| Sector | Standard sector that symbol belongs to. |
| Sensitivity | Sector sensitivity. Values used in demo implementation are “Cyclical”, “Sensitive”, “Defensive” and “Other” |
Table “SymbolCountry”
Note: If you want to be able to see your investment allocation by country, then you need to maintain data in this table. Otherwise you can ignore this table and delete one pie chart report from existing dashboards
The data from this table is used to split symbol allocation by location. The majority of symbols have investments located in one country. For these symbols you would have just one record in this table specifying it's country/region and 100% in the Percent field. For symbols that have investments in multiple countries (for example: VEA), you would have to specify the investment percentage in each country. It is very important that the sum of the Percent fields for each symbol is 100%
This table has following columns:
| Column Name | Explanation |
| Symbol | Symbol for which this record contains percentage |
| Country | Country where investments for this symbol are located |
| Region | Region where investments for this symbol are located |
| Percent | Percentage of symbol investment in specified location. It is very important that sum of Percent field for each symbol would be 100% |
Table “Currency”
Note: You might need to change this table, if you trade in currencies other than USD or CAD.
The list of currencies used in your investment portfolios. The values in this table should match the Currency values in the Symbol table.
This table has following columns:
| Column Name | Explanation |
| Currency | Code of the currency. Example: CAD, USD |
| CurrencyDescription | Currency code description. Example: Canadian Dollars, US Dollars |
Table “ReportCurrency”
Note: You might need to change this table.
This table list reporting currencies. This table should have at least one value - "*Original*" that means that your report numbers will be calculated in ORIGINAL transaction currency. This table can also have other currencies that you want to use in your reporting. Portfolio Slicer sample workbook comes with values:
- CAD = Canadian $, daily exchange rate
- USD = US $, daily exchange rate
- CAD-M = Canadian $, monthly exchange rate
- USD-M = US $, monthly exchange rate
Table “ReportHold”
Note: You do not need to change this table.
This is an empty table that is used to group calculated measures related to the current investment's Holdings report.
Table “ReportSales”
Note: You do not need to change this table.
This is an empty table that is used just to group calculated measures related to Sales reporting.
Table “ReportSymbol”
Note: You do not need to change this table.
This is an empty table that is used just to group calculated measures related to Symbol reporting.
Table “XIRR”
Note: You do not need to change/add any data to this table.
This table is used for the annualized Rate of Return calculation. Only users with a very advanced understanding of the PowerPivot DAX language could consider changing records in this table (for example to increase Rate of Return calculation precision). This table is also used to group calculated measures related to Rate of Return calculations.
You can also watch the video below on how to enter source data into the Portfolio Slicer workbook
