You can create a display variable that mirrors the postaction. Add the markup percentage in the attribute options cost field, then:
Code:
<mvt:item name="ry_toolbelt" param="assign|g.markup|l.all_settings:option:cost" />
<mvt:item name="ry_toolbelt" param="assign|g.displayprice|l.all_settings:option:price * g.markup" />
<mvt:if expr="l.settings:option:price GT 0"><p class="option">Add &mvt:global:displayprice;</p></mvt>
Miva already does what your asking for as inventory variants, it just requires some initial set-up and maintenence that can be done with spreadsheet uploads. Or you can use the toolbelt to do it dynamically.