|
@ -142,6 +142,198 @@ describe('PortfolioCalculator', () => { |
|
|
); |
|
|
); |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
it('with orders of only one symbol and a fee', () => { |
|
|
|
|
|
const portfolioCalculator = new PortfolioCalculator( |
|
|
|
|
|
currentRateService, |
|
|
|
|
|
Currency.USD |
|
|
|
|
|
); |
|
|
|
|
|
const orders = [ |
|
|
|
|
|
{ |
|
|
|
|
|
date: '2019-02-01', |
|
|
|
|
|
name: 'Vanguard Total Stock Market Index Fund ETF Shares', |
|
|
|
|
|
quantity: new Big('10'), |
|
|
|
|
|
symbol: 'VTI', |
|
|
|
|
|
type: OrderType.Buy, |
|
|
|
|
|
unitPrice: new Big('144.38'), |
|
|
|
|
|
currency: Currency.USD, |
|
|
|
|
|
fee: new Big('5') |
|
|
|
|
|
}, |
|
|
|
|
|
{ |
|
|
|
|
|
date: '2019-08-03', |
|
|
|
|
|
name: 'Vanguard Total Stock Market Index Fund ETF Shares', |
|
|
|
|
|
quantity: new Big('10'), |
|
|
|
|
|
symbol: 'VTI', |
|
|
|
|
|
type: OrderType.Buy, |
|
|
|
|
|
unitPrice: new Big('147.99'), |
|
|
|
|
|
currency: Currency.USD, |
|
|
|
|
|
fee: new Big('10') |
|
|
|
|
|
}, |
|
|
|
|
|
{ |
|
|
|
|
|
date: '2020-02-02', |
|
|
|
|
|
name: 'Vanguard Total Stock Market Index Fund ETF Shares', |
|
|
|
|
|
quantity: new Big('15'), |
|
|
|
|
|
symbol: 'VTI', |
|
|
|
|
|
type: OrderType.Sell, |
|
|
|
|
|
unitPrice: new Big('151.41'), |
|
|
|
|
|
currency: Currency.USD, |
|
|
|
|
|
fee: new Big('5') |
|
|
|
|
|
} |
|
|
|
|
|
]; |
|
|
|
|
|
portfolioCalculator.computeTransactionPoints(orders); |
|
|
|
|
|
const portfolioItemsAtTransactionPoints = |
|
|
|
|
|
portfolioCalculator.getTransactionPoints(); |
|
|
|
|
|
|
|
|
|
|
|
expect(portfolioItemsAtTransactionPoints).toEqual([ |
|
|
|
|
|
{ |
|
|
|
|
|
date: '2019-02-01', |
|
|
|
|
|
items: [ |
|
|
|
|
|
{ |
|
|
|
|
|
quantity: new Big('10'), |
|
|
|
|
|
symbol: 'VTI', |
|
|
|
|
|
investment: new Big('1443.8'), |
|
|
|
|
|
currency: Currency.USD, |
|
|
|
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
transactionCount: 1, |
|
|
|
|
|
fee: new Big('5') |
|
|
|
|
|
} |
|
|
|
|
|
] |
|
|
|
|
|
}, |
|
|
|
|
|
{ |
|
|
|
|
|
date: '2019-08-03', |
|
|
|
|
|
items: [ |
|
|
|
|
|
{ |
|
|
|
|
|
quantity: new Big('20'), |
|
|
|
|
|
symbol: 'VTI', |
|
|
|
|
|
investment: new Big('2923.7'), |
|
|
|
|
|
currency: Currency.USD, |
|
|
|
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
transactionCount: 2, |
|
|
|
|
|
fee: new Big('10') |
|
|
|
|
|
} |
|
|
|
|
|
] |
|
|
|
|
|
}, |
|
|
|
|
|
{ |
|
|
|
|
|
date: '2020-02-02', |
|
|
|
|
|
items: [ |
|
|
|
|
|
{ |
|
|
|
|
|
quantity: new Big('5'), |
|
|
|
|
|
symbol: 'VTI', |
|
|
|
|
|
investment: new Big('652.55'), |
|
|
|
|
|
currency: Currency.USD, |
|
|
|
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
transactionCount: 3, |
|
|
|
|
|
fee: new Big('5') |
|
|
|
|
|
} |
|
|
|
|
|
] |
|
|
|
|
|
} |
|
|
|
|
|
]); |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
it('with orders of two different symbols and a fee', () => { |
|
|
|
|
|
const portfolioCalculator = new PortfolioCalculator( |
|
|
|
|
|
currentRateService, |
|
|
|
|
|
Currency.USD |
|
|
|
|
|
); |
|
|
|
|
|
const orders = [ |
|
|
|
|
|
{ |
|
|
|
|
|
date: '2019-02-01', |
|
|
|
|
|
name: 'Vanguard Total Stock Market Index Fund ETF Shares', |
|
|
|
|
|
quantity: new Big('10'), |
|
|
|
|
|
symbol: 'VTI', |
|
|
|
|
|
type: OrderType.Buy, |
|
|
|
|
|
unitPrice: new Big('144.38'), |
|
|
|
|
|
currency: Currency.USD, |
|
|
|
|
|
fee: new Big('5') |
|
|
|
|
|
}, |
|
|
|
|
|
{ |
|
|
|
|
|
date: '2019-08-03', |
|
|
|
|
|
name: 'Something else', |
|
|
|
|
|
quantity: new Big('10'), |
|
|
|
|
|
symbol: 'VTX', |
|
|
|
|
|
type: OrderType.Buy, |
|
|
|
|
|
unitPrice: new Big('147.99'), |
|
|
|
|
|
currency: Currency.USD, |
|
|
|
|
|
fee: new Big('10') |
|
|
|
|
|
}, |
|
|
|
|
|
{ |
|
|
|
|
|
date: '2020-02-02', |
|
|
|
|
|
name: 'Vanguard Total Stock Market Index Fund ETF Shares', |
|
|
|
|
|
quantity: new Big('5'), |
|
|
|
|
|
symbol: 'VTI', |
|
|
|
|
|
type: OrderType.Sell, |
|
|
|
|
|
unitPrice: new Big('151.41'), |
|
|
|
|
|
currency: Currency.USD, |
|
|
|
|
|
fee: new Big('5') |
|
|
|
|
|
} |
|
|
|
|
|
]; |
|
|
|
|
|
portfolioCalculator.computeTransactionPoints(orders); |
|
|
|
|
|
const portfolioItemsAtTransactionPoints = |
|
|
|
|
|
portfolioCalculator.getTransactionPoints(); |
|
|
|
|
|
|
|
|
|
|
|
expect(portfolioItemsAtTransactionPoints).toEqual([ |
|
|
|
|
|
{ |
|
|
|
|
|
date: '2019-02-01', |
|
|
|
|
|
items: [ |
|
|
|
|
|
{ |
|
|
|
|
|
quantity: new Big('10'), |
|
|
|
|
|
symbol: 'VTI', |
|
|
|
|
|
investment: new Big('1443.8'), |
|
|
|
|
|
currency: Currency.USD, |
|
|
|
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
transactionCount: 1, |
|
|
|
|
|
fee: new Big('5') |
|
|
|
|
|
} |
|
|
|
|
|
] |
|
|
|
|
|
}, |
|
|
|
|
|
{ |
|
|
|
|
|
date: '2019-08-03', |
|
|
|
|
|
items: [ |
|
|
|
|
|
{ |
|
|
|
|
|
quantity: new Big('10'), |
|
|
|
|
|
symbol: 'VTI', |
|
|
|
|
|
investment: new Big('1443.8'), |
|
|
|
|
|
currency: Currency.USD, |
|
|
|
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
transactionCount: 1, |
|
|
|
|
|
fee: new Big('0') |
|
|
|
|
|
}, |
|
|
|
|
|
{ |
|
|
|
|
|
quantity: new Big('10'), |
|
|
|
|
|
symbol: 'VTX', |
|
|
|
|
|
investment: new Big('1479.9'), |
|
|
|
|
|
currency: Currency.USD, |
|
|
|
|
|
firstBuyDate: '2019-08-03', |
|
|
|
|
|
transactionCount: 1, |
|
|
|
|
|
fee: new Big('10') |
|
|
|
|
|
} |
|
|
|
|
|
] |
|
|
|
|
|
}, |
|
|
|
|
|
{ |
|
|
|
|
|
date: '2020-02-02', |
|
|
|
|
|
items: [ |
|
|
|
|
|
{ |
|
|
|
|
|
quantity: new Big('5'), |
|
|
|
|
|
symbol: 'VTI', |
|
|
|
|
|
investment: new Big('686.75'), |
|
|
|
|
|
currency: Currency.USD, |
|
|
|
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
transactionCount: 2, |
|
|
|
|
|
fee: new Big('5') |
|
|
|
|
|
}, |
|
|
|
|
|
{ |
|
|
|
|
|
quantity: new Big('10'), |
|
|
|
|
|
symbol: 'VTX', |
|
|
|
|
|
investment: new Big('1479.9'), |
|
|
|
|
|
currency: Currency.USD, |
|
|
|
|
|
firstBuyDate: '2019-08-03', |
|
|
|
|
|
transactionCount: 1, |
|
|
|
|
|
fee: new Big('0') |
|
|
|
|
|
} |
|
|
|
|
|
] |
|
|
|
|
|
} |
|
|
|
|
|
]); |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
it('with two orders at the same day of the same type', () => { |
|
|
it('with two orders at the same day of the same type', () => { |
|
|
const orders = [ |
|
|
const orders = [ |
|
|
...ordersVTI, |
|
|
...ordersVTI, |
|
@ -152,7 +344,8 @@ describe('PortfolioCalculator', () => { |
|
|
quantity: new Big('20'), |
|
|
quantity: new Big('20'), |
|
|
symbol: 'VTI', |
|
|
symbol: 'VTI', |
|
|
type: OrderType.Buy, |
|
|
type: OrderType.Buy, |
|
|
unitPrice: new Big('197.15') |
|
|
unitPrice: new Big('197.15'), |
|
|
|
|
|
fee: new Big(0) |
|
|
} |
|
|
} |
|
|
]; |
|
|
]; |
|
|
const portfolioCalculator = new PortfolioCalculator( |
|
|
const portfolioCalculator = new PortfolioCalculator( |
|
@ -173,6 +366,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('1443.8'), |
|
|
investment: new Big('1443.8'), |
|
|
quantity: new Big('10'), |
|
|
quantity: new Big('10'), |
|
|
symbol: 'VTI', |
|
|
symbol: 'VTI', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -186,6 +380,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('2923.7'), |
|
|
investment: new Big('2923.7'), |
|
|
quantity: new Big('20'), |
|
|
quantity: new Big('20'), |
|
|
symbol: 'VTI', |
|
|
symbol: 'VTI', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 2 |
|
|
transactionCount: 2 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -199,6 +394,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('652.55'), |
|
|
investment: new Big('652.55'), |
|
|
quantity: new Big('5'), |
|
|
quantity: new Big('5'), |
|
|
symbol: 'VTI', |
|
|
symbol: 'VTI', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 3 |
|
|
transactionCount: 3 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -212,6 +408,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('6627.05'), |
|
|
investment: new Big('6627.05'), |
|
|
quantity: new Big('35'), |
|
|
quantity: new Big('35'), |
|
|
symbol: 'VTI', |
|
|
symbol: 'VTI', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 5 |
|
|
transactionCount: 5 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -225,6 +422,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('8403.95'), |
|
|
investment: new Big('8403.95'), |
|
|
quantity: new Big('45'), |
|
|
quantity: new Big('45'), |
|
|
symbol: 'VTI', |
|
|
symbol: 'VTI', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 6 |
|
|
transactionCount: 6 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -242,7 +440,8 @@ describe('PortfolioCalculator', () => { |
|
|
quantity: new Big('5'), |
|
|
quantity: new Big('5'), |
|
|
symbol: 'AMZN', |
|
|
symbol: 'AMZN', |
|
|
type: OrderType.Buy, |
|
|
type: OrderType.Buy, |
|
|
unitPrice: new Big('2021.99') |
|
|
unitPrice: new Big('2021.99'), |
|
|
|
|
|
fee: new Big(0) |
|
|
} |
|
|
} |
|
|
]; |
|
|
]; |
|
|
const portfolioCalculator = new PortfolioCalculator( |
|
|
const portfolioCalculator = new PortfolioCalculator( |
|
@ -263,6 +462,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('1443.8'), |
|
|
investment: new Big('1443.8'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-02-01', |
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -276,6 +476,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('2923.7'), |
|
|
investment: new Big('2923.7'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-02-01', |
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 2 |
|
|
transactionCount: 2 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -289,6 +490,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('10109.95'), |
|
|
investment: new Big('10109.95'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-09-01', |
|
|
firstBuyDate: '2019-09-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
@ -297,6 +499,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('2923.7'), |
|
|
investment: new Big('2923.7'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-02-01', |
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 2 |
|
|
transactionCount: 2 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -310,6 +513,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('10109.95'), |
|
|
investment: new Big('10109.95'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-09-01', |
|
|
firstBuyDate: '2019-09-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
@ -318,6 +522,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('652.55'), |
|
|
investment: new Big('652.55'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-02-01', |
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 3 |
|
|
transactionCount: 3 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -331,6 +536,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('10109.95'), |
|
|
investment: new Big('10109.95'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-09-01', |
|
|
firstBuyDate: '2019-09-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
@ -339,6 +545,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('2684.05'), |
|
|
investment: new Big('2684.05'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-02-01', |
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 4 |
|
|
transactionCount: 4 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -352,6 +559,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('10109.95'), |
|
|
investment: new Big('10109.95'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-09-01', |
|
|
firstBuyDate: '2019-09-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
@ -360,6 +568,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('4460.95'), |
|
|
investment: new Big('4460.95'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-02-01', |
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 5 |
|
|
transactionCount: 5 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -377,7 +586,8 @@ describe('PortfolioCalculator', () => { |
|
|
symbol: 'AMZN', |
|
|
symbol: 'AMZN', |
|
|
type: OrderType.Buy, |
|
|
type: OrderType.Buy, |
|
|
unitPrice: new Big('2021.99'), |
|
|
unitPrice: new Big('2021.99'), |
|
|
currency: Currency.USD |
|
|
currency: Currency.USD, |
|
|
|
|
|
fee: new Big(0) |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
|
date: '2020-08-02', |
|
|
date: '2020-08-02', |
|
@ -386,7 +596,8 @@ describe('PortfolioCalculator', () => { |
|
|
symbol: 'AMZN', |
|
|
symbol: 'AMZN', |
|
|
type: OrderType.Sell, |
|
|
type: OrderType.Sell, |
|
|
unitPrice: new Big('2412.23'), |
|
|
unitPrice: new Big('2412.23'), |
|
|
currency: Currency.USD |
|
|
currency: Currency.USD, |
|
|
|
|
|
fee: new Big(0) |
|
|
} |
|
|
} |
|
|
]; |
|
|
]; |
|
|
const portfolioCalculator = new PortfolioCalculator( |
|
|
const portfolioCalculator = new PortfolioCalculator( |
|
@ -421,6 +632,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('2148.5'), |
|
|
investment: new Big('2148.5'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2017-01-03', |
|
|
firstBuyDate: '2017-01-03', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -434,6 +646,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('1999.9999999999998659756'), |
|
|
investment: new Big('1999.9999999999998659756'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2017-07-01', |
|
|
firstBuyDate: '2017-07-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
@ -442,6 +655,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('2148.5'), |
|
|
investment: new Big('2148.5'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2017-01-03', |
|
|
firstBuyDate: '2017-01-03', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -455,6 +669,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('10109.95'), |
|
|
investment: new Big('10109.95'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2018-09-01', |
|
|
firstBuyDate: '2018-09-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
@ -463,6 +678,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('1999.9999999999998659756'), |
|
|
investment: new Big('1999.9999999999998659756'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2017-07-01', |
|
|
firstBuyDate: '2017-07-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
@ -471,6 +687,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('2148.5'), |
|
|
investment: new Big('2148.5'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2017-01-03', |
|
|
firstBuyDate: '2017-01-03', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -702,6 +919,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('805.9'), |
|
|
investment: new Big('805.9'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-09-01', |
|
|
firstBuyDate: '2019-09-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -715,6 +933,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('0'), |
|
|
investment: new Big('0'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-09-01', |
|
|
firstBuyDate: '2019-09-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 2 |
|
|
transactionCount: 2 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -728,6 +947,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('1013.9'), |
|
|
investment: new Big('1013.9'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-09-01', |
|
|
firstBuyDate: '2019-09-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 3 |
|
|
transactionCount: 3 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -783,6 +1003,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('1443.8'), |
|
|
investment: new Big('1443.8'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-02-01', |
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -797,6 +1018,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('2923.7'), |
|
|
investment: new Big('2923.7'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-02-01', |
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 2 |
|
|
transactionCount: 2 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -864,6 +1086,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('1000000'), // 1 million
|
|
|
investment: new Big('1000000'), // 1 million
|
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2010-12-31', |
|
|
firstBuyDate: '2010-12-31', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -877,6 +1100,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('1100000'), // 1,000,000 + 100,000
|
|
|
investment: new Big('1100000'), // 1,000,000 + 100,000
|
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2010-12-31', |
|
|
firstBuyDate: '2010-12-31', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 2 |
|
|
transactionCount: 2 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -933,6 +1157,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('200'), |
|
|
investment: new Big('200'), |
|
|
currency: Currency.CHF, |
|
|
currency: Currency.CHF, |
|
|
firstBuyDate: '2012-12-31', |
|
|
firstBuyDate: '2012-12-31', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
@ -941,6 +1166,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('300'), |
|
|
investment: new Big('300'), |
|
|
currency: Currency.CHF, |
|
|
currency: Currency.CHF, |
|
|
firstBuyDate: '2012-12-31', |
|
|
firstBuyDate: '2012-12-31', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -954,6 +1180,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('200'), |
|
|
investment: new Big('200'), |
|
|
currency: Currency.CHF, |
|
|
currency: Currency.CHF, |
|
|
firstBuyDate: '2012-12-31', |
|
|
firstBuyDate: '2012-12-31', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
@ -962,6 +1189,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('300'), |
|
|
investment: new Big('300'), |
|
|
currency: Currency.CHF, |
|
|
currency: Currency.CHF, |
|
|
firstBuyDate: '2012-12-31', |
|
|
firstBuyDate: '2012-12-31', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -1599,6 +1827,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('10109.95'), |
|
|
investment: new Big('10109.95'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-02-01', |
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
@ -1607,6 +1836,7 @@ describe('PortfolioCalculator', () => { |
|
|
investment: new Big('1443.8'), |
|
|
investment: new Big('1443.8'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-02-01', |
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -1650,7 +1880,8 @@ const ordersMixedSymbols: PortfolioOrder[] = [ |
|
|
symbol: 'TSLA', |
|
|
symbol: 'TSLA', |
|
|
type: OrderType.Buy, |
|
|
type: OrderType.Buy, |
|
|
unitPrice: new Big('42.97'), |
|
|
unitPrice: new Big('42.97'), |
|
|
currency: Currency.USD |
|
|
currency: Currency.USD, |
|
|
|
|
|
fee: new Big(0) |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
|
date: '2017-07-01', |
|
|
date: '2017-07-01', |
|
@ -1659,7 +1890,8 @@ const ordersMixedSymbols: PortfolioOrder[] = [ |
|
|
symbol: 'BTCUSD', |
|
|
symbol: 'BTCUSD', |
|
|
type: OrderType.Buy, |
|
|
type: OrderType.Buy, |
|
|
unitPrice: new Big('3562.089535970158'), |
|
|
unitPrice: new Big('3562.089535970158'), |
|
|
currency: Currency.USD |
|
|
currency: Currency.USD, |
|
|
|
|
|
fee: new Big(0) |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
|
date: '2018-09-01', |
|
|
date: '2018-09-01', |
|
@ -1668,7 +1900,8 @@ const ordersMixedSymbols: PortfolioOrder[] = [ |
|
|
symbol: 'AMZN', |
|
|
symbol: 'AMZN', |
|
|
type: OrderType.Buy, |
|
|
type: OrderType.Buy, |
|
|
unitPrice: new Big('2021.99'), |
|
|
unitPrice: new Big('2021.99'), |
|
|
currency: Currency.USD |
|
|
currency: Currency.USD, |
|
|
|
|
|
fee: new Big(0) |
|
|
} |
|
|
} |
|
|
]; |
|
|
]; |
|
|
|
|
|
|
|
@ -1680,7 +1913,8 @@ const ordersVTI: PortfolioOrder[] = [ |
|
|
symbol: 'VTI', |
|
|
symbol: 'VTI', |
|
|
type: OrderType.Buy, |
|
|
type: OrderType.Buy, |
|
|
unitPrice: new Big('144.38'), |
|
|
unitPrice: new Big('144.38'), |
|
|
currency: Currency.USD |
|
|
currency: Currency.USD, |
|
|
|
|
|
fee: new Big(0) |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
|
date: '2019-08-03', |
|
|
date: '2019-08-03', |
|
@ -1689,7 +1923,8 @@ const ordersVTI: PortfolioOrder[] = [ |
|
|
symbol: 'VTI', |
|
|
symbol: 'VTI', |
|
|
type: OrderType.Buy, |
|
|
type: OrderType.Buy, |
|
|
unitPrice: new Big('147.99'), |
|
|
unitPrice: new Big('147.99'), |
|
|
currency: Currency.USD |
|
|
currency: Currency.USD, |
|
|
|
|
|
fee: new Big(0) |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
|
date: '2020-02-02', |
|
|
date: '2020-02-02', |
|
@ -1698,7 +1933,8 @@ const ordersVTI: PortfolioOrder[] = [ |
|
|
symbol: 'VTI', |
|
|
symbol: 'VTI', |
|
|
type: OrderType.Sell, |
|
|
type: OrderType.Sell, |
|
|
unitPrice: new Big('151.41'), |
|
|
unitPrice: new Big('151.41'), |
|
|
currency: Currency.USD |
|
|
currency: Currency.USD, |
|
|
|
|
|
fee: new Big(0) |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
|
date: '2021-08-01', |
|
|
date: '2021-08-01', |
|
@ -1707,7 +1943,8 @@ const ordersVTI: PortfolioOrder[] = [ |
|
|
symbol: 'VTI', |
|
|
symbol: 'VTI', |
|
|
type: OrderType.Buy, |
|
|
type: OrderType.Buy, |
|
|
unitPrice: new Big('177.69'), |
|
|
unitPrice: new Big('177.69'), |
|
|
currency: Currency.USD |
|
|
currency: Currency.USD, |
|
|
|
|
|
fee: new Big(0) |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
|
date: '2021-02-01', |
|
|
date: '2021-02-01', |
|
@ -1716,7 +1953,8 @@ const ordersVTI: PortfolioOrder[] = [ |
|
|
symbol: 'VTI', |
|
|
symbol: 'VTI', |
|
|
type: OrderType.Buy, |
|
|
type: OrderType.Buy, |
|
|
unitPrice: new Big('203.15'), |
|
|
unitPrice: new Big('203.15'), |
|
|
currency: Currency.USD |
|
|
currency: Currency.USD, |
|
|
|
|
|
fee: new Big(0) |
|
|
} |
|
|
} |
|
|
]; |
|
|
]; |
|
|
|
|
|
|
|
@ -1730,6 +1968,7 @@ const orderTslaTransactionPoint: TransactionPoint[] = [ |
|
|
investment: new Big('719.46'), |
|
|
investment: new Big('719.46'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2021-01-01', |
|
|
firstBuyDate: '2021-01-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -1746,6 +1985,7 @@ const ordersVTITransactionPoints: TransactionPoint[] = [ |
|
|
investment: new Big('1443.8'), |
|
|
investment: new Big('1443.8'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-02-01', |
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -1759,6 +1999,7 @@ const ordersVTITransactionPoints: TransactionPoint[] = [ |
|
|
investment: new Big('2923.7'), |
|
|
investment: new Big('2923.7'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-02-01', |
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 2 |
|
|
transactionCount: 2 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -1772,6 +2013,7 @@ const ordersVTITransactionPoints: TransactionPoint[] = [ |
|
|
investment: new Big('652.55'), |
|
|
investment: new Big('652.55'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-02-01', |
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 3 |
|
|
transactionCount: 3 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -1785,6 +2027,7 @@ const ordersVTITransactionPoints: TransactionPoint[] = [ |
|
|
investment: new Big('2684.05'), |
|
|
investment: new Big('2684.05'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-02-01', |
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 4 |
|
|
transactionCount: 4 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -1798,6 +2041,7 @@ const ordersVTITransactionPoints: TransactionPoint[] = [ |
|
|
investment: new Big('4460.95'), |
|
|
investment: new Big('4460.95'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-02-01', |
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 5 |
|
|
transactionCount: 5 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -1814,6 +2058,7 @@ const transactionPointsBuyAndSell = [ |
|
|
investment: new Big('1443.8'), |
|
|
investment: new Big('1443.8'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-02-01', |
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -1827,6 +2072,7 @@ const transactionPointsBuyAndSell = [ |
|
|
investment: new Big('2923.7'), |
|
|
investment: new Big('2923.7'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-02-01', |
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 2 |
|
|
transactionCount: 2 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -1840,6 +2086,7 @@ const transactionPointsBuyAndSell = [ |
|
|
investment: new Big('10109.95'), |
|
|
investment: new Big('10109.95'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-09-01', |
|
|
firstBuyDate: '2019-09-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
@ -1848,6 +2095,7 @@ const transactionPointsBuyAndSell = [ |
|
|
investment: new Big('2923.7'), |
|
|
investment: new Big('2923.7'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-02-01', |
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 2 |
|
|
transactionCount: 2 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -1861,6 +2109,7 @@ const transactionPointsBuyAndSell = [ |
|
|
investment: new Big('10109.95'), |
|
|
investment: new Big('10109.95'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-09-01', |
|
|
firstBuyDate: '2019-09-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 1 |
|
|
transactionCount: 1 |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
@ -1869,6 +2118,7 @@ const transactionPointsBuyAndSell = [ |
|
|
investment: new Big('652.55'), |
|
|
investment: new Big('652.55'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-02-01', |
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 3 |
|
|
transactionCount: 3 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -1882,6 +2132,7 @@ const transactionPointsBuyAndSell = [ |
|
|
investment: new Big('0'), |
|
|
investment: new Big('0'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-09-01', |
|
|
firstBuyDate: '2019-09-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 2 |
|
|
transactionCount: 2 |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
@ -1890,6 +2141,7 @@ const transactionPointsBuyAndSell = [ |
|
|
investment: new Big('652.55'), |
|
|
investment: new Big('652.55'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-02-01', |
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 3 |
|
|
transactionCount: 3 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -1903,6 +2155,7 @@ const transactionPointsBuyAndSell = [ |
|
|
investment: new Big('0'), |
|
|
investment: new Big('0'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-09-01', |
|
|
firstBuyDate: '2019-09-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 2 |
|
|
transactionCount: 2 |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
@ -1911,6 +2164,7 @@ const transactionPointsBuyAndSell = [ |
|
|
investment: new Big('2684.05'), |
|
|
investment: new Big('2684.05'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-02-01', |
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 4 |
|
|
transactionCount: 4 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
@ -1924,6 +2178,7 @@ const transactionPointsBuyAndSell = [ |
|
|
investment: new Big('0'), |
|
|
investment: new Big('0'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-09-01', |
|
|
firstBuyDate: '2019-09-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 2 |
|
|
transactionCount: 2 |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
{ |
|
@ -1932,6 +2187,7 @@ const transactionPointsBuyAndSell = [ |
|
|
investment: new Big('4460.95'), |
|
|
investment: new Big('4460.95'), |
|
|
currency: Currency.USD, |
|
|
currency: Currency.USD, |
|
|
firstBuyDate: '2019-02-01', |
|
|
firstBuyDate: '2019-02-01', |
|
|
|
|
|
fee: new Big(0), |
|
|
transactionCount: 5 |
|
|
transactionCount: 5 |
|
|
} |
|
|
} |
|
|
] |
|
|
] |
|
|