Search in sources :

Example 11 with AccountBuilder

use of name.abuchen.portfolio.AccountBuilder in project portfolio by buchen.

the class SecurityIndexTest method testWhenQuotesAreOnlyAvailableUntilTheMiddleOfTheReportInterval.

@Test
public void testWhenQuotesAreOnlyAvailableUntilTheMiddleOfTheReportInterval() {
    LocalDate startDate = LocalDate.of(2012, 12, 31);
    LocalDate middleDate = LocalDate.of(2013, 2, 18);
    LocalDate endDate = LocalDate.of(2013, 3, 31);
    // create model
    Client client = new Client();
    // 
    new AccountBuilder().deposit_(startDate.atStartOfDay(), // 
    100 * Values.Amount.factor()).interest(startDate.atStartOfDay().plusDays(10), // 
    10 * Values.Amount.factor()).addTo(client);
    int startPrice = 50 * Values.Amount.factor();
    Security security = // 
    new SecurityBuilder().generatePrices(startPrice, startDate, // 
    middleDate).addTo(client);
    // calculate performance indices
    List<Exception> warnings = new ArrayList<Exception>();
    ReportingPeriod reportInterval = new ReportingPeriod.FromXtoY(startDate, endDate);
    CurrencyConverter converter = new TestCurrencyConverter();
    PerformanceIndex clientIndex = PerformanceIndex.forClient(client, converter, reportInterval, warnings);
    PerformanceIndex securityIndex = PerformanceIndex.forSecurity(clientIndex, security);
    // asserts
    assertTrue(warnings.isEmpty());
    LocalDate[] clientDates = clientIndex.getDates();
    LocalDate[] securityDates = securityIndex.getDates();
    assertThat(securityDates[0], is(startDate));
    assertThat(securityDates[securityDates.length - 1], is(middleDate));
    assertThat(clientDates[0], is(securityDates[0]));
    double[] securityAccumulated = securityIndex.getAccumulatedPercentage();
    int index = Dates.daysBetween(startDate, middleDate);
    assertThat(clientDates[index], is(middleDate));
    assertThat(securityAccumulated[0], IsCloseTo.closeTo(0d, 0.000001d));
    long middlePrice = security.getSecurityPrice(middleDate).getValue();
    double performance = (double) (middlePrice - startPrice) / (double) startPrice;
    assertThat(securityAccumulated[securityAccumulated.length - 1], IsCloseTo.closeTo(performance, 0.000001d));
}
Also used : ArrayList(java.util.ArrayList) Security(name.abuchen.portfolio.model.Security) LocalDate(java.time.LocalDate) TestCurrencyConverter(name.abuchen.portfolio.TestCurrencyConverter) CurrencyConverter(name.abuchen.portfolio.money.CurrencyConverter) TestCurrencyConverter(name.abuchen.portfolio.TestCurrencyConverter) AccountBuilder(name.abuchen.portfolio.AccountBuilder) Client(name.abuchen.portfolio.model.Client) SecurityBuilder(name.abuchen.portfolio.SecurityBuilder) Test(org.junit.Test)

Example 12 with AccountBuilder

use of name.abuchen.portfolio.AccountBuilder in project portfolio by buchen.

the class SecurityIndexTest method testIndexWhenNoQuotesExist.

@Test
public void testIndexWhenNoQuotesExist() {
    LocalDate startDate = LocalDate.of(2012, 12, 31);
    LocalDate endDate = LocalDate.of(2013, 3, 31);
    // create model
    Client client = new Client();
    // 
    new AccountBuilder().deposit_(startDate.atStartOfDay(), // 
    100 * Values.Amount.factor()).addTo(client);
    Security security = new Security();
    client.addSecurity(security);
    // calculate performance indices
    List<Exception> warnings = new ArrayList<Exception>();
    ReportingPeriod reportInterval = new ReportingPeriod.FromXtoY(startDate, endDate);
    CurrencyConverter converter = new TestCurrencyConverter();
    PerformanceIndex clientIndex = PerformanceIndex.forClient(client, converter, reportInterval, warnings);
    PerformanceIndex securityIndex = PerformanceIndex.forSecurity(clientIndex, security);
    // asserts
    assertTrue(warnings.isEmpty());
    assertThat(securityIndex.getDates().length, is(1));
    assertThat(securityIndex.getDates()[0], is(clientIndex.getFirstDataPoint().get()));
}
Also used : TestCurrencyConverter(name.abuchen.portfolio.TestCurrencyConverter) ArrayList(java.util.ArrayList) AccountBuilder(name.abuchen.portfolio.AccountBuilder) Client(name.abuchen.portfolio.model.Client) Security(name.abuchen.portfolio.model.Security) LocalDate(java.time.LocalDate) TestCurrencyConverter(name.abuchen.portfolio.TestCurrencyConverter) CurrencyConverter(name.abuchen.portfolio.money.CurrencyConverter) Test(org.junit.Test)

Example 13 with AccountBuilder

use of name.abuchen.portfolio.AccountBuilder in project portfolio by buchen.

the class ClientSecurityFilterTest method setupClient.

@Before
public void setupClient() {
    client = new Client();
    securityUSD = // 
    new SecurityBuilder().addPrice("2016-06-01", // 
    Values.Quote.factorize(100)).addTo(client);
    securityEUR = // 
    new SecurityBuilder(CurrencyUnit.USD).addPrice("2016-06-01", // 
    Values.Quote.factorize(100)).addTo(client);
    accountEUR = // 
    new AccountBuilder(CurrencyUnit.EUR).dividend("2017-01-01", Values.Amount.factorize(20), // 
    securityEUR).addTo(client);
    accountUSD = // 
    new AccountBuilder(CurrencyUnit.USD).dividend("2017-01-01", Values.Amount.factorize(20), // 
    securityUSD).addTo(client);
    // 
    new PortfolioBuilder(accountEUR).inbound_delivery(securityEUR, "2016-06-01", Values.Share.factorize(20), // 
    Values.Amount.factorize(2000)).inbound_delivery(securityUSD, "2016-06-01", Values.Share.factorize(20), // 
    Values.Amount.factorize(2000)).addTo(client);
}
Also used : AccountBuilder(name.abuchen.portfolio.AccountBuilder) PortfolioBuilder(name.abuchen.portfolio.PortfolioBuilder) Client(name.abuchen.portfolio.model.Client) SecurityBuilder(name.abuchen.portfolio.SecurityBuilder) Before(org.junit.Before)

Example 14 with AccountBuilder

use of name.abuchen.portfolio.AccountBuilder in project portfolio by buchen.

the class SecurityIndexTest method testThatSecurityIndexIsCalculated.

@Test
public void testThatSecurityIndexIsCalculated() {
    LocalDate startDate = LocalDate.of(2012, 12, 31);
    LocalDate endDate = LocalDate.of(2013, 4, 1);
    long startPrice = 100 * Values.Amount.factor();
    // create model
    Client client = new Client();
    // 
    new AccountBuilder().deposit_(startDate.atStartOfDay(), // 
    startPrice).addTo(client);
    Security security = // 
    new SecurityBuilder().generatePrices(startPrice, startDate, // 
    endDate).addTo(client);
    // calculate performance indices
    List<Exception> warnings = new ArrayList<Exception>();
    ReportingPeriod reportInterval = new ReportingPeriod.FromXtoY(startDate, endDate);
    CurrencyConverter converter = new TestCurrencyConverter();
    PerformanceIndex clientIndex = PerformanceIndex.forClient(client, converter, reportInterval, warnings);
    PerformanceIndex securityIndex = PerformanceIndex.forSecurity(clientIndex, security);
    // asserts
    assertTrue(warnings.isEmpty());
    LocalDate[] dates = securityIndex.getDates();
    assertThat(dates[0], is(startDate));
    assertThat(dates[dates.length - 1], is(endDate));
    long lastPrice = security.getSecurityPrice(endDate).getValue();
    double performance = (double) (lastPrice - startPrice) / (double) startPrice;
    double[] accumulated = securityIndex.getAccumulatedPercentage();
    assertThat(accumulated[0], is(0d));
    assertThat(accumulated[accumulated.length - 1], IsCloseTo.closeTo(performance, 0.000001d));
}
Also used : ArrayList(java.util.ArrayList) Security(name.abuchen.portfolio.model.Security) LocalDate(java.time.LocalDate) TestCurrencyConverter(name.abuchen.portfolio.TestCurrencyConverter) CurrencyConverter(name.abuchen.portfolio.money.CurrencyConverter) TestCurrencyConverter(name.abuchen.portfolio.TestCurrencyConverter) AccountBuilder(name.abuchen.portfolio.AccountBuilder) Client(name.abuchen.portfolio.model.Client) SecurityBuilder(name.abuchen.portfolio.SecurityBuilder) Test(org.junit.Test)

Example 15 with AccountBuilder

use of name.abuchen.portfolio.AccountBuilder in project portfolio by buchen.

the class SecurityIndexTest method testWhenQuotesAreOnlyAvailableFromTheMiddleOfTheReportInterval.

@Test
public void testWhenQuotesAreOnlyAvailableFromTheMiddleOfTheReportInterval() {
    LocalDate startDate = LocalDate.of(2012, 12, 31);
    LocalDate middleDate = LocalDate.of(2013, 2, 18);
    LocalDate endDate = LocalDate.of(2013, 4, 1);
    // create model
    Client client = new Client();
    // 
    new AccountBuilder().deposit_(startDate.atStartOfDay(), // 
    100 * Values.Amount.factor()).interest(startDate.atStartOfDay().plusDays(10), // 
    10 * Values.Amount.factor()).addTo(client);
    Security security = // 
    new SecurityBuilder().generatePrices(50 * Values.Amount.factor(), middleDate, // 
    endDate).addTo(client);
    // calculate performance indices
    List<Exception> warnings = new ArrayList<Exception>();
    ReportingPeriod reportInterval = new ReportingPeriod.FromXtoY(startDate, endDate);
    CurrencyConverter converter = new TestCurrencyConverter();
    PerformanceIndex clientIndex = PerformanceIndex.forClient(client, converter, reportInterval, warnings);
    PerformanceIndex securityIndex = PerformanceIndex.forSecurity(clientIndex, security);
    // asserts
    assertTrue(warnings.isEmpty());
    LocalDate[] clientDates = clientIndex.getDates();
    LocalDate[] securityDates = securityIndex.getDates();
    assertThat(securityDates[0], is(middleDate));
    assertThat(securityDates[securityDates.length - 1], is(endDate));
    assertThat(clientDates[clientDates.length - 1], is(securityDates[securityDates.length - 1]));
    double[] clientAccumulated = clientIndex.getAccumulatedPercentage();
    double[] securityAccumulated = securityIndex.getAccumulatedPercentage();
    int index = Dates.daysBetween(startDate, middleDate);
    assertThat(clientDates[index], is(middleDate));
    assertThat(securityAccumulated[0], IsCloseTo.closeTo(clientAccumulated[index], 0.000001d));
    long middlePrice = security.getSecurityPrice(middleDate).getValue();
    long lastPrice = security.getSecurityPrice(endDate).getValue();
    // 10% is interest of the deposit
    double performance = (double) (lastPrice - middlePrice) / (double) middlePrice + 0.1d;
    assertThat(securityAccumulated[securityAccumulated.length - 1], IsCloseTo.closeTo(performance, 0.000001d));
}
Also used : ArrayList(java.util.ArrayList) Security(name.abuchen.portfolio.model.Security) LocalDate(java.time.LocalDate) TestCurrencyConverter(name.abuchen.portfolio.TestCurrencyConverter) CurrencyConverter(name.abuchen.portfolio.money.CurrencyConverter) TestCurrencyConverter(name.abuchen.portfolio.TestCurrencyConverter) AccountBuilder(name.abuchen.portfolio.AccountBuilder) Client(name.abuchen.portfolio.model.Client) SecurityBuilder(name.abuchen.portfolio.SecurityBuilder) Test(org.junit.Test)

Aggregations

AccountBuilder (name.abuchen.portfolio.AccountBuilder)23 Client (name.abuchen.portfolio.model.Client)22 TestCurrencyConverter (name.abuchen.portfolio.TestCurrencyConverter)18 Test (org.junit.Test)18 CurrencyConverter (name.abuchen.portfolio.money.CurrencyConverter)15 SecurityBuilder (name.abuchen.portfolio.SecurityBuilder)13 Security (name.abuchen.portfolio.model.Security)12 Account (name.abuchen.portfolio.model.Account)10 PortfolioBuilder (name.abuchen.portfolio.PortfolioBuilder)9 ArrayList (java.util.ArrayList)7 LocalDate (java.time.LocalDate)6 AccountTransaction (name.abuchen.portfolio.model.AccountTransaction)3 Unit (name.abuchen.portfolio.model.Transaction.Unit)3 LocalDateTime (java.time.LocalDateTime)2 TaxonomyBuilder (name.abuchen.portfolio.TaxonomyBuilder)2 Portfolio (name.abuchen.portfolio.model.Portfolio)2 Taxonomy (name.abuchen.portfolio.model.Taxonomy)2 CurrencyUnit (name.abuchen.portfolio.money.CurrencyUnit)2 Before (org.junit.Before)2 Month (java.time.Month)1