If you have observers of the value of assetAmount, or bindings to the value of assetAmount, those observers and bindings would be updated appropriately when the values affecting assetAmount changed. The assetAmount getter is then invoked.
In the assetAmount getter, you can then recalculate the assetAmount that you want to return.
If you want to do the calculation every time the getter is called, you're done.
If you want to save the value of the calculation in the ivar, then you have to make sure to access the ivar directly to avoid KVO and bindings triggering. (Was a catch-22)
If you do not want the getter to be calculating the value every time, I believe you can just call assetAmount's setter from the setters for the other values. You wouldn't even need the valuesAffecting stuff, because you'd be calling the setter and triggering KVO.
In that sense, you'd need keyPathsForValuesAffectingValueForKey: only if you want your assetAmount getter to do the calculation every time. If you want it saved in the ivar, just use its setter when the other values change.
(Also, you can implement keyPathsForValuesAffectingAssetAmount if you were to go that route)