@ -7,7 +7,8 @@ import {
PortfolioCalculator ,
PortfolioOrder ,
TimelinePeriod ,
TimelineSpecification
TimelineSpecification ,
TransactionPoint
} from '@ghostfolio/api/app/core/portfolio-calculator' ;
import { OrderType } from '@ghostfolio/api/models/order-type' ;
import { resetHours } from '@ghostfolio/common/helper' ;
@ -129,6 +130,7 @@ describe('PortfolioCalculator', () => {
. . . ordersVTI ,
{
date : '2021-02-01' ,
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '20' ) ,
symbol : 'VTI' ,
type : OrderType . Buy ,
@ -149,6 +151,7 @@ describe('PortfolioCalculator', () => {
date : '2019-02-01' ,
items : [
{
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '10' ) ,
symbol : 'VTI' ,
investment : new Big ( '1443.8' ) ,
@ -162,6 +165,7 @@ describe('PortfolioCalculator', () => {
date : '2019-08-03' ,
items : [
{
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '20' ) ,
symbol : 'VTI' ,
investment : new Big ( '2923.7' ) ,
@ -175,6 +179,7 @@ describe('PortfolioCalculator', () => {
date : '2020-02-02' ,
items : [
{
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '5' ) ,
symbol : 'VTI' ,
investment : new Big ( '652.55' ) ,
@ -188,6 +193,7 @@ describe('PortfolioCalculator', () => {
date : '2021-02-01' ,
items : [
{
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '35' ) ,
symbol : 'VTI' ,
investment : new Big ( '6627.05' ) ,
@ -201,6 +207,7 @@ describe('PortfolioCalculator', () => {
date : '2021-08-01' ,
items : [
{
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '45' ) ,
symbol : 'VTI' ,
investment : new Big ( '8403.95' ) ,
@ -218,6 +225,7 @@ describe('PortfolioCalculator', () => {
. . . ordersVTI ,
{
date : '2019-09-01' ,
name : 'Amazon.com, Inc.' ,
quantity : new Big ( '5' ) ,
symbol : 'AMZN' ,
type : OrderType . Buy ,
@ -238,6 +246,7 @@ describe('PortfolioCalculator', () => {
date : '2019-02-01' ,
items : [
{
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '10' ) ,
symbol : 'VTI' ,
investment : new Big ( '1443.8' ) ,
@ -251,6 +260,7 @@ describe('PortfolioCalculator', () => {
date : '2019-08-03' ,
items : [
{
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '20' ) ,
symbol : 'VTI' ,
investment : new Big ( '2923.7' ) ,
@ -264,6 +274,7 @@ describe('PortfolioCalculator', () => {
date : '2019-09-01' ,
items : [
{
name : 'Amazon.com, Inc.' ,
quantity : new Big ( '5' ) ,
symbol : 'AMZN' ,
investment : new Big ( '10109.95' ) ,
@ -272,6 +283,7 @@ describe('PortfolioCalculator', () => {
transactionCount : 1
} ,
{
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '20' ) ,
symbol : 'VTI' ,
investment : new Big ( '2923.7' ) ,
@ -285,6 +297,7 @@ describe('PortfolioCalculator', () => {
date : '2020-02-02' ,
items : [
{
name : 'Amazon.com, Inc.' ,
quantity : new Big ( '5' ) ,
symbol : 'AMZN' ,
investment : new Big ( '10109.95' ) ,
@ -293,6 +306,7 @@ describe('PortfolioCalculator', () => {
transactionCount : 1
} ,
{
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '5' ) ,
symbol : 'VTI' ,
investment : new Big ( '652.55' ) ,
@ -306,6 +320,7 @@ describe('PortfolioCalculator', () => {
date : '2021-02-01' ,
items : [
{
name : 'Amazon.com, Inc.' ,
quantity : new Big ( '5' ) ,
symbol : 'AMZN' ,
investment : new Big ( '10109.95' ) ,
@ -314,6 +329,7 @@ describe('PortfolioCalculator', () => {
transactionCount : 1
} ,
{
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '15' ) ,
symbol : 'VTI' ,
investment : new Big ( '2684.05' ) ,
@ -327,6 +343,7 @@ describe('PortfolioCalculator', () => {
date : '2021-08-01' ,
items : [
{
name : 'Amazon.com, Inc.' ,
quantity : new Big ( '5' ) ,
symbol : 'AMZN' ,
investment : new Big ( '10109.95' ) ,
@ -335,6 +352,7 @@ describe('PortfolioCalculator', () => {
transactionCount : 1
} ,
{
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '25' ) ,
symbol : 'VTI' ,
investment : new Big ( '4460.95' ) ,
@ -352,6 +370,7 @@ describe('PortfolioCalculator', () => {
. . . ordersVTI ,
{
date : '2019-09-01' ,
name : 'Amazon.com, Inc.' ,
quantity : new Big ( '5' ) ,
symbol : 'AMZN' ,
type : OrderType . Buy ,
@ -360,6 +379,7 @@ describe('PortfolioCalculator', () => {
} ,
{
date : '2020-08-02' ,
name : 'Amazon.com, Inc.' ,
quantity : new Big ( '5' ) ,
symbol : 'AMZN' ,
type : OrderType . Sell ,
@ -380,6 +400,7 @@ describe('PortfolioCalculator', () => {
date : '2019-02-01' ,
items : [
{
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '10' ) ,
symbol : 'VTI' ,
investment : new Big ( '1443.8' ) ,
@ -393,6 +414,7 @@ describe('PortfolioCalculator', () => {
date : '2019-08-03' ,
items : [
{
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '20' ) ,
symbol : 'VTI' ,
investment : new Big ( '2923.7' ) ,
@ -406,6 +428,7 @@ describe('PortfolioCalculator', () => {
date : '2019-09-01' ,
items : [
{
name : 'Amazon.com, Inc.' ,
quantity : new Big ( '5' ) ,
symbol : 'AMZN' ,
investment : new Big ( '10109.95' ) ,
@ -414,6 +437,7 @@ describe('PortfolioCalculator', () => {
transactionCount : 1
} ,
{
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '20' ) ,
symbol : 'VTI' ,
investment : new Big ( '2923.7' ) ,
@ -427,6 +451,7 @@ describe('PortfolioCalculator', () => {
date : '2020-02-02' ,
items : [
{
name : 'Amazon.com, Inc.' ,
quantity : new Big ( '5' ) ,
symbol : 'AMZN' ,
investment : new Big ( '10109.95' ) ,
@ -435,6 +460,7 @@ describe('PortfolioCalculator', () => {
transactionCount : 1
} ,
{
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '5' ) ,
symbol : 'VTI' ,
investment : new Big ( '652.55' ) ,
@ -448,6 +474,7 @@ describe('PortfolioCalculator', () => {
date : '2020-08-02' ,
items : [
{
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '5' ) ,
symbol : 'VTI' ,
investment : new Big ( '652.55' ) ,
@ -461,6 +488,7 @@ describe('PortfolioCalculator', () => {
date : '2021-02-01' ,
items : [
{
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '15' ) ,
symbol : 'VTI' ,
investment : new Big ( '2684.05' ) ,
@ -474,6 +502,7 @@ describe('PortfolioCalculator', () => {
date : '2021-08-01' ,
items : [
{
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '25' ) ,
symbol : 'VTI' ,
investment : new Big ( '4460.95' ) ,
@ -500,6 +529,7 @@ describe('PortfolioCalculator', () => {
date : '2017-01-03' ,
items : [
{
name : 'Tesla, Inc.' ,
quantity : new Big ( '50' ) ,
symbol : 'TSLA' ,
investment : new Big ( '2148.5' ) ,
@ -513,6 +543,7 @@ describe('PortfolioCalculator', () => {
date : '2017-07-01' ,
items : [
{
name : 'Bitcoin USD' ,
quantity : new Big ( '0.5614682' ) ,
symbol : 'BTCUSD' ,
investment : new Big ( '1999.9999999999998659756' ) ,
@ -521,6 +552,7 @@ describe('PortfolioCalculator', () => {
transactionCount : 1
} ,
{
name : 'Tesla, Inc.' ,
quantity : new Big ( '50' ) ,
symbol : 'TSLA' ,
investment : new Big ( '2148.5' ) ,
@ -534,6 +566,7 @@ describe('PortfolioCalculator', () => {
date : '2018-09-01' ,
items : [
{
name : 'Amazon.com, Inc.' ,
quantity : new Big ( '5' ) ,
symbol : 'AMZN' ,
investment : new Big ( '10109.95' ) ,
@ -542,6 +575,7 @@ describe('PortfolioCalculator', () => {
transactionCount : 1
} ,
{
name : 'Bitcoin USD' ,
quantity : new Big ( '0.5614682' ) ,
symbol : 'BTCUSD' ,
investment : new Big ( '1999.9999999999998659756' ) ,
@ -550,6 +584,7 @@ describe('PortfolioCalculator', () => {
transactionCount : 1
} ,
{
name : 'Tesla, Inc.' ,
quantity : new Big ( '50' ) ,
symbol : 'TSLA' ,
investment : new Big ( '2148.5' ) ,
@ -582,6 +617,7 @@ describe('PortfolioCalculator', () => {
grossPerformancePercentage : new Big ( '0.19548526659119694236' ) , // 872.05/4460.95
investment : new Big ( '4460.95' ) ,
marketPrice : 213.32 ,
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '25' ) ,
symbol : 'VTI' ,
transactionCount : 5
@ -1171,6 +1207,7 @@ describe('PortfolioCalculator', () => {
date : '2019-02-01' ,
items : [
{
name : 'Amazon.com, Inc.' ,
quantity : new Big ( '5' ) ,
symbol : 'AMZN' ,
investment : new Big ( '10109.95' ) ,
@ -1179,6 +1216,7 @@ describe('PortfolioCalculator', () => {
transactionCount : 1
} ,
{
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '10' ) ,
symbol : 'VTI' ,
investment : new Big ( '1443.8' ) ,
@ -1221,6 +1259,7 @@ describe('PortfolioCalculator', () => {
const ordersMixedSymbols : PortfolioOrder [ ] = [
{
date : '2017-01-03' ,
name : 'Tesla, Inc.' ,
quantity : new Big ( '50' ) ,
symbol : 'TSLA' ,
type : OrderType . Buy ,
@ -1229,6 +1268,7 @@ const ordersMixedSymbols: PortfolioOrder[] = [
} ,
{
date : '2017-07-01' ,
name : 'Bitcoin USD' ,
quantity : new Big ( '0.5614682' ) ,
symbol : 'BTCUSD' ,
type : OrderType . Buy ,
@ -1237,6 +1277,7 @@ const ordersMixedSymbols: PortfolioOrder[] = [
} ,
{
date : '2018-09-01' ,
name : 'Amazon.com, Inc.' ,
quantity : new Big ( '5' ) ,
symbol : 'AMZN' ,
type : OrderType . Buy ,
@ -1248,6 +1289,7 @@ const ordersMixedSymbols: PortfolioOrder[] = [
const ordersVTI : PortfolioOrder [ ] = [
{
date : '2019-02-01' ,
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '10' ) ,
symbol : 'VTI' ,
type : OrderType . Buy ,
@ -1256,6 +1298,7 @@ const ordersVTI: PortfolioOrder[] = [
} ,
{
date : '2019-08-03' ,
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '10' ) ,
symbol : 'VTI' ,
type : OrderType . Buy ,
@ -1264,6 +1307,7 @@ const ordersVTI: PortfolioOrder[] = [
} ,
{
date : '2020-02-02' ,
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '15' ) ,
symbol : 'VTI' ,
type : OrderType . Sell ,
@ -1272,6 +1316,7 @@ const ordersVTI: PortfolioOrder[] = [
} ,
{
date : '2021-08-01' ,
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '10' ) ,
symbol : 'VTI' ,
type : OrderType . Buy ,
@ -1280,6 +1325,7 @@ const ordersVTI: PortfolioOrder[] = [
} ,
{
date : '2021-02-01' ,
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '10' ) ,
symbol : 'VTI' ,
type : OrderType . Buy ,
@ -1288,11 +1334,12 @@ const ordersVTI: PortfolioOrder[] = [
}
] ;
const ordersVTITransactionPoints = [
const ordersVTITransactionPoints : TransactionPoint [ ] = [
{
date : '2019-02-01' ,
items : [
{
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '10' ) ,
symbol : 'VTI' ,
investment : new Big ( '1443.8' ) ,
@ -1306,6 +1353,7 @@ const ordersVTITransactionPoints = [
date : '2019-08-03' ,
items : [
{
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '20' ) ,
symbol : 'VTI' ,
investment : new Big ( '2923.7' ) ,
@ -1319,6 +1367,7 @@ const ordersVTITransactionPoints = [
date : '2020-02-02' ,
items : [
{
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '5' ) ,
symbol : 'VTI' ,
investment : new Big ( '652.55' ) ,
@ -1332,6 +1381,7 @@ const ordersVTITransactionPoints = [
date : '2021-02-01' ,
items : [
{
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '15' ) ,
symbol : 'VTI' ,
investment : new Big ( '2684.05' ) ,
@ -1345,6 +1395,7 @@ const ordersVTITransactionPoints = [
date : '2021-08-01' ,
items : [
{
name : 'Vanguard Total Stock Market Index Fund ETF Shares' ,
quantity : new Big ( '25' ) ,
symbol : 'VTI' ,
investment : new Big ( '4460.95' ) ,