//  ------------------------------------------------------
//  -------  Uebung 4.13      Ib03        ----------------
//  -------                               ----------------
//  -------  NTF (Part 1)                 ----------------
//  -------                               ----------------
//  -------  21.05.2005    M. Vogel       ----------------
//  ------------------------------------------------------

import java.util.*;

public class NTF1
{
	final static int M = 1000000 ;  // Anzahl Simulationen

	final static double mu    =  12.0 ;  // Parameter
	final static double sigma =   2.0 ;  
	final static double bo    =   3.0 ;  
	final static double ma    =   1.75;  
	final static double capp  =  10.0 ;  
	final static double capm  =   8.0 ;  
		

	public static void main(String[] args){
   	double sum =0.0 ;	
   	double sum2=0.0 ;
	double f;	
   	Random gauss = new Random();
	
	  for (int n = 0; n<M; n++) {
	     f= bonusMalus( mu+sigma*gauss.nextGaussian( ) );
	     sum = sum + f ;
	     sum2= sum2+ f*f ;
	  }	

	  sum/=M;
	  System.out.println() ;
	  System.out.println(" mean gain/loss =" + sum ) ;
	  System.out.println(" risk           =" + Math.sqrt(sum2/M - sum*sum) ) ;
			
	}
	
	public static double bonusMalus(double x) {
		double boMa=0.0;
		if( x > mu+sigma ) boMa = Math.min( capp , bo * (x- (mu+sigma)) );
		if( x < mu-sigma ) boMa =-Math.min( capm , ma * ((mu-sigma)-x)  );
//		System.out.println(x+ " Bonus/Malus =" + boMa ) ;
		
		return boMa ;
	}
}

