TotalPortfolioValuationReportV01

semt.024.001.01

Scope An account servicer sends a TotalPortfolioValuationReport to an account owner to provide detailed valuation information for a portfolio. Usage The TotalPortfolioValuationReport will be sent by the account servicer to the account owner on an agreed basis. The report may also be requested using a SecuritiesStatementQuery. The TotalPortfolioValuationReport is used to report on a portfolio without Investment Funds; or to report on a portfolio when an investment fund is regarded as a portfolio containing, only one or multiple investment funds The TotalPortfolioValuationReport may also be used to:

Message Construction

Every ISO20022 message has at the highest level what we call ‘building blocks’. Because the message is constructed as immutable records, the association is by composition. Below you can see the relationship between the message and its constituent building blocks: For comparison, see the ISO20022 official specification

classDiagram
     direction LR
%% TotalPortfolioValuationReportV01 recursion level 0 with max 0
TotalPortfolioValuationReportV01 *-- "1..1" Pagination : Pagination
TotalPortfolioValuationReportV01 *-- "1..1" Report4 : ReportGeneralDetails
TotalPortfolioValuationReportV01 *-- "1..1" SecuritiesAccount21 : AccountDetails
TotalPortfolioValuationReportV01 *-- "1..1" TotalPortfolioValuation1 : TotalPortfolioValuation
TotalPortfolioValuationReportV01 *-- "0..1" PortfolioBalance1 : Balance
TotalPortfolioValuationReportV01 *-- "0..1" SupplementaryData1 : SupplementaryData
  

Now, we will zero-in one-by-one on each of these building blocks.

Pagination building block

Page number of the message (within the report) and continuation indicator to indicate that the report is to continue or that the message is the last page of the report. Number used to sequence pages when it is not possible for data to be conveyed in a single message and the data has to be split across several pages (messages). For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% Pagination recursion level 0 with max 1
class Pagination{
    PageNumber IsoMax5NumericText
    LastPageIndicator IsoYesNoIndicator
}
  

Pagination members

Member name Description Data Type / Multiplicity
PageNumber Page number. IsoMax5NumericText - Required 1..1
LastPageIndicator Indicates the last page. IsoYesNoIndicator - Required 1..1

ReportGeneralDetails building block

General information related to the total portfolio valuation report. General characteristics of the report. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% Report4 recursion level 0 with max 1
class Report4{
    ReportNumber IsoMax5NumericText
    QueryReference IsoMax35Text
    ReportIdentification IsoMax35Text
    AuditedIndicator IsoYesNoIndicator
    ActivityIndicator IsoYesNoIndicator
}
Report4 *-- "1..1" IDateAndDateTimeChoice : ReportDateTime
Report4 *-- "0..1" IDateAndDateTimeChoice : CreationDateTime
Report4 *-- "0..1" IDateAndDateTimeChoice : PreviousReportDateTime
Report4 *-- "1..1" IFrequency8Choice : Frequency
Report4 *-- "1..1" IUpdateType4Choice : UpdateType
Report4 *-- "1..1" IStatementBasis6Choice : ReportBasis
Report4 *-- "0..1" DatePeriodDetails : ReportPeriod
Report4 *-- "0..1" IStatementSource1Choice : ReportSource
%% IDateAndDateTimeChoice recursion level 1 with max 1
%% IDateAndDateTimeChoice recursion level 1 with max 1
%% IDateAndDateTimeChoice recursion level 1 with max 1
%% IFrequency8Choice recursion level 1 with max 1
%% IUpdateType4Choice recursion level 1 with max 1
%% IStatementBasis6Choice recursion level 1 with max 1
%% DatePeriodDetails recursion level 1 with max 1
class DatePeriodDetails{
    FromDate IsoISODate
    ToDate IsoISODate
}
%% IStatementSource1Choice recursion level 1 with max 1
  

Report4 members

Member name Description Data Type / Multiplicity
ReportNumber Sequential number of the report. IsoMax5NumericText - Optional 0..1
QueryReference Identification of the SecuritiesStatementQuery message sent to request this statement. IsoMax35Text - Optional 0..1
ReportIdentification Unique identification of the report. IsoMax35Text - Optional 0..1
ReportDateTime Date and time of the report. IDateAndDateTimeChoice - Required 1..1
CreationDateTime Preparation date and time of the report. IDateAndDateTimeChoice - Optional 0..1
PreviousReportDateTime Previous report date and time. IDateAndDateTimeChoice - Optional 0..1
Frequency Specifies the frequency of the report. IFrequency8Choice - Required 1..1
UpdateType Specifies whether the report is complete or contains changes only. IUpdateType4Choice - Required 1..1
ReportBasis Specifies the type of balance on which the report is prepared. IStatementBasis6Choice - Required 1..1
ReportPeriod Period for which the report is given. DatePeriodDetails - Optional 0..1
ReportSource Specifies the source of the report. IStatementSource1Choice - Optional 0..1
AuditedIndicator Indicates whether the report is audited or not. IsoYesNoIndicator - Optional 0..1
ActivityIndicator Indicates whether there is activity or an information update reported in the report. IsoYesNoIndicator - Optional 0..1

AccountDetails building block

Details of the account. The account may represent an investment portfolio or a fund. Unambiguous identification for the account between the account owner and the account servicer. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% SecuritiesAccount21 recursion level 0 with max 1
class SecuritiesAccount21{
    BaseCurrency ActiveOrHistoricCurrencyCode
    ReportingCurrency ActiveOrHistoricCurrencyCode
    ForeignExchangeRate IsoBaseOneRate
}
SecuritiesAccount21 *-- "1..1" AccountIdentification5 : Account
SecuritiesAccount21 *-- "0..1" AccountIdentification5 : SubAccount
%% AccountIdentification5 recursion level 1 with max 1
class AccountIdentification5{
    Identification IsoMax35Text
    Name IsoMax35Text
}
AccountIdentification5 *-- "0..1" GenericIdentification30 : Type
%% AccountIdentification5 recursion level 1 with max 1
class AccountIdentification5{
    Identification IsoMax35Text
    Name IsoMax35Text
}
AccountIdentification5 *-- "0..1" GenericIdentification30 : Type
  

SecuritiesAccount21 members

Member name Description Data Type / Multiplicity
Account Account identification. AccountIdentification5 - Required 1..1
SubAccount Sub-account identification. AccountIdentification5 - Optional 0..1
BaseCurrency Base currency for the account. ActiveOrHistoricCurrencyCode - Optional 0..1
ReportingCurrency Currency chosen for reporting purposes by the account owner in agreement with the account servicer. ActiveOrHistoricCurrencyCode - Optional 0..1
ForeignExchangeRate Foreign exchange rate applied between the reporting and base currencies. It is assumed the valuation date is the same as the report date. IsoBaseOneRate - Optional 0..1

TotalPortfolioValuation building block

Valuation information of the portfolio. In some markets a fund of funds or an investment fund is regarded as a portfolio. Valuation information of the portfolio. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% TotalPortfolioValuation1 recursion level 0 with max 1
TotalPortfolioValuation1 *-- "1..1" AmountAndDirection30 : TotalPortfolioValue
TotalPortfolioValuation1 *-- "0..1" AmountAndDirection30 : PreviousTotalPortfolioValue
TotalPortfolioValuation1 *-- "0..1" AmountAndRate2 : TotalPortfolioValueChange
TotalPortfolioValuation1 *-- "1..1" AmountAndDirection30 : TotalBookValue
TotalPortfolioValuation1 *-- "0..1" AmountAndDirection30 : PreviousTotalBookValue
TotalPortfolioValuation1 *-- "0..1" AmountAndRate2 : TotalBookValueChange
TotalPortfolioValuation1 *-- "0..1" AmountAndDirection30 : TotalReceipts
TotalPortfolioValuation1 *-- "0..1" AmountAndDirection30 : TotalDisbursements
TotalPortfolioValuation1 *-- "0..1" AmountAndDirection30 : IncomeReceived
TotalPortfolioValuation1 *-- "0..1" AmountAndDirection30 : ExpensesPaid
TotalPortfolioValuation1 *-- "0..1" AmountAndDirection31 : UnrealisedGainOrLoss
TotalPortfolioValuation1 *-- "0..1" AmountAndDirection31 : RealisedGainOrLoss
TotalPortfolioValuation1 *-- "0..1" AmountAndDirection30 : AccruedIncome
TotalPortfolioValuation1 *-- "0..0" InvestmentFund1 : InvestmentFundDetails
%% AmountAndDirection30 recursion level 1 with max 1
class AmountAndDirection30{
    Amount IsoActiveOrHistoricCurrencyAndAmount
    Sign IsoPlusOrMinusIndicator
}
%% AmountAndDirection30 recursion level 1 with max 1
class AmountAndDirection30{
    Amount IsoActiveOrHistoricCurrencyAndAmount
    Sign IsoPlusOrMinusIndicator
}
%% AmountAndRate2 recursion level 1 with max 1
class AmountAndRate2{
    Rate IsoPercentageRate
}
AmountAndRate2 *-- "0..1" AmountAndDirection30 : Amount
%% AmountAndDirection30 recursion level 1 with max 1
class AmountAndDirection30{
    Amount IsoActiveOrHistoricCurrencyAndAmount
    Sign IsoPlusOrMinusIndicator
}
%% AmountAndDirection30 recursion level 1 with max 1
class AmountAndDirection30{
    Amount IsoActiveOrHistoricCurrencyAndAmount
    Sign IsoPlusOrMinusIndicator
}
%% AmountAndRate2 recursion level 1 with max 1
class AmountAndRate2{
    Rate IsoPercentageRate
}
AmountAndRate2 *-- "0..1" AmountAndDirection30 : Amount
%% AmountAndDirection30 recursion level 1 with max 1
class AmountAndDirection30{
    Amount IsoActiveOrHistoricCurrencyAndAmount
    Sign IsoPlusOrMinusIndicator
}
%% AmountAndDirection30 recursion level 1 with max 1
class AmountAndDirection30{
    Amount IsoActiveOrHistoricCurrencyAndAmount
    Sign IsoPlusOrMinusIndicator
}
%% AmountAndDirection30 recursion level 1 with max 1
class AmountAndDirection30{
    Amount IsoActiveOrHistoricCurrencyAndAmount
    Sign IsoPlusOrMinusIndicator
}
%% AmountAndDirection30 recursion level 1 with max 1
class AmountAndDirection30{
    Amount IsoActiveOrHistoricCurrencyAndAmount
    Sign IsoPlusOrMinusIndicator
}
%% AmountAndDirection31 recursion level 1 with max 1
class AmountAndDirection31{
    Amount IsoActiveOrHistoricCurrencyAndAmount
    ShortLongIndicator ShortLong1Code
}
%% AmountAndDirection31 recursion level 1 with max 1
class AmountAndDirection31{
    Amount IsoActiveOrHistoricCurrencyAndAmount
    ShortLongIndicator ShortLong1Code
}
%% AmountAndDirection30 recursion level 1 with max 1
class AmountAndDirection30{
    Amount IsoActiveOrHistoricCurrencyAndAmount
    Sign IsoPlusOrMinusIndicator
}
%% InvestmentFund1 recursion level 1 with max 1
class InvestmentFund1{
    ClassType IsoMax35Text
    TotalUnitsOutstanding IsoDecimalNumber
    TransactionalUnits IsoDecimalNumber
}
InvestmentFund1 *-- "0..1" SecurityIdentification14 : FinancialInstrumentIdentification
InvestmentFund1 *-- "0..1" AmountAndDirection30 : TotalValue
InvestmentFund1 *-- "0..0" PriceInformation10 : Price
InvestmentFund1 *-- "0..0" SupplementaryData1 : SupplementaryData
  

TotalPortfolioValuation1 members

Member name Description Data Type / Multiplicity
TotalPortfolioValue Total value of the portfolio (sum of the assets, liabilities and unrealised gain/loss) calculated according to the accounting rules. AmountAndDirection30 - Required 1..1
PreviousTotalPortfolioValue Previous total value of the portfolio. AmountAndDirection30 - Optional 0..1
TotalPortfolioValueChange Difference or change between the previous total portfolio value and the current total portfolio value. AmountAndRate2 - Optional 0..1
TotalBookValue Net asset on balance sheet - total portfolio value minus or plus the unrealised gain or loss. AmountAndDirection30 - Required 1..1
PreviousTotalBookValue Previous net asset on balance sheet. AmountAndDirection30 - Optional 0..1
TotalBookValueChange Difference or change between the previous net asset on balance sheet and the current net asset on balance sheet. AmountAndRate2 - Optional 0..1
TotalReceipts Total receipts attributable to the portfolio. AmountAndDirection30 - Optional 0..1
TotalDisbursements Total disbursements attributable to the portfolio. AmountAndDirection30 - Optional 0..1
IncomeReceived Income attributable to the portfolio. AmountAndDirection30 - Optional 0..1
ExpensesPaid Expenses attributable to the portfolio. AmountAndDirection30 - Optional 0..1
UnrealisedGainOrLoss Difference between the holding value and the book value of the portfolio. AmountAndDirection31 - Optional 0..1
RealisedGainOrLoss Difference between the realised value caused by the actual trade/re-evaluation and the book value of the portfolio. AmountAndDirection31 - Optional 0..1
AccruedIncome Accrued income. AmountAndDirection30 - Optional 0..1
InvestmentFundDetails Valuation information of the investment fund or investment fund share class. InvestmentFund1 - Unknown 0..0

Balance building block

Balance breakdown information. Balance breakdown information. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% PortfolioBalance1 recursion level 0 with max 1
PortfolioBalance1 *-- "1..0" BalanceDetails5 : SummaryBalance
PortfolioBalance1 *-- "1..0" BalanceDetails6 : DetailedBalance
%% BalanceDetails5 recursion level 1 with max 1
class BalanceDetails5{
    Unrealised Unrealised1Code
}
BalanceDetails5 *-- "1..1" IBalanceType6Choice : Type
BalanceDetails5 *-- "1..1" AmountAndDirection31 : Amount
BalanceDetails5 *-- "0..0" BalanceDetails6 : DetailedBalance
%% BalanceDetails6 recursion level 1 with max 1
class BalanceDetails6{
    Category FinancialAssetTypeCategory1Code
    Unrealised Unrealised1Code
}
BalanceDetails6 *-- "0..1" IBalanceType7Choice : Type
BalanceDetails6 *-- "1..1" AmountAndDirection31 : Amount
  

PortfolioBalance1 members

Member name Description Data Type / Multiplicity
SummaryBalance Summary balance information. BalanceDetails5 - Unknown 1..0
DetailedBalance Detailed balance information. BalanceDetails6 - Unknown 1..0

SupplementaryData building block

Additional information that can not be captured in the structured fields and/or any other specific block. Additional information that can not be captured in the structured fields and/or any other specific block. For comparison, see the ISO20022 official specification

classDiagram
   direction tb
%% SupplementaryData1 recursion level 0 with max 1
class SupplementaryData1{
    PlaceAndName IsoMax350Text
}
SupplementaryData1 *-- "1..1" IsoSupplementaryDataEnvelope1 : Envelope
%% IsoSupplementaryDataEnvelope1 recursion level 1 with max 1
  

SupplementaryData1 members

Member name Description Data Type / Multiplicity
PlaceAndName Unambiguous reference to the location where the supplementary data must be inserted in the message instance. In the case of XML, this is expressed by a valid XPath. IsoMax350Text - Optional 0..1
Envelope Technical element wrapping the supplementary data. IsoSupplementaryDataEnvelope1 - Required 1..1

Extensibility and generalization considerations

To facilitate generalized design patterns in the system, the TotalPortfolioValuationReportV01 implementation follows a specific implementaiton pattern. First of all, TotalPortfolioValuationReportV01 impleemnts IOuterRecord indicating it is the outermost logical part of the message definition. Like all message wrappers, TotalPortfolioValuationReportV01Document implements IOuterDocument. Because TotalPortfolioValuationReportV01 implements IOuterDocument, it is a suitable template parameter for IOuterDocument, and causes the internal ‘Message’ to be of type TotalPortfolioValuationReportV01.

classDiagram
    class IOuterRecord
    TotalPortfolioValuationReportV01 --|> IOuterRecord : Implements
    TotalPortfolioValuationReportV01Document --|> IOuterDocument~TotalPortfolioValuationReportV01~ : Implements
    class IOuterDocument~TotalPortfolioValuationReportV01~ {
        TotalPortfolioValuationReportV01 Message
     }
  

Document wrapper for serialization

The only real purpose TotalPortfolioValuationReportV01Document serves is to cause the document to be serialized into the ‘urn:iso:std:iso:20022:tech:xsd:semt.024.001.01’ namespace. Therefore, it will probably be the usual practice to build the message and construct this wrapper at the last minute using TotalPortfolioValuationReportV01.ToDocument() method. The returned TotalPortfolioValuationReportV01Document value will serialize correctly according to ISO 20022 standards.

classDiagram
    TotalPortfolioValuationReportV01Document *-- TotalPortfolioValuationReportV01 : Document
  

Sample of message format

This is an abbreviated version of what the message should look like.

<Document xmlns="urn:iso:std:iso:20022:tech:xsd:semt.024.001.01">
    <TtlPrtflValtnRpt>
        <Pgntn>
            <!-- Pagination inner content -->
        </Pgntn>
        <RptGnlDtls>
            <!-- ReportGeneralDetails inner content -->
        </RptGnlDtls>
        <AcctDtls>
            <!-- AccountDetails inner content -->
        </AcctDtls>
        <TtlPrtflValtn>
            <!-- TotalPortfolioValuation inner content -->
        </TtlPrtflValtn>
        <Bal>
            <!-- Balance inner content -->
        </Bal>
        <SplmtryData>
            <!-- SupplementaryData inner content -->
        </SplmtryData>
    </TtlPrtflValtnRpt>
</Document>

Data from ISO specification

This is the technical data from the specification document.

<messageDefinition
  xmi:id="_Fyx0CdHWEd-BzquC8wXy7w_-475830186"
  name="TotalPortfolioValuationReportV01"
  definition="Scope&#xD;&#xA;An account servicer sends a TotalPortfolioValuationReport to an account owner to provide detailed valuation information for a portfolio.&#xD;&#xA;Usage&#xD;&#xA;The TotalPortfolioValuationReport will be sent by the account servicer to the account owner on an agreed basis. The report may also be requested using a SecuritiesStatementQuery.&#xD;&#xA;The TotalPortfolioValuationReport is used to report on a portfolio without Investment Funds; or to report on a portfolio when an investment fund is regarded as a portfolio containing, only one or multiple investment funds&#xD;&#xA;The TotalPortfolioValuationReport may also be used to:&#xD;&#xA;- re-send a message previously sent (the CopyDuplicate value is DUPL),&#xD;&#xA;- provide a third party with a copy of a message for information (the CopyDuplicate value is COPY),&#xD;&#xA;- re-send to a third party a copy of a message for information (the CopyDuplicate value is CODU)."
  registrationStatus="Registered"
  messageSet="_6Xy9U_2bEeG1VMy7BW0rqA"
  xmlTag="TtlPrtflValtnRpt"
  rootElement="Document"
  xmlns:xmi="http://www.omg.org/XMI">
  <messageBuildingBlock
    xmi:id="_Fyx0C9HWEd-BzquC8wXy7w_822256636"
    name="Pagination"
    definition="Page number of the message (within the report) and continuation indicator to indicate that the report is to continue or that the message is the last page of the report."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="1"
    xmlTag="Pgntn"
    complexType="_Q65gBdp-Ed-ak6NoX_4Aeg_-21330104" />
  <messageBuildingBlock
    xmi:id="_Fyx0DNHWEd-BzquC8wXy7w_-958164327"
    name="ReportGeneralDetails"
    definition="General information related to the total portfolio valuation report."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="1"
    xmlTag="RptGnlDtls"
    complexType="_m_exhfNBEeCuA5Tr22BnwA_1065800194" />
  <messageBuildingBlock
    xmi:id="_Fy7lANHWEd-BzquC8wXy7w_-1255643998"
    name="AccountDetails"
    definition="Details of the account. The account may represent an investment portfolio or a fund."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="1"
    xmlTag="AcctDtls"
    complexType="_m-Itu_NBEeCuA5Tr22BnwA_1737617622" />
  <messageBuildingBlock
    xmi:id="_Fy7lAdHWEd-BzquC8wXy7w_-658833918"
    name="TotalPortfolioValuation"
    definition="Valuation information of the portfolio. In some markets a fund of funds or an investment fund is regarded as a portfolio."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="1"
    xmlTag="TtlPrtflValtn"
    complexType="_m_CFkvNBEeCuA5Tr22BnwA_780606232" />
  <messageBuildingBlock
    xmi:id="_Fy7lAtHWEd-BzquC8wXy7w_-1598852057"
    name="Balance"
    definition="Balance breakdown information."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="0"
    xmlTag="Bal"
    complexType="_m9_jwPNBEeCuA5Tr22BnwA_-274650344" />
  <messageBuildingBlock
    xmi:id="_s1GtwGtdEeCY4-KZ9JEyUQ_-1722914512"
    name="SupplementaryData"
    definition="Additional information that can not be captured in the structured fields and/or any other specific block."
    registrationStatus="Provisionally Registered"
    maxOccurs="1"
    minOccurs="0"
    xmlTag="SplmtryData"
    complexType="_Qn0zC9p-Ed-ak6NoX_4Aeg_468227563" />
  <messageDefinitionIdentifier
    businessArea="semt"
    messageFunctionality="024"
    flavour="001"
    version="01" />
</messageDefinition>

ISO Building Blocks

The following items are used as building blocks to construct this message.