📄 drawchgraphs_1.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*/package Examples.Hedging;/* * DrawCHGraphs_1.java * * Created on January 2, 2002, 4:57 AM */import Statistics.*;import Market.*;import Options.*;import Hedging.*;import Exceptions.*;/**<p>European calls on a constant volatility asset are hedged and * the mean and standard deviation of the hedge profit * and loss computed as a <i>function of the strike price K</i>. * 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 strikes K * between K_min and K_max and the (linearly interpolated) graphs displayed in * two windows and saved as a jpeg files.</p> * * <p>The <b>main</b> method brings up the GUI to set parameters and make * choices. Parameters of type <code>double</code> are set using sliders. * Choices are made by checking check boxes.</p> * * <p>The hedge is rebalanced at each time step. Price paths of the underlying * asset are simulated in the market probability. Various hedge deltas can be * specified:</p> * *<ul> *<li> analytic deltas (if analytic option price defined)</li> *<li> analytic minimum variance deltas</li> *<li> analytic quotient deltas</li> *</ul> * * <p>Both Analytic minimum variance deltas and analytic quotient deltas are * computed under the market probability and are optional, check the * corresponding check box in the GUI.<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. * * @author Michael J. Meyer */public class DrawCHGraphs_1 extends javax.swing.JFrame { /** Creates new form CalllSetUpWindow */ public DrawCHGraphs_1() { 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(); jLabel2 = new javax.swing.JLabel(); jTextField1 = new javax.swing.JTextField(); jTextField11 = new javax.swing.JTextField(); jTextField12 = new javax.swing.JTextField(); jTextField2 = new javax.swing.JTextField(); jTextField3 = new javax.swing.JTextField(); jLabel10 = new javax.swing.JLabel(); jTextField8 = new javax.swing.JTextField(); jTextField14 = new javax.swing.JTextField(); jTextField15 = new javax.swing.JTextField(); jLabel4 = new javax.swing.JLabel(); jTextField9 = new javax.swing.JTextField(); jTextField10 = new javax.swing.JTextField(); jCheckBox1 = new javax.swing.JCheckBox(); jCheckBox2 = new javax.swing.JCheckBox(); 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(); jLabel5 = new javax.swing.JLabel(); jSlider1 = new javax.swing.JSlider(); jSlider10 = new javax.swing.JSlider(); jSlider11 = new javax.swing.JSlider(); jSlider2 = new javax.swing.JSlider(); jSlider3 = new javax.swing.JSlider(); jLabel11 = new javax.swing.JLabel(); jSlider8 = new javax.swing.JSlider(); jSlider13 = new javax.swing.JSlider(); jSlider14 = new javax.swing.JSlider(); jLabel7 = new javax.swing.JLabel(); jSlider9 = new javax.swing.JSlider(); jProgressBar1 = new javax.swing.JProgressBar(); jButton1 = new javax.swing.JButton(); jLabel8 = new javax.swing.JLabel(); jLabel9 = new javax.swing.JLabel(); 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(22, 1)); jLabel3.setText(" UNDERLYING"); jLabel3.setForeground(new java.awt.Color(0, 0, 204)); 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("Volatility:"); jPanel1.add(jTextField6); jLabel2.setText(" CALL"); jLabel2.setForeground(new java.awt.Color(0, 0, 204)); jPanel1.add(jLabel2); jTextField1.setEditable(false); jTextField1.setText("Strike K_min:"); jPanel1.add(jTextField1); jTextField11.setEditable(false); jTextField11.setText("Strike K_max:"); jPanel1.add(jTextField11); jTextField12.setEditable(false); jTextField12.setText("Number of strikes:"); jPanel1.add(jTextField12); jTextField2.setEditable(false); jTextField2.setText("Time to expiration (years):"); jPanel1.add(jTextField2); jTextField3.setEditable(false); jTextField3.setText("Risk free rate (decimal):"); jPanel1.add(jTextField3); jLabel10.setText(" HEDGE"); jLabel10.setForeground(new java.awt.Color(0, 0, 204)); jPanel1.add(jLabel10); jTextField8.setEditable(false); jTextField8.setText("Rehedge interval (years):"); jPanel1.add(jTextField8); jTextField14.setEditable(false); jTextField14.setText("fixed transaction cost:"); jPanel1.add(jTextField14); jTextField15.setEditable(false); jTextField15.setText("proportional transaction cost:"); jPanel1.add(jTextField15); jLabel4.setText(" SIMULATION"); jLabel4.setForeground(new java.awt.Color(0, 0, 204)); jPanel1.add(jLabel4); jTextField9.setEditable(false); jTextField9.setText("Number of paths:"); jPanel1.add(jTextField9); jTextField10.setEditable(false); jTextField10.setText("Time left:"); jPanel1.add(jTextField10); jCheckBox1.setText("Minimum variance deltas"); jPanel1.add(jCheckBox1); jCheckBox2.setText("Quotient deltas"); jPanel1.add(jCheckBox2); jSplitPane1.setLeftComponent(jPanel1); jPanel2.setLayout(new java.awt.GridLayout(22, 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); jPanel2.add(jLabel5); jSlider1.setMaximum(10000); jSlider1.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { public void mouseDragged(java.awt.event.MouseEvent evt) { jSlider1MouseDragged(evt); } }); jPanel2.add(jSlider1); jSlider10.setMinimum(3000); jSlider10.setMaximum(20000); jSlider10.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { public void mouseDragged(java.awt.event.MouseEvent evt) { jSlider10MouseDragged(evt); } }); jPanel2.add(jSlider10); 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); 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(jLabel11); 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(200); jSlider13.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() { public void mouseDragged(java.awt.event.MouseEvent evt) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -