How costly are your `Option`s?

Code which is optimised and performant (for a majority of use cases) doesn't have to be ugly and unreadable, for there's a lot of performance gains to be made by simply following good design and clean coding principles. Scala's Option is a very idiomatic way of representing optional values. Now, I'm not against the use of Option , however, more often than I'd like to, have I come across it being misused/abused. For example, when defining generic types: case class Asset(name: String , shareQuantity: Option[ Int ] , sharePrice: Option[ BigDecimal ] , bondYield: Option[ BigDecimal ] , cashValue: Option[ Amount ]) which should've been modelled as specialised types: sealed abstract class Asset(name: String ) case class Stock(name: String , shareQuantity: Int, sharePrice: BigDecimal ) extends Asset(name) case class Bond(name: String , bondYield: BigDecimal ) extends Asset(name) case class C...