Bugfix/fix dividend accumulation in symbol metrics (#3152)
* Fix total dividend calculation * Update changelog
This commit is contained in:
parent
3b895afc9e
commit
841bd5c33f
@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
- Fixed an issue in the dividend calculation of the portfolio holdings
|
||||||
- Fixed the date conversion of the import of historical market data in the admin control panel
|
- Fixed the date conversion of the import of historical market data in the admin control panel
|
||||||
|
|
||||||
## 2.63.2 - 2024-03-12
|
## 2.63.2 - 2024-03-12
|
||||||
|
@ -602,8 +602,6 @@ export class PortfolioCalculator {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const {
|
const {
|
||||||
dividend,
|
|
||||||
dividendInBaseCurrency,
|
|
||||||
grossPerformance,
|
grossPerformance,
|
||||||
grossPerformancePercentage,
|
grossPerformancePercentage,
|
||||||
grossPerformancePercentageWithCurrencyEffect,
|
grossPerformancePercentageWithCurrencyEffect,
|
||||||
@ -615,6 +613,8 @@ export class PortfolioCalculator {
|
|||||||
netPerformanceWithCurrencyEffect,
|
netPerformanceWithCurrencyEffect,
|
||||||
timeWeightedInvestment,
|
timeWeightedInvestment,
|
||||||
timeWeightedInvestmentWithCurrencyEffect,
|
timeWeightedInvestmentWithCurrencyEffect,
|
||||||
|
totalDividend,
|
||||||
|
totalDividendInBaseCurrency,
|
||||||
totalInvestment,
|
totalInvestment,
|
||||||
totalInvestmentWithCurrencyEffect
|
totalInvestmentWithCurrencyEffect
|
||||||
} = this.getSymbolMetrics({
|
} = this.getSymbolMetrics({
|
||||||
@ -629,8 +629,8 @@ export class PortfolioCalculator {
|
|||||||
hasAnySymbolMetricsErrors = hasAnySymbolMetricsErrors || hasErrors;
|
hasAnySymbolMetricsErrors = hasAnySymbolMetricsErrors || hasErrors;
|
||||||
|
|
||||||
positions.push({
|
positions.push({
|
||||||
dividend,
|
dividend: totalDividend,
|
||||||
dividendInBaseCurrency,
|
dividendInBaseCurrency: totalDividendInBaseCurrency,
|
||||||
timeWeightedInvestment,
|
timeWeightedInvestment,
|
||||||
timeWeightedInvestmentWithCurrencyEffect,
|
timeWeightedInvestmentWithCurrencyEffect,
|
||||||
averagePrice: item.averagePrice,
|
averagePrice: item.averagePrice,
|
||||||
@ -861,8 +861,6 @@ export class PortfolioCalculator {
|
|||||||
const currentExchangeRate = exchangeRates[format(new Date(), DATE_FORMAT)];
|
const currentExchangeRate = exchangeRates[format(new Date(), DATE_FORMAT)];
|
||||||
const currentValues: { [date: string]: Big } = {};
|
const currentValues: { [date: string]: Big } = {};
|
||||||
const currentValuesWithCurrencyEffect: { [date: string]: Big } = {};
|
const currentValuesWithCurrencyEffect: { [date: string]: Big } = {};
|
||||||
let dividend = new Big(0);
|
|
||||||
let dividendInBaseCurrency = new Big(0);
|
|
||||||
let fees = new Big(0);
|
let fees = new Big(0);
|
||||||
let feesAtStartDate = new Big(0);
|
let feesAtStartDate = new Big(0);
|
||||||
let feesAtStartDateWithCurrencyEffect = new Big(0);
|
let feesAtStartDateWithCurrencyEffect = new Big(0);
|
||||||
@ -892,6 +890,8 @@ export class PortfolioCalculator {
|
|||||||
[date: string]: Big;
|
[date: string]: Big;
|
||||||
} = {};
|
} = {};
|
||||||
|
|
||||||
|
let totalDividend = new Big(0);
|
||||||
|
let totalDividendInBaseCurrency = new Big(0);
|
||||||
let totalInvestment = new Big(0);
|
let totalInvestment = new Big(0);
|
||||||
let totalInvestmentFromBuyTransactions = new Big(0);
|
let totalInvestmentFromBuyTransactions = new Big(0);
|
||||||
let totalInvestmentFromBuyTransactionsWithCurrencyEffect = new Big(0);
|
let totalInvestmentFromBuyTransactionsWithCurrencyEffect = new Big(0);
|
||||||
@ -912,8 +912,6 @@ export class PortfolioCalculator {
|
|||||||
return {
|
return {
|
||||||
currentValues: {},
|
currentValues: {},
|
||||||
currentValuesWithCurrencyEffect: {},
|
currentValuesWithCurrencyEffect: {},
|
||||||
dividend: new Big(0),
|
|
||||||
dividendInBaseCurrency: new Big(0),
|
|
||||||
grossPerformance: new Big(0),
|
grossPerformance: new Big(0),
|
||||||
grossPerformancePercentage: new Big(0),
|
grossPerformancePercentage: new Big(0),
|
||||||
grossPerformancePercentageWithCurrencyEffect: new Big(0),
|
grossPerformancePercentageWithCurrencyEffect: new Big(0),
|
||||||
@ -934,6 +932,8 @@ export class PortfolioCalculator {
|
|||||||
timeWeightedInvestmentValues: {},
|
timeWeightedInvestmentValues: {},
|
||||||
timeWeightedInvestmentValuesWithCurrencyEffect: {},
|
timeWeightedInvestmentValuesWithCurrencyEffect: {},
|
||||||
timeWeightedInvestmentWithCurrencyEffect: new Big(0),
|
timeWeightedInvestmentWithCurrencyEffect: new Big(0),
|
||||||
|
totalDividend: new Big(0),
|
||||||
|
totalDividendInBaseCurrency: new Big(0),
|
||||||
totalInvestment: new Big(0),
|
totalInvestment: new Big(0),
|
||||||
totalInvestmentWithCurrencyEffect: new Big(0)
|
totalInvestmentWithCurrencyEffect: new Big(0)
|
||||||
};
|
};
|
||||||
@ -954,8 +954,6 @@ export class PortfolioCalculator {
|
|||||||
return {
|
return {
|
||||||
currentValues: {},
|
currentValues: {},
|
||||||
currentValuesWithCurrencyEffect: {},
|
currentValuesWithCurrencyEffect: {},
|
||||||
dividend: new Big(0),
|
|
||||||
dividendInBaseCurrency: new Big(0),
|
|
||||||
grossPerformance: new Big(0),
|
grossPerformance: new Big(0),
|
||||||
grossPerformancePercentage: new Big(0),
|
grossPerformancePercentage: new Big(0),
|
||||||
grossPerformancePercentageWithCurrencyEffect: new Big(0),
|
grossPerformancePercentageWithCurrencyEffect: new Big(0),
|
||||||
@ -976,6 +974,8 @@ export class PortfolioCalculator {
|
|||||||
timeWeightedInvestmentValues: {},
|
timeWeightedInvestmentValues: {},
|
||||||
timeWeightedInvestmentValuesWithCurrencyEffect: {},
|
timeWeightedInvestmentValuesWithCurrencyEffect: {},
|
||||||
timeWeightedInvestmentWithCurrencyEffect: new Big(0),
|
timeWeightedInvestmentWithCurrencyEffect: new Big(0),
|
||||||
|
totalDividend: new Big(0),
|
||||||
|
totalDividendInBaseCurrency: new Big(0),
|
||||||
totalInvestment: new Big(0),
|
totalInvestment: new Big(0),
|
||||||
totalInvestmentWithCurrencyEffect: new Big(0)
|
totalInvestmentWithCurrencyEffect: new Big(0)
|
||||||
};
|
};
|
||||||
@ -1219,8 +1219,10 @@ export class PortfolioCalculator {
|
|||||||
totalUnits = totalUnits.plus(order.quantity.mul(getFactor(order.type)));
|
totalUnits = totalUnits.plus(order.quantity.mul(getFactor(order.type)));
|
||||||
|
|
||||||
if (order.type === 'DIVIDEND') {
|
if (order.type === 'DIVIDEND') {
|
||||||
dividend = dividend.plus(order.quantity.mul(order.unitPrice));
|
const dividend = order.quantity.mul(order.unitPrice);
|
||||||
dividendInBaseCurrency = dividendInBaseCurrency.plus(
|
|
||||||
|
totalDividend = totalDividend.plus(dividend);
|
||||||
|
totalDividendInBaseCurrency = totalDividendInBaseCurrency.plus(
|
||||||
dividend.mul(exchangeRateAtOrderDate ?? 1)
|
dividend.mul(exchangeRateAtOrderDate ?? 1)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -1495,7 +1497,7 @@ export class PortfolioCalculator {
|
|||||||
Time weighted investment with currency effect: ${timeWeightedAverageInvestmentBetweenStartAndEndDateWithCurrencyEffect.toFixed(
|
Time weighted investment with currency effect: ${timeWeightedAverageInvestmentBetweenStartAndEndDateWithCurrencyEffect.toFixed(
|
||||||
2
|
2
|
||||||
)}
|
)}
|
||||||
Total dividend: ${dividend.toFixed(2)}
|
Total dividend: ${totalDividend.toFixed(2)}
|
||||||
Gross performance: ${totalGrossPerformance.toFixed(
|
Gross performance: ${totalGrossPerformance.toFixed(
|
||||||
2
|
2
|
||||||
)} / ${grossPerformancePercentage.mul(100).toFixed(2)}%
|
)} / ${grossPerformancePercentage.mul(100).toFixed(2)}%
|
||||||
@ -1520,8 +1522,6 @@ export class PortfolioCalculator {
|
|||||||
return {
|
return {
|
||||||
currentValues,
|
currentValues,
|
||||||
currentValuesWithCurrencyEffect,
|
currentValuesWithCurrencyEffect,
|
||||||
dividend,
|
|
||||||
dividendInBaseCurrency,
|
|
||||||
grossPerformancePercentage,
|
grossPerformancePercentage,
|
||||||
grossPerformancePercentageWithCurrencyEffect,
|
grossPerformancePercentageWithCurrencyEffect,
|
||||||
initialValue,
|
initialValue,
|
||||||
@ -1535,6 +1535,8 @@ export class PortfolioCalculator {
|
|||||||
netPerformanceValuesWithCurrencyEffect,
|
netPerformanceValuesWithCurrencyEffect,
|
||||||
timeWeightedInvestmentValues,
|
timeWeightedInvestmentValues,
|
||||||
timeWeightedInvestmentValuesWithCurrencyEffect,
|
timeWeightedInvestmentValuesWithCurrencyEffect,
|
||||||
|
totalDividend,
|
||||||
|
totalDividendInBaseCurrency,
|
||||||
totalInvestment,
|
totalInvestment,
|
||||||
totalInvestmentWithCurrencyEffect,
|
totalInvestmentWithCurrencyEffect,
|
||||||
grossPerformance: totalGrossPerformance,
|
grossPerformance: totalGrossPerformance,
|
||||||
|
@ -7,8 +7,6 @@ export interface SymbolMetrics {
|
|||||||
currentValuesWithCurrencyEffect: {
|
currentValuesWithCurrencyEffect: {
|
||||||
[date: string]: Big;
|
[date: string]: Big;
|
||||||
};
|
};
|
||||||
dividend: Big;
|
|
||||||
dividendInBaseCurrency: Big;
|
|
||||||
grossPerformance: Big;
|
grossPerformance: Big;
|
||||||
grossPerformancePercentage: Big;
|
grossPerformancePercentage: Big;
|
||||||
grossPerformancePercentageWithCurrencyEffect: Big;
|
grossPerformancePercentageWithCurrencyEffect: Big;
|
||||||
@ -41,6 +39,8 @@ export interface SymbolMetrics {
|
|||||||
[date: string]: Big;
|
[date: string]: Big;
|
||||||
};
|
};
|
||||||
timeWeightedInvestmentWithCurrencyEffect: Big;
|
timeWeightedInvestmentWithCurrencyEffect: Big;
|
||||||
|
totalDividend: Big;
|
||||||
|
totalDividendInBaseCurrency: Big;
|
||||||
totalInvestment: Big;
|
totalInvestment: Big;
|
||||||
totalInvestmentWithCurrencyEffect: Big;
|
totalInvestmentWithCurrencyEffect: Big;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user