| author | Christian Urban <christian.urban@kcl.ac.uk> | 
| Mon, 21 Jul 2025 16:38:07 +0100 | |
| changeset 491 | 2a30c7dfe3ed | 
| 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: 
396 
diff
changeset
 | 
15  | 
// ADD YOUR CODE BELOW  | 
| 
 
6e990ae2c6a3
updated solutions and templates
 
Christian Urban <christian.urban@kcl.ac.uk> 
parents: 
396 
diff
changeset
 | 
16  | 
//======================  | 
| 
 
6e990ae2c6a3
updated solutions and templates
 
Christian Urban <christian.urban@kcl.ac.uk> 
parents: 
396 
diff
changeset
 | 
17  | 
|
| 
 
6e990ae2c6a3
updated solutions and templates
 
Christian Urban <christian.urban@kcl.ac.uk> 
parents: 
396 
diff
changeset
 | 
18  | 
|
| 
 
6e990ae2c6a3
updated solutions and templates
 
Christian Urban <christian.urban@kcl.ac.uk> 
parents: 
396 
diff
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: 
396 
diff
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: 
396 
diff
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: 
396 
diff
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: 
396 
diff
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: 
396 
diff
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: 
396 
diff
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  | 
}  |