| author | Christian Urban <christian.urban@kcl.ac.uk> | 
| Sat, 04 Nov 2023 18:53:37 +0000 | |
| changeset 473 | be818c5a67d4 | 
| parent 467 | 1b879b3e704e | 
| permissions | -rw-r--r-- | 
| 396 | 1 | // Main Part 1 about a really dumb investment strategy | 
| 266 | 2 | //=================================================== | 
| 129 | 3 | |
| 396 | 4 | object M1 {
 | 
| 129 | 5 | |
| 6 | //two test portfolios | |
| 7 | ||
| 144 | 8 | val blchip_portfolio = List("GOOG", "AAPL", "MSFT", "IBM", "FB", "AMZN", "BIDU")
 | 
| 9 | val rstate_portfolio = List("PLD", "PSA", "AMT", "AIV", "AVB", "BXP", "CCI", 
 | |
| 199 | 10 | "DLR", "EQIX", "EQR", "ESS", "EXR", "FRT", "HCP") | 
| 129 | 11 | |
| 135 | 12 | import io.Source | 
| 13 | import scala.util._ | |
| 132 | 14 | |
| 425 
6e990ae2c6a3
updated solutions and templates
 Christian Urban <christian.urban@kcl.ac.uk> parents: 
396diff
changeset | 15 | // ADD YOUR CODE BELOW | 
| 
6e990ae2c6a3
updated solutions and templates
 Christian Urban <christian.urban@kcl.ac.uk> parents: 
396diff
changeset | 16 | //====================== | 
| 
6e990ae2c6a3
updated solutions and templates
 Christian Urban <christian.urban@kcl.ac.uk> parents: 
396diff
changeset | 17 | |
| 
6e990ae2c6a3
updated solutions and templates
 Christian Urban <christian.urban@kcl.ac.uk> parents: 
396diff
changeset | 18 | |
| 
6e990ae2c6a3
updated solutions and templates
 Christian Urban <christian.urban@kcl.ac.uk> parents: 
396diff
changeset | 19 | // (1) | 
| 347 | 20 | def get_january_data(symbol: String, year: Int) : List[String] = ??? | 
| 132 | 21 | |
| 135 | 22 | |
| 467 | 23 | |
| 425 
6e990ae2c6a3
updated solutions and templates
 Christian Urban <christian.urban@kcl.ac.uk> parents: 
396diff
changeset | 24 | // (2) | 
| 347 | 25 | def get_first_price(symbol: String, year: Int) : Option[Double] = ??? | 
| 129 | 26 | |
| 27 | ||
| 425 
6e990ae2c6a3
updated solutions and templates
 Christian Urban <christian.urban@kcl.ac.uk> parents: 
396diff
changeset | 28 | // (3) | 
| 347 | 29 | def get_prices(portfolio: List[String], years: Range) : List[List[Option[Double]]] = ??? | 
| 135 | 30 | |
| 129 | 31 | |
| 32 | ||
| 425 
6e990ae2c6a3
updated solutions and templates
 Christian Urban <christian.urban@kcl.ac.uk> parents: 
396diff
changeset | 33 | // (4) | 
| 347 | 34 | def get_delta(price_old: Option[Double], price_new: Option[Double]) : Option[Double] = ??? | 
| 129 | 35 | |
| 199 | 36 | |
| 37 | ||
| 425 
6e990ae2c6a3
updated solutions and templates
 Christian Urban <christian.urban@kcl.ac.uk> parents: 
396diff
changeset | 38 | // (5) | 
| 347 | 39 | def get_deltas(data: List[List[Option[Double]]]) : List[List[Option[Double]]] = ??? | 
| 135 | 40 | |
| 425 
6e990ae2c6a3
updated solutions and templates
 Christian Urban <christian.urban@kcl.ac.uk> parents: 
396diff
changeset | 41 | // (6) | 
| 347 | 42 | def yearly_yield(data: List[List[Option[Double]]], balance: Long, index: Int) : Long = ??? | 
| 135 | 43 | |
| 129 | 44 | |
| 425 
6e990ae2c6a3
updated solutions and templates
 Christian Urban <christian.urban@kcl.ac.uk> parents: 
396diff
changeset | 45 | // (7) | 
| 347 | 46 | def compound_yield(data: List[List[Option[Double]]], balance: Long, index: Int) : Long = ??? | 
| 129 | 47 | |
| 347 | 48 | def investment(portfolio: List[String], years: Range, start_balance: Long) : Long = ??? | 
| 129 | 49 | |
| 50 | ||
| 51 | ||
| 199 | 52 | |
| 53 | //Test cases for the two portfolios given above | |
| 129 | 54 | |
| 266 | 55 | //println("Real data: " + investment(rstate_portfolio, 1978 to 2019, 100))
 | 
| 56 | //println("Blue data: " + investment(blchip_portfolio, 1978 to 2019, 100))
 | |
| 129 | 57 | |
| 199 | 58 | |
| 281 | 59 | } |