CS 458/558 - Problem Set 2

Assigned:Monday September 26
Deadline:Wednesday October 12, 11:59pm

Capital Budgeting and Net Present Value

In the lecture notes, we discussed the following case.
As an executive at Ford, I need to build a new auto plant. The options are a $40 million plant in Ohio that can produce 1000 cars a month with union labor, with an expected lifetime of 12 years and a $20 million dollar plant in South Carolina that can produce 500 cars a month with non-union labor and tax incentives and an expected lifetime of 10 years. Which is best?
This was insufficient to solve the problem. We provided additional data.
We can assume in each case that it takes two years to build the factory (which is included in the lifetime of the plant), and the cost is split evenly over those two years. Each car produced generates $10,000 in profit, excluding production costs. Annual costs are $6500 per car for union workers in $4000 per car for non union workers. The discount rate is 5%.
For this problem set, we want you to implement a program in either R or Python which solves this problem, in three stages.

Data Structures

The choices are always assumed to be Ford automobile factories with the same set of stakeholders. The relevant parameters will be given by the following:

  • option 1:
     location: "OH",     
     cost: 40000000,
     yearstocomplete: 2,
     lifetime: 12,
     discount: .05,
     union: TRUE,
     costpercar: 6500,
     revenuepercar: 10000,
     monthlyoutput: 1000,
    
  • option 2:
     location: "SC",     
     cost: 20000000,
     yearstocomplete: 2,
     lifetime: 10,
     discount: .05,
     union: FALSE,
     costpercar: 4000,
     revenuepercar: 10000,
     monthlyoutput: 500,
    

    Each of the numeric parameters are subject to the plus or minus 20% sensitivity analysis, (except for the years).

    We stipulate an object oriented approach, with classes for decisions and options. You might also want classes for stakeholders and explanations. For example, the decide function can instantiate a decision object which has fields for multiple stakeholders and multiple options. The npv function could take an option parameter, which it updates and returns to decide.

    Here is an example of the start of an object oriented approach in Python: hw2.py (in codeskulptor)

    Here is an example of the start of an object oriented approach in R: hw2.R (See R Reference Classes, e.g. http://www.inside-r.org/r-doc/methods/ReferenceClasses)