mirror of https://github.com/ghostfolio/ghostfolio
committed by
GitHub
5 changed files with 104 additions and 2 deletions
@ -0,0 +1,62 @@ |
|||||
|
import { PortfolioService } from './portfolio.service'; |
||||
|
|
||||
|
describe('PortfolioService', () => { |
||||
|
let portfolioService: PortfolioService; |
||||
|
|
||||
|
beforeAll(async () => { |
||||
|
portfolioService = new PortfolioService( |
||||
|
null, |
||||
|
null, |
||||
|
null, |
||||
|
null, |
||||
|
null, |
||||
|
null, |
||||
|
null, |
||||
|
null, |
||||
|
null |
||||
|
); |
||||
|
}); |
||||
|
|
||||
|
it('Get annualized performance', async () => { |
||||
|
expect( |
||||
|
portfolioService.getAnnualizedPerformancePercent({ |
||||
|
daysInMarket: NaN, // differenceInDays of date-fns returns NaN for the same day
|
||||
|
netPerformancePercent: 0 |
||||
|
}) |
||||
|
).toEqual(0); |
||||
|
|
||||
|
expect( |
||||
|
portfolioService.getAnnualizedPerformancePercent({ |
||||
|
daysInMarket: 0, |
||||
|
netPerformancePercent: 0 |
||||
|
}) |
||||
|
).toEqual(0); |
||||
|
|
||||
|
/** |
||||
|
* Source: https://www.readyratios.com/reference/analysis/annualized_rate.html
|
||||
|
*/ |
||||
|
expect( |
||||
|
portfolioService.getAnnualizedPerformancePercent({ |
||||
|
daysInMarket: 65, // < 1 year
|
||||
|
netPerformancePercent: 0.1025 |
||||
|
}) |
||||
|
).toBeCloseTo(0.729705); |
||||
|
|
||||
|
expect( |
||||
|
portfolioService.getAnnualizedPerformancePercent({ |
||||
|
daysInMarket: 365, // 1 year
|
||||
|
netPerformancePercent: 0.05 |
||||
|
}) |
||||
|
).toBeCloseTo(0.05); |
||||
|
|
||||
|
/** |
||||
|
* Source: https://www.investopedia.com/terms/a/annualized-total-return.asp#annualized-return-formula-and-calculation
|
||||
|
*/ |
||||
|
expect( |
||||
|
portfolioService.getAnnualizedPerformancePercent({ |
||||
|
daysInMarket: 575, // > 1 year
|
||||
|
netPerformancePercent: 0.2374 |
||||
|
}) |
||||
|
).toBeCloseTo(0.145); |
||||
|
}); |
||||
|
}); |
Loading…
Reference in new issue