mirror of https://github.com/ghostfolio/ghostfolio
				
				
			
							committed by
							
								
								GitHub
							
						
					
				
				 14 changed files with 686 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