val test_data = List(List(Some(71.539941), None), List(Some(76.974614), None),
List(Some(65.226685), Some(6.35)), List(Some(78.354649), Some(12.241)),
List(Some(85.517645), Some(38.188)))
val test_deltas = List(List(Some(0.07596697626574789), None),
List(Some(-0.152620823795232), None),
List(Some(0.20126676681483952), Some(0.9277165354330709)),
List(Some(0.09141762603007778), Some(2.119679764725104)))
assert((yearly_yield(test_deltas, 100, 0) - 107).abs <= 2)
assert((yearly_yield(test_deltas, 100, 1) - 85).abs <= 2)
assert((yearly_yield(test_deltas, 100, 2) - 156).abs <= 2)
assert((yearly_yield(test_deltas, 100, 3) - 210).abs <= 2)
assert((investment(List("IBM", "BIDU"), 2004 to 2008, 100) - 298).abs <= 10)