A stochastic dynamic programming model is presented for decision-making by the manager of a small rhino reserve facing a poaching threat, with the objective of maximizing the rhino population size in the long term. The manager decides annually what proportion of the budget to spend on dehorning as opposed to law enforcement. Poacher incentives depend on revenues from illegal horn sales, which are related to the manager's decisions through the mean horn size of the rhino population (affected by spending on dehorning). Poacher incentives also depend on hunting costs, which are related to the manager's decisions through the risk of capture and punishment (affected by spending on law enforcement). The results suggest that, at realistic parameter values, the optimal strategy is to dehorn as many rhinos as possible annually except at very low rhino population sizes, budgets or mean horn sizes. The simple strategy of dehorning annually regardless of population size or mean horn size gives very similar results to the optimal strategy. Other potential strategies (such as dehorning only half the rhinos each year) performed badly. Selling horns and reinvesting the proceeds in rhino conservation did not provide enough revenue to significantly increase rhino population sizes.