Skip to content

Commit 6c4e0d7

Browse files
Add GraphQL queries for identity insights: current financials, unrealized P&L, realized returns, dividends
Add 4 new named queries used by the Wealthsimple insights page: - FetchIdentityCurrentFinancials: time-range-aware net liquidation value, net deposits, and simple returns for an identity filtered by account IDs. Supports optional $startDate for computing returns over a specific period. - FetchAccountUnrealizedPnL: unrealized P&L (amount + rate) for a specific account via account.financials.currentCombined.unrealizedPnL. - FetchIdentityRealizedReturns: realized capital gains total value with per-security breakdown (symbol, name, total value), paginated. - FetchDividendsV2: dividend income total with optional per-issuing-security breakdown (symbol, name, total value).
1 parent 10d966a commit 6c4e0d7

1 file changed

Lines changed: 4 additions & 0 deletions

File tree

ws_api/graphql_queries.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,8 @@
1515
"FetchBrokerageMonthlyStatementTransactions": "query FetchBrokerageMonthlyStatementTransactions($period: String!, $accountId: String!) {\n brokerageMonthlyStatements(period: $period, accountId: $accountId) {\n id\n statementType\n createdAt\n data {\n ... on BrokerageMonthlyStatementObject {\n ...BrokerageMonthlyStatementObject\n __typename\n }\n __typename\n }\n __typename\n }\n}\n\nfragment BrokerageMonthlyStatementObject on BrokerageMonthlyStatementObject {\n custodianAccountId\n activitiesPerCurrency {\n currency\n currentTransactions {\n ...BrokerageMonthlyStatementTransactions\n __typename\n }\n __typename\n }\n currentTransactions {\n ...BrokerageMonthlyStatementTransactions\n __typename\n }\n isMultiCurrency\n __typename\n}\n\nfragment BrokerageMonthlyStatementTransactions on BrokerageMonthlyStatementTransactions {\n balance\n cashMovement\n unit\n description\n transactionDate\n transactionType\n __typename\n}",
1616
"FetchIdentityPositions": "query FetchIdentityPositions($identityId: ID!, $currency: Currency!, $first: Int, $cursor: String, $accountIds: [ID!], $aggregated: Boolean, $currencyOverride: CurrencyOverride, $sort: PositionSort, $sortDirection: PositionSortDirection, $filter: PositionFilter, $since: PointInTime, $includeSecurity: Boolean = false, $includeAccountData: Boolean = false, $includeOneDayReturnsBaseline: Boolean = false) {\n identity(id: $identityId) {\n id\n financials(filter: {accounts: $accountIds}) {\n current(currency: $currency) {\n id\n positions(\n first: $first\n after: $cursor\n aggregated: $aggregated\n filter: $filter\n sort: $sort\n sortDirection: $sortDirection\n ) {\n edges {\n node {\n ...PositionV2\n __typename\n }\n __typename\n }\n pageInfo {\n hasNextPage\n endCursor\n __typename\n }\n totalCount\n status\n hasOptionsPosition\n hasCryptoPositionsOnly\n securityTypes\n securityCurrencies\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n}\n\nfragment SecuritySummary on Security {\n ...SecuritySummaryDetails\n stock {\n ...StockSummary\n __typename\n }\n quoteV2(currency: null) {\n ...SecurityQuoteV2\n __typename\n }\n optionDetails {\n ...OptionSummary\n __typename\n }\n __typename\n}\n\nfragment SecuritySummaryDetails on Security {\n id\n currency\n inactiveDate\n status\n wsTradeEligible\n equityTradingSessionType\n securityType\n active\n securityGroups {\n id\n name\n __typename\n }\n features\n logoUrl\n __typename\n}\n\nfragment StockSummary on Stock {\n name\n symbol\n primaryMic\n primaryExchange\n __typename\n}\n\nfragment StreamedSecurityQuoteV2 on UnifiedQuote {\n __typename\n securityId\n ask\n bid\n currency\n price\n sessionPrice\n quotedAsOf\n ... on EquityQuote {\n marketStatus\n askSize\n bidSize\n close\n high\n last\n lastSize\n low\n open\n mid\n volume: vol\n referenceClose\n __typename\n }\n ... on OptionQuote {\n marketStatus\n askSize\n bidSize\n close\n high\n last\n lastSize\n low\n open\n mid\n volume: vol\n breakEven\n inTheMoney\n liquidityStatus\n openInterest\n underlyingSpot\n __typename\n }\n}\n\nfragment SecurityQuoteV2 on UnifiedQuote {\n ...StreamedSecurityQuoteV2\n previousBaseline\n __typename\n}\n\nfragment OptionSummary on Option {\n underlyingSecurity {\n ...UnderlyingSecuritySummary\n __typename\n }\n maturity\n osiSymbol\n expiryDate\n multiplier\n optionType\n strikePrice\n __typename\n}\n\nfragment UnderlyingSecuritySummary on Security {\n id\n stock {\n name\n primaryExchange\n primaryMic\n symbol\n __typename\n }\n __typename\n}\n\nfragment PositionLeg on PositionLeg {\n security {\n id\n ...SecuritySummary @include(if: $includeSecurity)\n __typename\n }\n quantity\n positionDirection\n bookValue {\n amount\n currency\n __typename\n }\n totalValue(currencyOverride: $currencyOverride) {\n amount\n currency\n __typename\n }\n averagePrice {\n amount\n currency\n __typename\n }\n percentageOfAccount\n unrealizedReturns(since: $since) {\n amount\n currency\n __typename\n }\n marketAveragePrice: averagePrice(currencyOverride: $currencyOverride) {\n amount\n currency\n __typename\n }\n marketBookValue: bookValue(currencyOverride: $currencyOverride) {\n amount\n currency\n __typename\n }\n marketUnrealizedReturns: unrealizedReturns(currencyOverride: $currencyOverride) {\n amount\n currency\n __typename\n }\n oneDayReturnsBaselineV2(currencyOverride: $currencyOverride) @include(if: $includeOneDayReturnsBaseline) {\n baseline {\n currency\n amount\n __typename\n }\n useDailyPriceChange\n __typename\n }\n __typename\n}\n\nfragment PositionV2 on PositionV2 {\n id\n quantity\n accounts @include(if: $includeAccountData) {\n id\n __typename\n }\n percentageOfAccount\n positionDirection\n bookValue {\n amount\n currency\n __typename\n }\n averagePrice {\n amount\n currency\n __typename\n }\n marketAveragePrice: averagePrice(currencyOverride: $currencyOverride) {\n amount\n currency\n __typename\n }\n marketBookValue: bookValue(currencyOverride: $currencyOverride) {\n amount\n currency\n __typename\n }\n totalValue(currencyOverride: $currencyOverride) {\n amount\n currency\n __typename\n }\n unrealizedReturns(since: $since) {\n amount\n currency\n __typename\n }\n marketUnrealizedReturns: unrealizedReturns(currencyOverride: $currencyOverride) {\n amount\n currency\n __typename\n }\n security {\n id\n ...SecuritySummary @include(if: $includeSecurity)\n __typename\n }\n oneDayReturnsBaselineV2(currencyOverride: $currencyOverride) @include(if: $includeOneDayReturnsBaseline) {\n baseline {\n currency\n amount\n __typename\n }\n useDailyPriceChange\n __typename\n }\n strategyType\n legs {\n ...PositionLeg\n __typename\n }\n __typename\n}",
1717
"FetchCreditCardAccount": "query FetchCreditCardAccount($id: ID!) {\n creditCardAccount(id: $id) {\n ...CreditCardAccount\n __typename\n }\n}\n\nfragment CreditCardAccount on CreditCardAccount {\n id\n creditLimit\n upgradesInProgress\n balance {\n current\n outstanding\n availableCreditLimit\n pending\n __typename\n }\n cardProductId\n statementDayOfMonth\n actions\n currentCards {\n id\n actions\n cardNumber\n cardStatus\n cardVariant\n isLocked\n isPhysicalCardActivated\n isSupplementaryCard\n nameOnCard\n __typename\n }\n cards {\n id\n cardNumber\n adminActions\n lastPinCounterResetAt\n isBlocked\n isPhysicalCardActivated\n __typename\n }\n preferences {\n cardRewardRedemptionType\n __typename\n }\n __typename\n}",
18+
"FetchIdentityCurrentFinancials": "query FetchIdentityCurrentFinancials($identityId: ID!, $currency: Currency!, $startDate: Date, $accountIds: [ID!], $accountScope: AccountScope = OWN) {\n identity(id: $identityId) {\n id\n financials(filter: {accounts: $accountIds}, accountScope: $accountScope) {\n current(currency: $currency) {\n id\n netLiquidationValueV2 {\n ...Money\n __typename\n }\n netDeposits: netDepositsV2 {\n ...Money\n __typename\n }\n simpleReturns(referenceDate: $startDate) {\n amount {\n ...Money\n __typename\n }\n asOf\n rate\n referenceDate\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n}\n\nfragment Money on Money {\n amount\n cents\n currency\n __typename\n}",
19+
"FetchAccountUnrealizedPnL": "query FetchAccountUnrealizedPnL($id: ID!, $currency: Currency!) {\n account(id: $id) {\n id\n financials {\n currentCombined(currency: $currency) {\n id\n unrealizedPnL {\n amount {\n ...Money\n __typename\n }\n rate\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n}\n\nfragment Money on Money {\n amount\n cents\n currency\n __typename\n}",
20+
"FetchIdentityRealizedReturns": "query FetchIdentityRealizedReturns($identityId: ID!, $currency: Currency!, $accountIds: [ID!], $startDate: Date, $accountScope: AccountScope = OWN, $first: Int) {\n identity(id: $identityId) {\n id\n financials(filter: {accounts: $accountIds}, accountScope: $accountScope) {\n realizedReturns(currency: $currency, startDate: $startDate) {\n totalValue {\n amount\n cents\n currency\n __typename\n }\n securityBreakdown(first: $first) {\n edges {\n node {\n security {\n id\n stock {\n name\n symbol\n __typename\n }\n __typename\n }\n totalValue {\n amount\n cents\n currency\n __typename\n }\n __typename\n }\n __typename\n }\n pageInfo {\n hasNextPage\n endCursor\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n}",
21+
"FetchDividendsV2": "query FetchDividendsV2($identityId: ID!, $currency: Currency!, $accountIds: [ID!], $startDate: Date, $accountScope: AccountScope = OWN, $includeIssuingSecurityBreakdown: Boolean = false) {\n identity(id: $identityId) {\n id\n financials(filter: {accounts: $accountIds}, accountScope: $accountScope) {\n dividendsV2(startDate: $startDate, currency: $currency) {\n totalValue {\n amount\n cents\n currency\n __typename\n }\n issuingSecurityBreakdown @include(if: $includeIssuingSecurityBreakdown) {\n security {\n id\n stock {\n name\n symbol\n __typename\n }\n __typename\n }\n totalValue {\n amount\n cents\n currency\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n}",
1822
}

0 commit comments

Comments
 (0)