📄 callpriceanddeltas.java
字号:
} }); jPanel2.add(jSlider7); jPanel2.add(jLabel7); jSlider9.setMaximum(4000000); jSlider9.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { public void mouseDragged(java.awt.event.MouseEvent evt) { jSlider9MouseDragged(evt); } }); jPanel2.add(jSlider9); jProgressBar1.setForeground(new java.awt.Color(204, 255, 102)); jProgressBar1.setBackground(new java.awt.Color(204, 204, 255)); jProgressBar1.setBorder(new javax.swing.border.EtchedBorder(null, java.awt.Color.lightGray)); jPanel2.add(jProgressBar1); jButton1.setText("go"); jButton1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jButton1MouseClicked(evt); } }); jPanel2.add(jButton1); jPanel2.add(jLabel9); jPanel2.add(jLabel10); jPanel2.add(jLabel11); jPanel2.add(jLabel12); jSplitPane1.setRightComponent(jPanel2); getContentPane().add(jSplitPane1); pack(); }//GEN-END:initComponents //SET OFF MAIN COMPUTATION private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButton1MouseClicked mainComputation(); }//GEN-LAST:event_jButton1MouseClicked private void jSlider9MouseDragged(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jSlider9MouseDragged nPath=jSlider9.getValue(); jTextField9.setText("Number of paths ="+nPath); }//GEN-LAST:event_jSlider9MouseDragged private void jSlider8MouseDragged(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jSlider8MouseDragged dt=((double)jSlider8.getValue())/1000; jTextField8.setText("Time step (years) ="+dt); }//GEN-LAST:event_jSlider8MouseDragged private void jSlider7MouseDragged(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jSlider7MouseDragged q=((double)jSlider7.getValue())/100; jTextField7.setText("Dividend yield ="+q); }//GEN-LAST:event_jSlider7MouseDragged private void jSlider6MouseDragged(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jSlider6MouseDragged sigma=((double)jSlider6.getValue())/100; jTextField6.setText("Volatility ="+sigma); }//GEN-LAST:event_jSlider6MouseDragged private void jSlider5MouseDragged(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jSlider5MouseDragged mu=((double)jSlider5.getValue())/100; jTextField5.setText("Market drift ="+mu); }//GEN-LAST:event_jSlider5MouseDragged private void jSlider4MouseDragged(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jSlider4MouseDragged S_0=((double)jSlider4.getValue())/100; jTextField4.setText("S(0) ="+S_0); }//GEN-LAST:event_jSlider4MouseDragged private void jSlider3MouseDragged(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jSlider3MouseDragged r=((double)jSlider3.getValue())/100; jTextField3.setText("Risk free rate ="+r); }//GEN-LAST:event_jSlider3MouseDragged private void jSlider2MouseDragged(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jSlider2MouseDragged T=jSlider2.getValue(); jTextField2.setText("Number of time steps = "+T); }//GEN-LAST:event_jSlider2MouseDragged private void jSlider1MouseDragged(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jSlider1MouseDragged K=((double)jSlider1.getValue())/100; jTextField1.setText("Strike price ="+K); }//GEN-LAST:event_jSlider1MouseDragged /** Exit the Application */ private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm System.exit(0); }//GEN-LAST:event_exitForm /** * @param args the command line arguments */ public static void main(String args[]) { nSignChange=20; CallPriceAndDeltas CLP=new CallPriceAndDeltas(); CLP.setBounds(100,40,700,600); //set and display defaults in case user does not choose. nPath=100000; CLP.jTextField9.setText("Number of paths ="+nPath); K=53; CLP.jTextField1.setText("Strike price ="+K); dt=0.05; CLP.jTextField8.setText("Time step (years) ="+dt); T=20; CLP.jTextField2.setText("Number of time steps = "+T); S_0=48.0; CLP.jTextField4.setText("S(0) ="+S_0); r=0.06; CLP.jTextField3.setText("Risk free rate ="+r); q=0.0; CLP.jTextField7.setText("Dividend yield ="+q); mu=0.34; CLP.jTextField5.setText("Market drift ="+mu); sigma=0.41; CLP.jTextField6.setText("Volatility ="+sigma); CLP.show(); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JSlider jSlider4; private javax.swing.JSlider jSlider3; private javax.swing.JSlider jSlider2; private javax.swing.JSlider jSlider1; private javax.swing.JButton jButton1; private javax.swing.JMenu jMenu1; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel10; private javax.swing.JMenuBar jMenuBar1; private javax.swing.JTextField jTextField19; private javax.swing.JTextField jTextField18; private javax.swing.JTextField jTextField17; private javax.swing.JTextField jTextField16; private javax.swing.JTextField jTextField15; private javax.swing.JTextField jTextField14; private javax.swing.JTextField jTextField13; private javax.swing.JTextField jTextField12; private javax.swing.JPanel jPanel2; private javax.swing.JTextField jTextField11; private javax.swing.JPanel jPanel1; private javax.swing.JTextField jTextField10; private javax.swing.JTextField jTextField9; private javax.swing.JTextField jTextField8; private javax.swing.JTextField jTextField7; private javax.swing.JTextField jTextField6; private javax.swing.JTextField jTextField5; private javax.swing.JTextField jTextField4; private javax.swing.JTextField jTextField3; private javax.swing.JTextField jTextField2; private javax.swing.JTextField jTextField1; private javax.swing.JLabel jLabel9; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel1; private javax.swing.JSlider jSlider9; private javax.swing.JSlider jSlider8; private javax.swing.JSlider jSlider7; private javax.swing.JProgressBar jProgressBar1; private javax.swing.JSlider jSlider6; private javax.swing.JSplitPane jSplitPane1; private javax.swing.JSlider jSlider5; // End of variables declaration//GEN-END:variables static int T, nPath, nSignChange; static double S_0, K, Tc, r, q, mu, sigma, dt; ConstantVolatilityAsset asset; BlackScholesCall call; public void mainComputation() { asset=new ConstantVolatilityAsset(T,dt,nSignChange,S_0,r,q,mu,sigma); call=new BlackScholesCall(K, asset); double aPrice=call.discountedAnalyticPrice(0); double mcPrice=call.discountedMonteCarloPrice(0,nPath); //analytic deltas double aDelta=call.analyticDelta(0); double arnDelta= call.analyticMinimumVarianceDelta(Flag.RISK_NEUTRAL_PROBABILITY,0); double amvDelta= call.analyticMinimumVarianceDelta(Flag.MARKET_PROBABILITY,0); double aqDelta=call.analyticQuotientDelta(0); // Monte Carlo computed deltas double mvDelta= call.minimumVarianceDelta(Flag.MARKET_PROBABILITY,0,nPath); double rnDelta= call.minimumVarianceDelta(Flag.RISK_NEUTRAL_PROBABILITY,0,nPath); double mcDelta= call.monteCarloDelta(0,nPath); double qDelta=call.quotientDelta(0,nPath); //truncate to 4 digits after zero aPrice=FinMath.round(aPrice,5); mcPrice=FinMath.round(mcPrice,5); aDelta=FinMath.round(aDelta,5); amvDelta=FinMath.round(amvDelta,5); arnDelta=FinMath.round(arnDelta,5); aqDelta=FinMath.round(aqDelta,5); amvDelta=FinMath.round(amvDelta,5); arnDelta=FinMath.round(arnDelta,5); amvDelta=FinMath.round(amvDelta,5); arnDelta=FinMath.round(arnDelta,5); jTextField10.setText("Analytic price = "+aPrice); jTextField11.setText("Monte Carlo price = "+mcPrice); jTextField12.setText("Analytic delta = "+aDelta); jTextField13.setText("Minimum variance delta = "+mvDelta); jTextField14.setText("Analytic minimum variance delta = "+amvDelta); jTextField15.setText("Risk neutral delta = "+rnDelta); jTextField16.setText("Analytic risk neutral delta = "+arnDelta); jTextField17.setText("Quotient delta = "+qDelta); jTextField18.setText("Analytic quotient delta = "+aqDelta); jTextField19.setText("Monte Carlo delta = "+mcDelta); }//end mainComputation} //end CallPrice//"Monte carlo delta = "+mcDelta
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -