Working of the application

1) Take the following inputs from the user

  • Simulation Dates: start date and end date for simulation

  • Products/Sectors : User can invest product wise or sector wise.Take as input the products or sectors the user would like to invest in.

  • Weights : User should specify the fraction of total money he wants to allocate to each product/sector.By default,you can use equal allocation

  • Rebalance frequency: The frequency with which the portfolio will be rebalanced to initial weights.The composition of the portfolio will keep changing over time,so rebalancing will adjusted the weights to initial weights set by the user on every rebalance_frequency(th) day


    Note that you do not need to take the inputs in a conventional text box method(use your creativity). TIP: I would prefer sliders for rebalance frequency and wheel (like pie chart) for weights. (

2) Compute the performance statistics corresponding to the simulation. This is a good link to read about portfolio rebalancing

3) Allow the user to adjust the portfolio parameters (products/sectors,weight of each product/sector in the portfolio,rebalance frequency, simulation dates[start date and end date]) and show new results within a short response time.


You are provided with the closing price data for 3 products in each of the 5 sectors(IT,Power,Banking,FMCG,Automobile).All the products may not have data for a particular day(due to various reasons) but for most days all products will have data.A common workaround is to use the last day closing price for missing data

Performance Statistics for Portfolio

The important statistics that need to be displayed are:

  • Cumulative Profit/Loss(PnL) graph (or Cumulative returns graph): The graph of cumulative sum of daily PnL  of the portfolio.Note that if you plot Cumulative returns instead of Cumulative PnL, then you should use the daily log return series to compute cumulative sum and then convert the series to nominal returns (using (exp(x)-1)*100) because nominal returns are not additive   

  • Net returns : The net returns of the portfolio for the simulation period

  • Annualized returns : (exp(252*mean(daily_log_return_series))-1)*100 %

  • Maximum Drawdown (in percent): The largest peak-to-trough decline in the value of a portfolio (before a new peak is achieved).Check

Apart from this if you feel that any other statistics(like pnl stdev, pnl sharpe ratio) are relevant, please feel free to use them as well.

Advice for design

Please design the application keeping in mind how a user would like the application to work without compromising the performance


  • Zero transaction costs for trading

  • All weights are positive and sum to 1