📄 drawchgraphs_2.java
字号:
/* WARANTY NOTICE AND COPYRIGHTThis program is free software; you can redistribute it and/ormodify it under the terms of the GNU General Public Licenseas published by the Free Software Foundation; either version 2of the License, or (at your option) any later version.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.Copyright (C) Michael J. Meyermatmjm@mindspring.comspyqqqdia@yahoo.com*//* * DrawCHGraphs_2.java * * Created on January 2, 2002, 4:57 AM */package Examples.Hedging;import Hedging.*;import Statistics.*;import Market.*;import Options.*;import Exceptions.*; /**<p>European calls on a constant volatility asset are hedged with analytic * deltas and the mean and standard deviation of the hedge profit and loss * computed as a <i>function of the volatility sigma</i> used in the * computation of the hedge deltas. * Mean and standard deviation are reported as a percentage of the * Black Scholes call price.<p> * * <p>The two functions are sampled (computed) at evenly spaced volatilities * sigma between sigma_min and sigma_max and the (linearly interpolated) * graphs displayed in a window and saved as a jpeg file.</p> * * <p>The <b>main</b> method brings up the GUI to set parameters. Parameters * of type <code>double</code> are set using sliders.</p> * * <p>The idea is to analyze the effect of misjudging the true volatility * of the underlying on hedge performance. Mean and standard deviation are * computed from a sample of nPaths paths * of the underlying asset simulated under the market probability.</p> * * <i>Transaction costs</i> have a fixed and a proportional * component. The fixed component also has to be normalized to cost per share. * If you transact in lots of 1000 shares and such a trade costs 10 dollars, * fixed transaction costs are 10/1000=0.01. The proportional transaction * costs come from bid-ask spread etc., 0.1 is a conservative number. * Transaction costs are assumed to remain constant in today's dollars. * *<p>The computation is reasonably fast since no conditional expectations * are involved (analytic deltas only).</p> * * @author Michael J. Meyer */public class DrawCHGraphs_2 extends javax.swing.JFrame { /** Creates new form CalllSetUpWindow */ public DrawCHGraphs_2() { initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents jLabel1 = new javax.swing.JLabel(); jSplitPane1 = new javax.swing.JSplitPane(); jPanel1 = new javax.swing.JPanel(); jLabel3 = new javax.swing.JLabel(); jTextField4 = new javax.swing.JTextField(); jTextField5 = new javax.swing.JTextField(); jTextField6 = new javax.swing.JTextField(); jTextField7 = new javax.swing.JTextField(); jTextField3 = new javax.swing.JTextField(); jLabel2 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); jTextField2 = new javax.swing.JTextField(); jLabel10 = new javax.swing.JLabel(); jTextField8 = new javax.swing.JTextField(); jTextField14 = new javax.swing.JTextField(); jTextField15 = new javax.swing.JTextField(); jTextField12 = new javax.swing.JTextField(); jTextField11 = new javax.swing.JTextField(); jTextField13 = new javax.swing.JTextField(); jLabel4 = new javax.swing.JLabel(); jTextField9 = new javax.swing.JTextField(); jTextField10 = new javax.swing.JTextField(); jPanel2 = new javax.swing.JPanel(); jLabel6 = new javax.swing.JLabel(); jSlider4 = new javax.swing.JSlider(); jSlider5 = new javax.swing.JSlider(); jSlider6 = new javax.swing.JSlider(); jSlider7 = new javax.swing.JSlider(); jSlider3 = new javax.swing.JSlider(); jLabel5 = new javax.swing.JLabel(); jSlider11 = new javax.swing.JSlider(); jSlider2 = new javax.swing.JSlider(); jLabel7 = new javax.swing.JLabel(); jSlider8 = new javax.swing.JSlider(); jSlider13 = new javax.swing.JSlider(); jSlider14 = new javax.swing.JSlider(); jSlider1 = new javax.swing.JSlider(); jSlider10 = new javax.swing.JSlider(); jSlider12 = new javax.swing.JSlider(); jButton1 = new javax.swing.JButton(); jSlider9 = new javax.swing.JSlider(); jProgressBar1 = new javax.swing.JProgressBar(); jLabel1.setText("jLabel1"); getContentPane().setLayout(new java.awt.GridLayout(1, 1)); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { exitForm(evt); } }); jSplitPane1.setDividerLocation(250); jPanel1.setLayout(new java.awt.GridLayout(19, 1)); jLabel3.setForeground(new java.awt.Color(0, 0, 204)); jLabel3.setText(" UNDERLYING"); jPanel1.add(jLabel3); jTextField4.setEditable(false); jTextField4.setText("S(0):"); jPanel1.add(jTextField4); jTextField5.setEditable(false); jTextField5.setText("Market drift:"); jPanel1.add(jTextField5); jTextField6.setEditable(false); jTextField6.setText("True volatility:"); jPanel1.add(jTextField6); jTextField7.setEditable(false); jTextField7.setText("Dividend yield:"); jPanel1.add(jTextField7); jTextField3.setEditable(false); jTextField3.setText("Risk free rate (decimal):"); jPanel1.add(jTextField3); jLabel2.setForeground(new java.awt.Color(0, 0, 204)); jLabel2.setText(" CALL"); jPanel1.add(jLabel2); jTextField1.setEditable(false); jTextField1.setText("Strike:"); jPanel1.add(jTextField1); jTextField2.setEditable(false); jTextField2.setText("Time to expiration (years):"); jPanel1.add(jTextField2); jLabel10.setForeground(new java.awt.Color(0, 0, 204)); jLabel10.setText(" HEDGE"); jPanel1.add(jLabel10); jTextField8.setEditable(false); jTextField8.setText("Rehedge interval (years):"); jPanel1.add(jTextField8); jTextField14.setEditable(false); jTextField14.setText("Minimum hedge volatility:"); jPanel1.add(jTextField14); jTextField15.setEditable(false); jTextField15.setText("Maximum hedge volatility:"); jPanel1.add(jTextField15); jTextField12.setEditable(false); jTextField12.setText("Number of volatilities:"); jPanel1.add(jTextField12); jTextField11.setEditable(false); jTextField11.setText("Fixed transaction cost:"); jPanel1.add(jTextField11); jTextField13.setEditable(false); jTextField13.setText("Proportional transaction cost:"); jPanel1.add(jTextField13); jLabel4.setForeground(new java.awt.Color(0, 0, 204)); jLabel4.setText(" SIMULATION"); jPanel1.add(jLabel4); jTextField9.setEditable(false); jTextField9.setText("Number of paths:"); jPanel1.add(jTextField9); jTextField10.setEditable(false); jTextField10.setText("Time left:"); jPanel1.add(jTextField10); jSplitPane1.setLeftComponent(jPanel1); jPanel2.setLayout(new java.awt.GridLayout(19, 1)); jPanel2.add(jLabel6); jSlider4.setMaximum(15000); jSlider4.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { public void mouseDragged(java.awt.event.MouseEvent evt) { jSlider4MouseDragged(evt); } }); jPanel2.add(jSlider4); jSlider5.setMaximum(80); jSlider5.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { public void mouseDragged(java.awt.event.MouseEvent evt) { jSlider5MouseDragged(evt); } }); jPanel2.add(jSlider5); jSlider6.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { public void mouseDragged(java.awt.event.MouseEvent evt) { jSlider6MouseDragged(evt); } }); jPanel2.add(jSlider6); jSlider7.setMaximum(50); jSlider7.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { public void mouseDragged(java.awt.event.MouseEvent evt) { jSlider7MouseDragged(evt); } }); jPanel2.add(jSlider7); jSlider3.setMaximum(50); jSlider3.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { public void mouseDragged(java.awt.event.MouseEvent evt) { jSlider3MouseDragged(evt); } }); jPanel2.add(jSlider3); jPanel2.add(jLabel5); jSlider11.setMaximum(20000); jSlider11.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { public void mouseDragged(java.awt.event.MouseEvent evt) { jSlider11MouseDragged(evt); } }); jPanel2.add(jSlider11); jSlider2.setMaximum(3000); jSlider2.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { public void mouseDragged(java.awt.event.MouseEvent evt) { jSlider2MouseDragged(evt); } }); jPanel2.add(jSlider2); jPanel2.add(jLabel7); jSlider8.setMaximum(500); jSlider8.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { public void mouseDragged(java.awt.event.MouseEvent evt) { jSlider8MouseDragged(evt); } }); jPanel2.add(jSlider8); jSlider13.setMaximum(30); jSlider13.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { public void mouseDragged(java.awt.event.MouseEvent evt) { jSlider13MouseDragged(evt); } }); jPanel2.add(jSlider13); jSlider14.setMaximum(120); jSlider14.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { public void mouseDragged(java.awt.event.MouseEvent evt) { jSlider14MouseDragged(evt); } }); jPanel2.add(jSlider14); jSlider1.setMaximum(200); jSlider1.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { public void mouseDragged(java.awt.event.MouseEvent evt) { jSlider1MouseDragged(evt); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -