Skip to content

Commit

Permalink
Merge pull request #195 from Arabasta/fixes#8
Browse files Browse the repository at this point in the history
Fixes#8
  • Loading branch information
Joot24 authored Aug 15, 2024
2 parents cd1c820 + 3721910 commit c5b900b
Show file tree
Hide file tree
Showing 6 changed files with 20 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,6 @@ public class PortfolioHistoryLog {
@NotNull
@Column(nullable = false)
private LocalDateTime timestamp;

private String logType;
}
Original file line number Diff line number Diff line change
Expand Up @@ -75,12 +75,10 @@ public ChartDataDTO transformBackTestDTOtoChartDataDTO(BackTestResultDTO backTes
.collect(Collectors.toList());

List<LocalDateTime> sortedLabels = new ArrayList<>();
// List<BigDecimal> sortedCapitalAbsoluteData = new ArrayList<>();
List<BigDecimal> sortedPercentChangeList = new ArrayList<>();

for (int index : indices) {
sortedLabels.add(labels.get(index));
// sortedCapitalAbsoluteData.add(capitalAbsoluteData.get(index));
sortedPercentChangeList.add(percentChangeList.get(index));
}

Expand All @@ -93,7 +91,7 @@ public ChartDataDTO transformBackTestDTOtoChartDataDTO(BackTestResultDTO backTes
}

ChartDatasetDTO capitalDataset = new ChartDatasetDTO("Capital", capitalAbsoluteData, "y-axis-1");
ChartDatasetDTO percentChangeDataset = new ChartDatasetDTO("Percent Change", capitalPercentChangeData, "y-axis-2");
ChartDatasetDTO percentChangeDataset = new ChartDatasetDTO("Performance", capitalPercentChangeData, "y-axis-2");

return new ChartDataDTO(sortedLabels, Arrays.asList(capitalDataset, percentChangeDataset));
}
Expand All @@ -114,19 +112,25 @@ public ChartDataDTO transformPortfolioHistoryLogtoChartDataDTO(List<PortfolioHis

labels.add(logs.get(0).getTimestamp());
capitalPercentChangeData.add(BigDecimal.ZERO);
capitalAbsoluteData.add(logs.get(0).getCurrentValue());
BigDecimal initialCapital = logs.get(0).getCurrentValue();
capitalAbsoluteData.add(initialCapital);


for (int i = 1; i < logs.size(); i++) {
PortfolioHistoryLog log = logs.get(i);

if (!log.getLogType().equals("Trade")) {
initialCapital = log.getCurrentValue();
continue;
}

labels.add(log.getTimestamp());
capitalAbsoluteData.add(log.getCurrentValue());

// Calculate percent change
BigDecimal previousValue = logs.get(i - 1).getCurrentValue();
BigDecimal percentChange = log.getCurrentValue()
.subtract(previousValue)
.divide(previousValue, 10, RoundingMode.HALF_UP)
.subtract(initialCapital)
.divide(initialCapital, 4, RoundingMode.HALF_UP)
.multiply(BigDecimal.valueOf(100))
.setScale(2, RoundingMode.HALF_UP);
capitalPercentChangeData.add(percentChange);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,7 @@ public PortfolioTransactionResponseDTO allocateFundsToPortfolio(String username,
} else {
User user = userService.getUserByUsername(username);
portfolioTransactionLogService.log(user, portfolio.getPortfolioType(), "Allocate", amount, portfolio.getCurrentValue());
portfolioHistoryLogService.log(portfolio, "Allocate");
walletTransactionLogService.log(user, amount, wallet.getTotalBalance(), "Allocate to Portfolio " + portfolio.getPortfolioType());
}
return new PortfolioTransactionResponseDTO(portfolio.getPortfolioType(), amount,
Expand All @@ -154,6 +155,7 @@ public PortfolioTransactionResponseDTO withdrawFundsFromPortfolio(String usernam
} else {
User user = userService.getUserByUsername(username);
portfolioTransactionLogService.log(user, portfolio.getPortfolioType(), "Withdraw", amount, portfolio.getCurrentValue());
portfolioHistoryLogService.log(portfolio, "Withdraw");
walletTransactionLogService.log(user, amount, wallet.getTotalBalance(), "Withdraw from Portfolio " + portfolio.getPortfolioType());

}
Expand Down Expand Up @@ -250,7 +252,7 @@ public void updateTrade(BigDecimal newUnitPrice, PortfolioTypeEnum portfolioType
if (portfolio.getAllocatedUnitQty().compareTo(BigDecimal.valueOf(0.0001)) > 0) {
portfolio.setCurrentValue(newUnitPrice.multiply(portfolio.getAllocatedUnitQty()));
save(portfolio);
portfolioHistoryLogService.log(portfolio);
portfolioHistoryLogService.log(portfolio, "Trade");
}
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,9 @@
import java.util.List;

public interface IPortfolioHistoryLogService {
@Transactional
void save(PortfolioHistoryLog portfolioHistoryLog);

@Transactional
void log(Portfolio portfolio);
void log(Portfolio portfolio, String logType);

List<PortfolioHistoryLog> getPortfolioHistoryLog(String username, PortfolioTypeEnum portfolioType);
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,13 @@ public void save(PortfolioHistoryLog portfolioHistoryLog) {

@Override
@Transactional
public void log(Portfolio portfolio) {
public void log(Portfolio portfolio, String logType) {
PortfolioHistoryLog logEntry = new PortfolioHistoryLog();

logEntry.setPortfolio(portfolio);
logEntry.setTimestamp(LocalDateTime.now());
logEntry.setCurrentValue(portfolio.getCurrentValue());
logEntry.setLogType(logType);

save(logEntry);
}
Expand Down
2 changes: 1 addition & 1 deletion front/react/public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
<title>React App</title>
<title>FourQuant.ai</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
Expand Down

0 comments on commit c5b900b

Please sign in to comment.