## Extension 1: Sad Cycles (5 points):

Authors
• Fede Rozenberg
This extension needs a unit test. For now, run it as indicated at the end of this assignment.

#### Overview

So it turns out that numbers can feel things. We define a happy or sad number through this process:

1. Split up the number into its digits.
2. Square the digits and sum them.
3. Repeat with the new sum until you reach a set of numbers that repeat or the number 1.
4. If your process results in a repeating 1, your initial number was happy! Otherwise, it has fallen into a cycle of depression, characterized by the repeating numbers [4, 16, 37, 58, 89, 145, 42, 20, 4...] How sad.
For example, starting with the number 15, our process yields:
• 12 + 52 = 26
• 22 + 62 = 40
• 42 + 02 = 16
• 12 + 62 = 37
• 32 + 72 = 58
Here you can see our number has fallen into the beginning stages of depression...

In this extension you will be designing a program that uses sets to find the sad cycle of a number for an arbitrary power.

#### Procedure

In the sadcycle package of your extensions folder, create a SadCycler class.

• Create a method Set<Long> findCycle(int base, long n) that takes in a number n and either returns a Set<Long> with the base-sad cycle for n or with 1 as its only element.
A long is simply twice as long as an int. I recommend using it here because some of the numbers found in higher base-sad cycles can be quite large.
• Feel free to create any other methods you might need.
I highly recommend partitioning the splitting of digits, raising to the power of base, and summing into one method. The trick here is figuring out how to treat every digit in a number as its own entity.
• Test your program on inputs you find documented here. Show these results to a TA and convince him or her they are right for credit on this assignment.

When you done with this extension, you must be cleared by the TA to receive credit.
• Commit all your work to your repository
• Fill in the form below with the relevant information
• Have a TA check your work
• The TA should check your work and then fill in his or her name
• Click OK while the TA watches
• If you request propagation, it does not happen immediately, but should be posted in the next day or so

This demo box is for extension 8.1
 Last name WUSTL Key Propagate? (or your numeric ID) Do not propagate e.g. Smith j.smith 1 Copy from 1 to all others 2 Copy from 2 to all others

## Extension 2: Sharpe Computation (5 points):

Authors
Issues: Working on it, stay tuned

#### Introduction

Have you wondered how to determine the profitability of a portfolio or of a given trading strategy? In this assignment, you calculate the profitability of a portfolio using one of the most fundamental tools of finance: the Sharpe ratio.

#### Sharpe Ratio

The Sharpe ratio is a measure for calculating risk-adjusted return. It was developed by Nobel laureate William F. Sharpe.

Suppose you are considering investing a given amount of money in one of two possible ways:

a
This investment has risk. You may experience a positive return on your investment, or you could lose your money. Let Ra denote the return you will receive if your money is invested this way.
b
This investment has no risk. So let us say that you will certainly receive Rb funds if your money is invested this way.
The Sharpe ratio is the average return earned in excess of the risk-free rate per unit of risk. Subtracting the risk-free rate from the mean return, the performance of the portfolio with risk can be isolated. For example, a portfolio engaging in zero risk, such as the purchase of U.S. Treasury bills or bonds, has a Sharpe ratio of exactly zero (the numerator is 0).

The Sharpe ratio is calculated with this formula:

RKC need picture

To calculate average rate of return of x, just add up all the provided returns for each individual stock and divide by the number of stocks.

Assume that for this portfolio, the risk free rate or Rf is 2%.

The portfolio standard deviation can be calculated using this formula:

RKC Do exponentiation using this Stddev = [ (wgt1 ^2 * s1 ^2) + (wgt2 ^2 * s2 ^ 2) + (2 * w1 * w2 * cov12) ] ^ .5

where

• wgt1 is the weight of asset 1
• wgt2 is the weight of asset 2
• s1 is the standard deviation of asset 1
• s2 is the standard deviation of asset 2
• cov12 is the covariant of assets 1 and 2

For the purposes of this extension, assume that all the stocks have no correlation with each other and are weighted equally. This means that the covariance between any two stocks is 0 and that the weight of each stock is simply 1/n where n is the number of stocks.

Now that you understand what the Sharpe ratio is, it is time to apply what you have learned.

Directions

Click on the extensions folder and create a new class called CalculateSharpeRatio in the sharperatio package.

Set up the ArgsProcessor to take input from datafiles/stockaccount. This is where the data you will use to calculate the Sharpe ratio comes from.

• On the left, there will be a column of doubles. This is the value of the expected return for each stock.
• On the right, there will be another column of doubles. These are the variances for each individual stock.

You will have to create a List of doubles for both the expected returns and the variances in the main method.

After, write up a loop to read in the doubles for the expected returns and another loop for the standard deviations. Once your program has read in these values, you can start making your calculations for the Sharpe ratio.

Calculate the Sharpe ratio and round it to two decimal points then print it out.

• You should also print out whether the portfolio is profitable or not. In general, a portfolio with a Sharpe ratio greater than one is considered profitable.
When you done with this extension, you must be cleared by the TA to receive credit.
• Commit all your work to your repository
• Fill in the form below with the relevant information
• Have a TA check your work
• The TA should check your work and then fill in his or her name
• Click OK while the TA watches
• If you request propagation, it does not happen immediately, but should be posted in the next day or so

This demo box is for extension 8.2
 Last name WUSTL Key Propagate? (or your numeric ID) Do not propagate e.g. Smith j.smith 1 Copy from 1 to all others 2 Copy from 2 to all others