mirror of https://github.com/ghostfolio/ghostfolio
				
				
			
				 13 changed files with 677 additions and 613 deletions
			
			
		@ -0,0 +1,181 @@ | 
				
			|||||
 | 
					<div class="container"> | 
				
			||||
 | 
					  <div class="mb-3 row"> | 
				
			||||
 | 
					    <div class="col-sm"> | 
				
			||||
 | 
					      <a [routerLink]="['/']"><gf-logo /></a> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <div class="col-sm"> | 
				
			||||
 | 
					      <div class="h6 mt-2" i18n>Personal Finance</div> | 
				
			||||
 | 
					      <ul class="list-unstyled"> | 
				
			||||
 | 
					        @if (hasPermissionToAccessFearAndGreedIndex) { | 
				
			||||
 | 
					          <li> | 
				
			||||
 | 
					            <a i18n [routerLink]="routerLinkMarkets">Markets</a> | 
				
			||||
 | 
					          </li> | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					        <li><a i18n [routerLink]="routerLinkResources">Resources</a></li> | 
				
			||||
 | 
					      </ul> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <div class="col-sm"> | 
				
			||||
 | 
					      <div class="h6 mt-2">Ghostfolio</div> | 
				
			||||
 | 
					      <ul class="list-unstyled"> | 
				
			||||
 | 
					        <li><a i18n [routerLink]="routerLinkAbout">About</a></li> | 
				
			||||
 | 
					        @if (hasPermissionForSubscription) { | 
				
			||||
 | 
					          <li> | 
				
			||||
 | 
					            <a i18n [routerLink]="routerLinkBlog">Blog</a> | 
				
			||||
 | 
					          </li> | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					        <li> | 
				
			||||
 | 
					          <a i18n [routerLink]="routerLinkAboutChangelog">Changelog</a> | 
				
			||||
 | 
					        </li> | 
				
			||||
 | 
					        <li><a i18n [routerLink]="routerLinkFeatures">Features</a></li> | 
				
			||||
 | 
					        @if (hasPermissionForSubscription) { | 
				
			||||
 | 
					          <li> | 
				
			||||
 | 
					            <a i18n [routerLink]="routerLinkFaq" | 
				
			||||
 | 
					              >Frequently Asked Questions (FAQ)</a | 
				
			||||
 | 
					            > | 
				
			||||
 | 
					          </li> | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					        @if (!hasPermissionForSubscription) { | 
				
			||||
 | 
					          <li> | 
				
			||||
 | 
					            <a i18n [routerLink]="routerLinkAboutLicense">License</a> | 
				
			||||
 | 
					          </li> | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					        @if (hasPermissionForStatistics) { | 
				
			||||
 | 
					          <li> | 
				
			||||
 | 
					            <a [routerLink]="routerLinkOpenStartup">Open Startup</a> | 
				
			||||
 | 
					          </li> | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					        @if (hasPermissionForSubscription) { | 
				
			||||
 | 
					          <li> | 
				
			||||
 | 
					            <a i18n [routerLink]="routerLinkPricing">Pricing</a> | 
				
			||||
 | 
					          </li> | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					        @if (hasPermissionForSubscription) { | 
				
			||||
 | 
					          <li> | 
				
			||||
 | 
					            <a i18n [routerLink]="routerLinkAboutPrivacyPolicy" | 
				
			||||
 | 
					              >Privacy Policy</a | 
				
			||||
 | 
					            > | 
				
			||||
 | 
					          </li> | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					        @if (hasPermissionForSubscription) { | 
				
			||||
 | 
					          <li> | 
				
			||||
 | 
					            <a i18n [routerLink]="routerLinkAboutTermsOfService" | 
				
			||||
 | 
					              >Terms of Service</a | 
				
			||||
 | 
					            > | 
				
			||||
 | 
					          </li> | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					        @if (hasPermissionForSubscription) { | 
				
			||||
 | 
					          <li> | 
				
			||||
 | 
					            <a | 
				
			||||
 | 
					              class="align-items-baseline d-flex" | 
				
			||||
 | 
					              href="https://status.ghostfol.io" | 
				
			||||
 | 
					              target="_blank" | 
				
			||||
 | 
					              title="Ghostfolio Status" | 
				
			||||
 | 
					              >Status<ion-icon class="ml-1" name="open-outline" | 
				
			||||
 | 
					            /></a> | 
				
			||||
 | 
					          </li> | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					      </ul> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <div class="col-sm"> | 
				
			||||
 | 
					      <div class="h6 mt-2" i18n>Community</div> | 
				
			||||
 | 
					      <ul class="list-unstyled"> | 
				
			||||
 | 
					        <li> | 
				
			||||
 | 
					          <a | 
				
			||||
 | 
					            class="align-items-baseline d-flex" | 
				
			||||
 | 
					            href="https://github.com/ghostfolio/ghostfolio" | 
				
			||||
 | 
					            target="_blank" | 
				
			||||
 | 
					            title="Find Ghostfolio on GitHub" | 
				
			||||
 | 
					            >GitHub<ion-icon class="ml-1" name="open-outline" | 
				
			||||
 | 
					          /></a> | 
				
			||||
 | 
					        </li> | 
				
			||||
 | 
					        <li> | 
				
			||||
 | 
					          <a | 
				
			||||
 | 
					            class="align-items-baseline d-flex" | 
				
			||||
 | 
					            href="https://linkedin.com/company/ghostfolio" | 
				
			||||
 | 
					            target="_blank" | 
				
			||||
 | 
					            title="Follow Ghostfolio on LinkedIn" | 
				
			||||
 | 
					            >LinkedIn<ion-icon class="ml-1" name="open-outline" | 
				
			||||
 | 
					          /></a> | 
				
			||||
 | 
					        </li> | 
				
			||||
 | 
					        <li> | 
				
			||||
 | 
					          <a | 
				
			||||
 | 
					            class="align-items-baseline d-flex" | 
				
			||||
 | 
					            href="https://join.slack.com/t/ghostfolio/shared_invite/zt-vsaan64h-F_I0fEo5M0P88lP9ibCxFg" | 
				
			||||
 | 
					            target="_blank" | 
				
			||||
 | 
					            title="Join the Ghostfolio Slack community" | 
				
			||||
 | 
					            >Slack<ion-icon class="ml-1" name="open-outline" | 
				
			||||
 | 
					          /></a> | 
				
			||||
 | 
					        </li> | 
				
			||||
 | 
					        <li> | 
				
			||||
 | 
					          <a | 
				
			||||
 | 
					            class="align-items-baseline d-flex" | 
				
			||||
 | 
					            href="https://x.com/ghostfolio_" | 
				
			||||
 | 
					            target="_blank" | 
				
			||||
 | 
					            title="Follow Ghostfolio on X (formerly Twitter)" | 
				
			||||
 | 
					            >X (formerly Twitter)<ion-icon class="ml-1" name="open-outline" | 
				
			||||
 | 
					          /></a> | 
				
			||||
 | 
					        </li> | 
				
			||||
 | 
					        <li> </li> | 
				
			||||
 | 
					        <!-- | 
				
			||||
 | 
					          <li> | 
				
			||||
 | 
					            <a href="../ca" title="Ghostfolio en català">Català</a> | 
				
			||||
 | 
					          </li> | 
				
			||||
 | 
					        --> | 
				
			||||
 | 
					        <li> | 
				
			||||
 | 
					          <a href="../zh" title="Ghostfolio in Chinese">Chinese</a> | 
				
			||||
 | 
					        </li> | 
				
			||||
 | 
					        <li> | 
				
			||||
 | 
					          <a href="../de" title="Ghostfolio in Deutsch">Deutsch</a> | 
				
			||||
 | 
					        </li> | 
				
			||||
 | 
					        <li> | 
				
			||||
 | 
					          <a href="../en" title="Ghostfolio in English">English</a> | 
				
			||||
 | 
					        </li> | 
				
			||||
 | 
					        <li> | 
				
			||||
 | 
					          <a href="../es" title="Ghostfolio in Español">Español</a> | 
				
			||||
 | 
					        </li> | 
				
			||||
 | 
					        <li> | 
				
			||||
 | 
					          <a href="../fr" title="Ghostfolio en Français">Français</a> | 
				
			||||
 | 
					        </li> | 
				
			||||
 | 
					        <li> | 
				
			||||
 | 
					          <a href="../it" title="Ghostfolio in Italiano">Italiano</a> | 
				
			||||
 | 
					        </li> | 
				
			||||
 | 
					        <li> | 
				
			||||
 | 
					          <a href="../nl" title="Ghostfolio in Nederlands">Nederlands</a> | 
				
			||||
 | 
					        </li> | 
				
			||||
 | 
					        <li> | 
				
			||||
 | 
					          <a href="../pl" title="Ghostfolio in Polski">Polski</a> | 
				
			||||
 | 
					        </li> | 
				
			||||
 | 
					        <li> | 
				
			||||
 | 
					          <a href="../pt" title="Ghostfolio in Português">Português</a> | 
				
			||||
 | 
					        </li> | 
				
			||||
 | 
					        <li> | 
				
			||||
 | 
					          <a href="../tr" title="Ghostfolio in Türkçe">Türkçe</a> | 
				
			||||
 | 
					        </li> | 
				
			||||
 | 
					        <!-- | 
				
			||||
 | 
					          <li> | 
				
			||||
 | 
					            <a href="../uk" title="Ghostfolio in Українська">Українська</a> | 
				
			||||
 | 
					          </li> | 
				
			||||
 | 
					        --> | 
				
			||||
 | 
					      </ul> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					  <div class="mb-2 row text-center"> | 
				
			||||
 | 
					    <div class="col"> | 
				
			||||
 | 
					      © 2021 - {{ currentYear }} | 
				
			||||
 | 
					      <a href="https://ghostfol.io">Ghostfolio</a> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					  <div class="row text-center text-muted"> | 
				
			||||
 | 
					    <div class="col"> | 
				
			||||
 | 
					      <small class="d-block" i18n | 
				
			||||
 | 
					        >The risk of loss in trading can be substantial. It is not advisable to | 
				
			||||
 | 
					        invest money you may need in the short term.</small | 
				
			||||
 | 
					      > | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					</div> | 
				
			||||
 | 
					<div class="container d-none d-md-block mt-5"> | 
				
			||||
 | 
					  <div class="row justify-content-center"> | 
				
			||||
 | 
					    <div class="font-weight-bold line-height-1 logotype">Ghostfolio</div> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					</div> | 
				
			||||
@ -0,0 +1,16 @@ | 
				
			|||||
 | 
					:host { | 
				
			||||
 | 
					  background-color: rgba(var(--palette-foreground-text), 0.05); | 
				
			||||
 | 
					  display: block; | 
				
			||||
 | 
					  font-size: 90%; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  .logotype { | 
				
			||||
 | 
					    font-size: 13vw; | 
				
			||||
 | 
					    letter-spacing: -0.03em; | 
				
			||||
 | 
					    margin-bottom: -5svw; | 
				
			||||
 | 
					    opacity: 0.05; | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					:host-context(.theme-dark) { | 
				
			||||
 | 
					  background-color: rgba(var(--palette-foreground-text-dark), 0.05); | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,74 @@ | 
				
			|||||
 | 
					import { InfoItem, User } from '@ghostfolio/common/interfaces'; | 
				
			||||
 | 
					import { hasPermission, permissions } from '@ghostfolio/common/permissions'; | 
				
			||||
 | 
					import { publicRoutes } from '@ghostfolio/common/routes/routes'; | 
				
			||||
 | 
					import { GfLogoComponent } from '@ghostfolio/ui/logo'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import { CommonModule } from '@angular/common'; | 
				
			||||
 | 
					import { | 
				
			||||
 | 
					  ChangeDetectionStrategy, | 
				
			||||
 | 
					  Component, | 
				
			||||
 | 
					  CUSTOM_ELEMENTS_SCHEMA, | 
				
			||||
 | 
					  Input, | 
				
			||||
 | 
					  OnChanges | 
				
			||||
 | 
					} from '@angular/core'; | 
				
			||||
 | 
					import { RouterModule } from '@angular/router'; | 
				
			||||
 | 
					import { IonIcon } from '@ionic/angular/standalone'; | 
				
			||||
 | 
					import { addIcons } from 'ionicons'; | 
				
			||||
 | 
					import { openOutline } from 'ionicons/icons'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@Component({ | 
				
			||||
 | 
					  changeDetection: ChangeDetectionStrategy.OnPush, | 
				
			||||
 | 
					  imports: [CommonModule, GfLogoComponent, IonIcon, RouterModule], | 
				
			||||
 | 
					  schemas: [CUSTOM_ELEMENTS_SCHEMA], | 
				
			||||
 | 
					  selector: 'gf-footer', | 
				
			||||
 | 
					  styleUrls: ['./footer.component.scss'], | 
				
			||||
 | 
					  templateUrl: './footer.component.html' | 
				
			||||
 | 
					}) | 
				
			||||
 | 
					export class GfFooterComponent implements OnChanges { | 
				
			||||
 | 
					  @Input() public info: InfoItem; | 
				
			||||
 | 
					  @Input() public user: User; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  public currentYear = new Date().getFullYear(); | 
				
			||||
 | 
					  public hasPermissionForStatistics: boolean; | 
				
			||||
 | 
					  public hasPermissionForSubscription: boolean; | 
				
			||||
 | 
					  public hasPermissionToAccessFearAndGreedIndex: boolean; | 
				
			||||
 | 
					  public routerLinkAbout = publicRoutes.about.routerLink; | 
				
			||||
 | 
					  public routerLinkAboutChangelog = | 
				
			||||
 | 
					    publicRoutes.about.subRoutes.changelog.routerLink; | 
				
			||||
 | 
					  public routerLinkAboutLicense = | 
				
			||||
 | 
					    publicRoutes.about.subRoutes.license.routerLink; | 
				
			||||
 | 
					  public routerLinkAboutPrivacyPolicy = | 
				
			||||
 | 
					    publicRoutes.about.subRoutes.privacyPolicy.routerLink; | 
				
			||||
 | 
					  public routerLinkAboutTermsOfService = | 
				
			||||
 | 
					    publicRoutes.about.subRoutes.termsOfService.routerLink; | 
				
			||||
 | 
					  public routerLinkBlog = publicRoutes.blog.routerLink; | 
				
			||||
 | 
					  public routerLinkFaq = publicRoutes.faq.routerLink; | 
				
			||||
 | 
					  public routerLinkFeatures = publicRoutes.features.routerLink; | 
				
			||||
 | 
					  public routerLinkMarkets = publicRoutes.markets.routerLink; | 
				
			||||
 | 
					  public routerLinkOpenStartup = publicRoutes.openStartup.routerLink; | 
				
			||||
 | 
					  public routerLinkPricing = publicRoutes.pricing.routerLink; | 
				
			||||
 | 
					  public routerLinkResources = publicRoutes.resources.routerLink; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  public constructor() { | 
				
			||||
 | 
					    addIcons({ | 
				
			||||
 | 
					      openOutline | 
				
			||||
 | 
					    }); | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  public ngOnChanges() { | 
				
			||||
 | 
					    this.hasPermissionForStatistics = hasPermission( | 
				
			||||
 | 
					      this.info?.globalPermissions, | 
				
			||||
 | 
					      permissions.enableStatistics | 
				
			||||
 | 
					    ); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    this.hasPermissionForSubscription = hasPermission( | 
				
			||||
 | 
					      this.info?.globalPermissions, | 
				
			||||
 | 
					      permissions.enableSubscription | 
				
			||||
 | 
					    ); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    this.hasPermissionToAccessFearAndGreedIndex = hasPermission( | 
				
			||||
 | 
					      this.info?.globalPermissions, | 
				
			||||
 | 
					      permissions.enableFearAndGreedIndex | 
				
			||||
 | 
					    ); | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,62 @@ | 
				
			|||||
 | 
					import { CommonModule } from '@angular/common'; | 
				
			||||
 | 
					import { MatButtonModule } from '@angular/material/button'; | 
				
			||||
 | 
					import { MatDialogModule } from '@angular/material/dialog'; | 
				
			||||
 | 
					import { MatPaginatorModule } from '@angular/material/paginator'; | 
				
			||||
 | 
					import { MatSortModule } from '@angular/material/sort'; | 
				
			||||
 | 
					import { MatTableModule } from '@angular/material/table'; | 
				
			||||
 | 
					import { moduleMetadata } from '@storybook/angular'; | 
				
			||||
 | 
					import type { Meta, StoryObj } from '@storybook/angular'; | 
				
			||||
 | 
					import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					import { GfEntityLogoComponent } from '../entity-logo'; | 
				
			||||
 | 
					import { holdings } from '../mocks/holdings'; | 
				
			||||
 | 
					import { GfValueComponent } from '../value'; | 
				
			||||
 | 
					import { GfHoldingsTableComponent } from './holdings-table.component'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					export default { | 
				
			||||
 | 
					  title: 'Holdings Table', | 
				
			||||
 | 
					  component: GfHoldingsTableComponent, | 
				
			||||
 | 
					  decorators: [ | 
				
			||||
 | 
					    moduleMetadata({ | 
				
			||||
 | 
					      imports: [ | 
				
			||||
 | 
					        CommonModule, | 
				
			||||
 | 
					        GfEntityLogoComponent, | 
				
			||||
 | 
					        GfValueComponent, | 
				
			||||
 | 
					        MatButtonModule, | 
				
			||||
 | 
					        MatDialogModule, | 
				
			||||
 | 
					        MatPaginatorModule, | 
				
			||||
 | 
					        MatSortModule, | 
				
			||||
 | 
					        MatTableModule, | 
				
			||||
 | 
					        NgxSkeletonLoaderModule | 
				
			||||
 | 
					      ] | 
				
			||||
 | 
					    }) | 
				
			||||
 | 
					  ] | 
				
			||||
 | 
					} as Meta<GfHoldingsTableComponent>; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					type Story = StoryObj<GfHoldingsTableComponent>; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					export const Loading: Story = { | 
				
			||||
 | 
					  args: { | 
				
			||||
 | 
					    holdings: undefined, | 
				
			||||
 | 
					    baseCurrency: 'USD', | 
				
			||||
 | 
					    deviceType: 'desktop', | 
				
			||||
 | 
					    hasPermissionToOpenDetails: false, | 
				
			||||
 | 
					    hasPermissionToShowQuantities: true, | 
				
			||||
 | 
					    hasPermissionToShowValues: true, | 
				
			||||
 | 
					    locale: 'en-US', | 
				
			||||
 | 
					    pageSize: Number.MAX_SAFE_INTEGER | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					}; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					export const Default: Story = { | 
				
			||||
 | 
					  args: { | 
				
			||||
 | 
					    holdings, | 
				
			||||
 | 
					    baseCurrency: 'USD', | 
				
			||||
 | 
					    deviceType: 'desktop', | 
				
			||||
 | 
					    hasPermissionToOpenDetails: false, | 
				
			||||
 | 
					    hasPermissionToShowQuantities: true, | 
				
			||||
 | 
					    hasPermissionToShowValues: true, | 
				
			||||
 | 
					    locale: 'en-US', | 
				
			||||
 | 
					    pageSize: Number.MAX_SAFE_INTEGER | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					}; | 
				
			||||
@ -0,0 +1,293 @@ | 
				
			|||||
 | 
					import { PortfolioPosition } from '@ghostfolio/common/interfaces'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					export const holdings: PortfolioPosition[] = [ | 
				
			||||
 | 
					  { | 
				
			||||
 | 
					    allocationInPercentage: 0.042990776363386086, | 
				
			||||
 | 
					    assetClass: 'EQUITY' as any, | 
				
			||||
 | 
					    assetClassLabel: 'Equity', | 
				
			||||
 | 
					    assetSubClass: 'STOCK' as any, | 
				
			||||
 | 
					    assetSubClassLabel: 'Stock', | 
				
			||||
 | 
					    countries: [ | 
				
			||||
 | 
					      { | 
				
			||||
 | 
					        code: 'US', | 
				
			||||
 | 
					        weight: 1, | 
				
			||||
 | 
					        continent: 'North America', | 
				
			||||
 | 
					        name: 'United States' | 
				
			||||
 | 
					      } | 
				
			||||
 | 
					    ], | 
				
			||||
 | 
					    currency: 'USD', | 
				
			||||
 | 
					    dataSource: 'YAHOO' as any, | 
				
			||||
 | 
					    dateOfFirstActivity: new Date('2021-12-01T00:00:00.000Z'), | 
				
			||||
 | 
					    dividend: 0, | 
				
			||||
 | 
					    grossPerformance: 3856, | 
				
			||||
 | 
					    grossPerformancePercent: 0.46047289228564603, | 
				
			||||
 | 
					    grossPerformancePercentWithCurrencyEffect: 0.46047289228564603, | 
				
			||||
 | 
					    grossPerformanceWithCurrencyEffect: 3856, | 
				
			||||
 | 
					    holdings: [], | 
				
			||||
 | 
					    investment: 8374, | 
				
			||||
 | 
					    marketPrice: 244.6, | 
				
			||||
 | 
					    name: 'Apple Inc', | 
				
			||||
 | 
					    netPerformance: 3855, | 
				
			||||
 | 
					    netPerformancePercent: 0.460353475041796, | 
				
			||||
 | 
					    netPerformancePercentWithCurrencyEffect: 0.036440677966101696, | 
				
			||||
 | 
					    netPerformanceWithCurrencyEffect: 430, | 
				
			||||
 | 
					    quantity: 50, | 
				
			||||
 | 
					    sectors: [ | 
				
			||||
 | 
					      { | 
				
			||||
 | 
					        name: 'Technology', | 
				
			||||
 | 
					        weight: 1 | 
				
			||||
 | 
					      } | 
				
			||||
 | 
					    ], | 
				
			||||
 | 
					    symbol: 'AAPL', | 
				
			||||
 | 
					    tags: [], | 
				
			||||
 | 
					    transactionCount: 1, | 
				
			||||
 | 
					    url: 'https://www.apple.com', | 
				
			||||
 | 
					    valueInBaseCurrency: 12230 | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  { | 
				
			||||
 | 
					    allocationInPercentage: 0.02377401948293552, | 
				
			||||
 | 
					    assetClass: 'EQUITY' as any, | 
				
			||||
 | 
					    assetClassLabel: 'Equity', | 
				
			||||
 | 
					    assetSubClass: 'STOCK' as any, | 
				
			||||
 | 
					    assetSubClassLabel: 'Stock', | 
				
			||||
 | 
					    countries: [ | 
				
			||||
 | 
					      { | 
				
			||||
 | 
					        code: 'DE', | 
				
			||||
 | 
					        weight: 1, | 
				
			||||
 | 
					        continent: 'Europe', | 
				
			||||
 | 
					        name: 'Germany' | 
				
			||||
 | 
					      } | 
				
			||||
 | 
					    ], | 
				
			||||
 | 
					    currency: 'EUR', | 
				
			||||
 | 
					    dataSource: 'YAHOO' as any, | 
				
			||||
 | 
					    dateOfFirstActivity: new Date('2021-04-23T00:00:00.000Z'), | 
				
			||||
 | 
					    dividend: 192, | 
				
			||||
 | 
					    grossPerformance: 2226.700251889169, | 
				
			||||
 | 
					    grossPerformancePercent: 0.49083842309827874, | 
				
			||||
 | 
					    grossPerformancePercentWithCurrencyEffect: 0.29306136948826367, | 
				
			||||
 | 
					    grossPerformanceWithCurrencyEffect: 1532.8272791336772, | 
				
			||||
 | 
					    holdings: [], | 
				
			||||
 | 
					    investment: 4536.523929471033, | 
				
			||||
 | 
					    marketPrice: 322.2, | 
				
			||||
 | 
					    name: 'Allianz SE', | 
				
			||||
 | 
					    netPerformance: 2222.2921914357685, | 
				
			||||
 | 
					    netPerformancePercent: 0.48986674069961134, | 
				
			||||
 | 
					    netPerformancePercentWithCurrencyEffect: 0.034489367670592026, | 
				
			||||
 | 
					    netPerformanceWithCurrencyEffect: 225.48257403052068, | 
				
			||||
 | 
					    quantity: 20, | 
				
			||||
 | 
					    sectors: [ | 
				
			||||
 | 
					      { | 
				
			||||
 | 
					        name: 'Financial Services', | 
				
			||||
 | 
					        weight: 1 | 
				
			||||
 | 
					      } | 
				
			||||
 | 
					    ], | 
				
			||||
 | 
					    symbol: 'ALV.DE', | 
				
			||||
 | 
					    tags: [], | 
				
			||||
 | 
					    transactionCount: 2, | 
				
			||||
 | 
					    url: 'https://www.allianz.com', | 
				
			||||
 | 
					    valueInBaseCurrency: 6763.224181360202 | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  { | 
				
			||||
 | 
					    allocationInPercentage: 0.08038536990007467, | 
				
			||||
 | 
					    assetClass: 'EQUITY' as any, | 
				
			||||
 | 
					    assetClassLabel: 'Equity', | 
				
			||||
 | 
					    assetSubClass: 'STOCK' as any, | 
				
			||||
 | 
					    assetSubClassLabel: 'Stock', | 
				
			||||
 | 
					    countries: [ | 
				
			||||
 | 
					      { | 
				
			||||
 | 
					        code: 'US', | 
				
			||||
 | 
					        weight: 1, | 
				
			||||
 | 
					        continent: 'North America', | 
				
			||||
 | 
					        name: 'United States' | 
				
			||||
 | 
					      } | 
				
			||||
 | 
					    ], | 
				
			||||
 | 
					    currency: 'USD', | 
				
			||||
 | 
					    dataSource: 'YAHOO' as any, | 
				
			||||
 | 
					    dateOfFirstActivity: new Date('2018-10-01T00:00:00.000Z'), | 
				
			||||
 | 
					    dividend: 0, | 
				
			||||
 | 
					    grossPerformance: 12758.05, | 
				
			||||
 | 
					    grossPerformancePercent: 1.2619300787837724, | 
				
			||||
 | 
					    grossPerformancePercentWithCurrencyEffect: 1.2619300787837724, | 
				
			||||
 | 
					    grossPerformanceWithCurrencyEffect: 12758.05, | 
				
			||||
 | 
					    holdings: [], | 
				
			||||
 | 
					    investment: 10109.95, | 
				
			||||
 | 
					    marketPrice: 228.68, | 
				
			||||
 | 
					    name: 'Amazon.com, Inc.', | 
				
			||||
 | 
					    netPerformance: 12677.26, | 
				
			||||
 | 
					    netPerformancePercent: 1.253938941339967, | 
				
			||||
 | 
					    netPerformancePercentWithCurrencyEffect: -0.037866008722316276, | 
				
			||||
 | 
					    netPerformanceWithCurrencyEffect: -899.99926757812, | 
				
			||||
 | 
					    quantity: 100, | 
				
			||||
 | 
					    sectors: [ | 
				
			||||
 | 
					      { | 
				
			||||
 | 
					        name: 'Consumer Discretionary', | 
				
			||||
 | 
					        weight: 1 | 
				
			||||
 | 
					      } | 
				
			||||
 | 
					    ], | 
				
			||||
 | 
					    symbol: 'AMZN', | 
				
			||||
 | 
					    tags: [], | 
				
			||||
 | 
					    transactionCount: 1, | 
				
			||||
 | 
					    url: 'https://www.aboutamazon.com', | 
				
			||||
 | 
					    valueInBaseCurrency: 22868 | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  { | 
				
			||||
 | 
					    allocationInPercentage: 0.19216416482928922, | 
				
			||||
 | 
					    assetClass: 'LIQUIDITY' as any, | 
				
			||||
 | 
					    assetClassLabel: 'Liquidity', | 
				
			||||
 | 
					    assetSubClass: 'CRYPTOCURRENCY' as any, | 
				
			||||
 | 
					    assetSubClassLabel: 'Cryptocurrency', | 
				
			||||
 | 
					    countries: [], | 
				
			||||
 | 
					    currency: 'USD', | 
				
			||||
 | 
					    dataSource: 'COINGECKO' as any, | 
				
			||||
 | 
					    dateOfFirstActivity: new Date('2017-08-16T00:00:00.000Z'), | 
				
			||||
 | 
					    dividend: 0, | 
				
			||||
 | 
					    grossPerformance: 52666.7898248, | 
				
			||||
 | 
					    grossPerformancePercent: 26.333394912400003, | 
				
			||||
 | 
					    grossPerformancePercentWithCurrencyEffect: 26.333394912400003, | 
				
			||||
 | 
					    grossPerformanceWithCurrencyEffect: 52666.7898248, | 
				
			||||
 | 
					    holdings: [], | 
				
			||||
 | 
					    investment: 1999.9999999999998, | 
				
			||||
 | 
					    marketPrice: 97364, | 
				
			||||
 | 
					    name: 'Bitcoin', | 
				
			||||
 | 
					    netPerformance: 52636.8898248, | 
				
			||||
 | 
					    netPerformancePercent: 26.3184449124, | 
				
			||||
 | 
					    netPerformancePercentWithCurrencyEffect: -0.04760906442310894, | 
				
			||||
 | 
					    netPerformanceWithCurrencyEffect: -2732.737808972287, | 
				
			||||
 | 
					    quantity: 0.5614682, | 
				
			||||
 | 
					    sectors: [], | 
				
			||||
 | 
					    symbol: 'bitcoin', | 
				
			||||
 | 
					    tags: [], | 
				
			||||
 | 
					    transactionCount: 1, | 
				
			||||
 | 
					    url: null, | 
				
			||||
 | 
					    valueInBaseCurrency: 54666.7898248 | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  { | 
				
			||||
 | 
					    allocationInPercentage: 0.04307127421937313, | 
				
			||||
 | 
					    assetClass: 'EQUITY' as any, | 
				
			||||
 | 
					    assetClassLabel: 'Equity', | 
				
			||||
 | 
					    assetSubClass: 'STOCK' as any, | 
				
			||||
 | 
					    assetSubClassLabel: 'Stock', | 
				
			||||
 | 
					    countries: [ | 
				
			||||
 | 
					      { | 
				
			||||
 | 
					        code: 'US', | 
				
			||||
 | 
					        weight: 1, | 
				
			||||
 | 
					        continent: 'North America', | 
				
			||||
 | 
					        name: 'United States' | 
				
			||||
 | 
					      } | 
				
			||||
 | 
					    ], | 
				
			||||
 | 
					    currency: 'USD', | 
				
			||||
 | 
					    dataSource: 'YAHOO' as any, | 
				
			||||
 | 
					    dateOfFirstActivity: new Date('2023-01-03T00:00:00.000Z'), | 
				
			||||
 | 
					    dividend: 0, | 
				
			||||
 | 
					    grossPerformance: 5065.5, | 
				
			||||
 | 
					    grossPerformancePercent: 0.7047750229568411, | 
				
			||||
 | 
					    grossPerformancePercentWithCurrencyEffect: 0.7047750229568411, | 
				
			||||
 | 
					    grossPerformanceWithCurrencyEffect: 5065.5, | 
				
			||||
 | 
					    holdings: [], | 
				
			||||
 | 
					    investment: 7187.4, | 
				
			||||
 | 
					    marketPrice: 408.43, | 
				
			||||
 | 
					    name: 'Microsoft Corporation', | 
				
			||||
 | 
					    netPerformance: 5065.5, | 
				
			||||
 | 
					    netPerformancePercent: 0.7047750229568411, | 
				
			||||
 | 
					    netPerformancePercentWithCurrencyEffect: -0.015973588391056275, | 
				
			||||
 | 
					    netPerformanceWithCurrencyEffect: -198.899926757814, | 
				
			||||
 | 
					    quantity: 30, | 
				
			||||
 | 
					    sectors: [ | 
				
			||||
 | 
					      { | 
				
			||||
 | 
					        name: 'Technology', | 
				
			||||
 | 
					        weight: 1 | 
				
			||||
 | 
					      } | 
				
			||||
 | 
					    ], | 
				
			||||
 | 
					    symbol: 'MSFT', | 
				
			||||
 | 
					    tags: [], | 
				
			||||
 | 
					    transactionCount: 1, | 
				
			||||
 | 
					    url: 'https://www.microsoft.com', | 
				
			||||
 | 
					    valueInBaseCurrency: 12252.9 | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  { | 
				
			||||
 | 
					    allocationInPercentage: 0.18762679306394897, | 
				
			||||
 | 
					    assetClass: 'EQUITY' as any, | 
				
			||||
 | 
					    assetClassLabel: 'Equity', | 
				
			||||
 | 
					    assetSubClass: 'STOCK' as any, | 
				
			||||
 | 
					    assetSubClassLabel: 'Stock', | 
				
			||||
 | 
					    countries: [ | 
				
			||||
 | 
					      { | 
				
			||||
 | 
					        code: 'US', | 
				
			||||
 | 
					        weight: 1, | 
				
			||||
 | 
					        continent: 'North America', | 
				
			||||
 | 
					        name: 'United States' | 
				
			||||
 | 
					      } | 
				
			||||
 | 
					    ], | 
				
			||||
 | 
					    currency: 'USD', | 
				
			||||
 | 
					    dataSource: 'YAHOO' as any, | 
				
			||||
 | 
					    dateOfFirstActivity: new Date('2017-01-03T00:00:00.000Z'), | 
				
			||||
 | 
					    dividend: 0, | 
				
			||||
 | 
					    grossPerformance: 51227.500000005, | 
				
			||||
 | 
					    grossPerformancePercent: 23.843379101756675, | 
				
			||||
 | 
					    grossPerformancePercentWithCurrencyEffect: 23.843379101756675, | 
				
			||||
 | 
					    grossPerformanceWithCurrencyEffect: 51227.500000005, | 
				
			||||
 | 
					    holdings: [], | 
				
			||||
 | 
					    investment: 2148.499999995, | 
				
			||||
 | 
					    marketPrice: 355.84, | 
				
			||||
 | 
					    name: 'Tesla, Inc.', | 
				
			||||
 | 
					    netPerformance: 51197.500000005, | 
				
			||||
 | 
					    netPerformancePercent: 23.829415871596066, | 
				
			||||
 | 
					    netPerformancePercentWithCurrencyEffect: -0.12051410125545206, | 
				
			||||
 | 
					    netPerformanceWithCurrencyEffect: -7314.00091552734, | 
				
			||||
 | 
					    quantity: 150, | 
				
			||||
 | 
					    sectors: [ | 
				
			||||
 | 
					      { | 
				
			||||
 | 
					        name: 'Consumer Discretionary', | 
				
			||||
 | 
					        weight: 1 | 
				
			||||
 | 
					      } | 
				
			||||
 | 
					    ], | 
				
			||||
 | 
					    symbol: 'TSLA', | 
				
			||||
 | 
					    tags: [], | 
				
			||||
 | 
					    transactionCount: 1, | 
				
			||||
 | 
					    url: 'https://www.tesla.com', | 
				
			||||
 | 
					    valueInBaseCurrency: 53376 | 
				
			||||
 | 
					  }, | 
				
			||||
 | 
					  { | 
				
			||||
 | 
					    allocationInPercentage: 0.053051250766657634, | 
				
			||||
 | 
					    assetClass: 'EQUITY' as any, | 
				
			||||
 | 
					    assetClassLabel: 'Equity', | 
				
			||||
 | 
					    assetSubClass: 'ETF' as any, | 
				
			||||
 | 
					    assetSubClassLabel: 'ETF', | 
				
			||||
 | 
					    countries: [ | 
				
			||||
 | 
					      { | 
				
			||||
 | 
					        code: 'US', | 
				
			||||
 | 
					        weight: 1, | 
				
			||||
 | 
					        continent: 'North America', | 
				
			||||
 | 
					        name: 'United States' | 
				
			||||
 | 
					      } | 
				
			||||
 | 
					    ], | 
				
			||||
 | 
					    currency: 'USD', | 
				
			||||
 | 
					    dataSource: 'YAHOO' as any, | 
				
			||||
 | 
					    dateOfFirstActivity: new Date('2019-03-01T00:00:00.000Z'), | 
				
			||||
 | 
					    dividend: 0, | 
				
			||||
 | 
					    grossPerformance: 6845.8, | 
				
			||||
 | 
					    grossPerformancePercent: 1.0164758094605268, | 
				
			||||
 | 
					    grossPerformancePercentWithCurrencyEffect: 1.0164758094605268, | 
				
			||||
 | 
					    grossPerformanceWithCurrencyEffect: 6845.8, | 
				
			||||
 | 
					    holdings: [], | 
				
			||||
 | 
					    investment: 8246.2, | 
				
			||||
 | 
					    marketPrice: 301.84, | 
				
			||||
 | 
					    name: 'Vanguard Total Stock Market Index Fund ETF Shares', | 
				
			||||
 | 
					    netPerformance: 6746.3, | 
				
			||||
 | 
					    netPerformancePercent: 1.0017018833976383, | 
				
			||||
 | 
					    netPerformancePercentWithCurrencyEffect: 0.01085061564051406, | 
				
			||||
 | 
					    netPerformanceWithCurrencyEffect: 161.99969482422, | 
				
			||||
 | 
					    quantity: 50, | 
				
			||||
 | 
					    sectors: [ | 
				
			||||
 | 
					      { | 
				
			||||
 | 
					        name: 'Equity', | 
				
			||||
 | 
					        weight: 1 | 
				
			||||
 | 
					      } | 
				
			||||
 | 
					    ], | 
				
			||||
 | 
					    symbol: 'VTI', | 
				
			||||
 | 
					    tags: [], | 
				
			||||
 | 
					    transactionCount: 5, | 
				
			||||
 | 
					    url: 'https://www.vanguard.com', | 
				
			||||
 | 
					    valueInBaseCurrency: 15092 | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					]; | 
				
			||||
					Loading…
					
					
				
		Reference in new issue