Computational Finance: Midterm Answers

April 19, 2000
Philip H. Dybvig

This is a closed-book examination. Answer all questions as directed. Mark your answers directly on the examination. On the valuation question, make sure your answer is clearly indicated. There are no trick questions on the exam. Good luck!
A. General Concepts Very Short Answer: 20 points

  1. We buy cheap gold futures in one market and sell the identical contract for more in another market to lock in a riskless profit. This is most related to which concept: arbitrage, dominance, hedging, or value-at-risk?
    arbitrage
    
  2. If the call option price equals the underlying stock price, we would rather buy the stock than the option because the stock is worth more in most contingencies and is never worth less. This is most related to which concept: arbitrage, dominance, hedging, or value-at-risk?

     
    dominance 
    
  3. We sell short a portfolio of the stock and the bond that has the same terminal payoff as employee stock options we own. This is best described by which concept: arbitrage, dominance, hedging, or value-at-risk?

     
    hedging
    
  4. Name three interest derivative securities.

     
    many possible answers, for example caps, floors, bond options, swaps,
    mortgages, and inverse floaters
    
  5. Name a commodity whose price can rationally be expected to drop for certain at a known future time.

     
    many possible answers, for example wheat (may be expected to drop at the
    harvest) or oil (may be expected to drop when new pipeline capacity comes
    online)
    
B. Financial Computation 40 points

A Simple Option Pricing Problem in One Period

Riskless bond (interest rate is 20%):

100 --- 120

Futures price:

    |- 80
50 -|
    |- 30

Derivative security (call futures option with a strike of 50):

    |- 30
 ? -|
    |-  0
  1. What is the portfolio of the futures contract and the bond that replicates the option? (Reminder: you do not put up any money to enter a futures position.)

    In a futures contract, you invest 0 at the beginning of the period
    to receive the change in the futures price at the end of the period,
    so we have:
    
    100 --- 120
    
       |- 80-50 = 30
    0 -|
       |- 30-50 = -20
    
        |- 30
     ? -|
        |-  0
    
    Let F be the number of futures contracts and B the number of bonds.
    
      30 =  30 F + 120 B
       0 = -20 F + 120 B
    
    F = 3/5 (buy 3/5 contract)
    B = 1/10 (buy 1/10 bond)
    
  2. What is the price of the replicating portfolio?

        
    Again, keep in mind that it costs 0 to enter a futures position.
    
      0 F + 100 B = 0 x 3/5 + 100 x 1/10
                  = 10
    
  3. What are the risk-neutral probabilities of the two states? (I recommend that you verify that your answer is consistent with valuation of the futures, the bond, and the option.)

        
    The risk-neutral probabilities have to price the futures correctly.
    
          piup x 30 + (1-piup) x (-20)
      0 = ----------------------------
                    1.2
    
    Therefore,
    
    piup = 2/5
    pidown = 1 - piup = 3/5
    
  4. (thought question - answer in a sentence or two of ordinary length) You manage a portfolio for a charitable foundation that receives a gift of futures options. For tax reasons, the foundation is not allowed to trade futures, and therefore it cannot hedge using a replicating portfolio. Furthermore, the terms of the gift do not permit selling the option before maturity. Is the value of the option equal to the value computed above? Why or why not?

        
    The value may be less to the extent that holding the options damages
    diversification.  This is unlikely to be a significant effect unless
    the options represent a significant fraction of the portfolio.
    
C. Computer Implementation Short Answer: 40 points

The questions in this section are based on the Fixed Income Applet in Homework 2. You should not need to use the complete java program listing, but it is included at the end of the exam in case you would like to have a look at it.

  1. The method cap in F_I_bin computes the price of interest rate caps. This method contains the following for loop which computes the prices through the tree.
    //compute prices back through the tree
    //j is the number of periods from the end
    //i is the number of up moves from the start
        for(j=1;j<=nper;j++) {for(i=0;i<=nper-j;i++) {
            r[i] = r0 + up * (double) (2*i-nper + j);
            prup = 0.5 + prfact*(rbar-r[i]);
            prup = Math.min((double) 1.0,Math.max((double) 0.0,prup));
            val[i] = (prup*val[i+1]+(1.0-prup)*val[i])*Math.exp(-r[i]*tinc)
              + Math.max((double) 0.0,(r[i]-level)*tinc);}}
    
    How would this have to be modified to price a floor instead?
    Change ``(r[i]-level)'' in the last line to ``(level-r[i])''.
    
  2. Here is the method bprice in F_I_bin, which computes the price of a pure discount bond.
      double bprice(double r0) {
        int i,j;
        double prup;
    //initialize terminal payoffs
    //i is the number of up moves
        for(i=0;i<=nper;i++) {
    //  r[i] = r0 + up * (double)(2*i-nper);   not needed for this claim
          val[i] = 1.0;}
    //compute prices back through the tree
    //j is the number of periods from the end
    //i is the number of up moves from the start
        for(j=1;j<=nper;j++) {for(i=0;i<=nper-j;i++) {
            r[i] = r0 + up * (double) (2*i-nper + j);
            prup = 0.5 + prfact*(rbar-r[i]);
            prup = Math.min((double) 1.0,Math.max((double) 0.0,prup));
            val[i] = (prup*val[i+1]+(1.0-prup)*val[i])*Math.exp(-r[i]*tinc);}}
        return(val[0]);}
    
    How would this method have to be modified to price a European call option on the interest rate?
    First uncomment the line that says ``not needed for this claim''
    on the end and delete everything after the semicolon in this line.
    In the following line, replace ``val[i]=1.0;'' by
    ``val[i]=Math.max(r[i]-strike,(double) 0.0);''.  Finally, in the
    first line change ``bprice(double r0)'' to
    ``intcall(double r0, double strike)''.
    
  3. In F_I_bin, a down-move in interest rates has the same magnitude (but the opposite sign) as an up-move in interest rates. Is the average change in interest rates equal to zero?
    No, because the probabilities may not be equal.  In fact, the
    risk-neutral probabilities are not equal because of the probability
    adjustment to implement mean reversion.
    
D. Advanced Questions Short Answer: up to 20 make-up points

These questions are intended to be more challenging conceptual questions. Answering these questions correctly can give you up to 20 points to substitute for points missed in Parts A-C.

  1. How would the cap method in F_I_bin be modified to include a ``down-and-out'' feature that makes it expire immediately should the interest rate every fall below some level rlower?

    Replace the line
    
      val[i] = (prup*val[i+1]+(1.0-prup)*val[i])*Math.exp(-r[i]*tinc);}}
    
    by
    
      if(r[i] < threshold)
        val[i] = 0.0;
      else
        val[i] = (prup*val[i+1]+(1.0-prup)*val[i])*Math.exp(-r[i]*tinc);}}
    
    Also, the threshold should be made an argument to the function.  Replace
    
      double cap(double level,double r0) {
    
    by
    
      double downoutcap(double level,double r0,double threshold) {
    
  2. Moving from actual probabilities to risk-neutral probabilities for an asset like the stock in the binomial model requires us to adjust the mean return to the risk-free rate. Moving to risk-neutral probabilities in an interest-rate model may also require adjustment of the mean change of interest rates. How do we know what should be the new mean change in interest rates?

    The new mean return on the interest rate should be adjusted down to
    a level that makes the expected return on all bonds equal to the
    riskfree rate.