You need three values to forecast a cost: Speed of the team, estimate from the team and the cost of the team. Leading to a formula like this:
FeatureStoryPoints * (TeamCost / AverageVelocity) = Estimated Price
- AverageVelocity: For speed you could take the average velocity (yesterday's weather) of a team. Do calculate capacity and normalize the velocity for each sprint.
TeamCapacity% =
ActualHoursAvailableForThisSprint / ContractHoursOfAllTeamMembers
NormalizedVelocity = SprintCompletedStoryPoints * TeamCapacity%.
AverageVelocity = (NormalizedVelocitySprint1 + Sprint2 + Sprint3) / 3
- FeatureStoryPoints : For the estimates you could try to make the stories really small as it reduces uncertainty. With a list of small estimated user-stories in story-point you can forecast how many Sprint it would cost to complete the stories. Practise stories splitting. Let the full team estimate and discuss to get all the uncertainties on the table.
- TeamCost: For the cost you take the full cost of the team and calculate what the team costs per Sprint. Do take all the costs into account, not just salaries. E.g. vacation days, training, sick-days, over-head people (HR, managers, etc), building costs and materials. Know what your team costs per Sprint.
So technically you could come up with an average cost per story-point, just make sure you re-evaluate the velocity and costs as teams change this metric will change as well. Also do not re-use old estimates, clear them and use the new info from the last iterations to re-estimate continuously.
For fixed prices I would always add a good margin so you do not get into trouble. Communicate this to your clients. I mean telling them that a non-fixed price would probably be cheaper most of the times.
Do think if you want to sell features clients think they need or how you can help them finding the impact or behavioural change they need to grow their business. Selling an Agile way of working might be more interesting long-term than just selling features.