Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- # from PyQt4.QtGui import (QApplication, QDialog, QDataWidgetMapper, QTableWidget)
- # # , QAction, QApplication, QFileDialog, QIcon,
- # # QKeySequence, QMainWindow, QMessageBox, QShortcut, QTableWidget,
- # # QTableWidgetItem)
- #
- # # from PyQt4.QtSql import (QSqlTableModel)
- from PyQt4.QtCore import *
- from PyQt4.QtGui import *
- from PyQt4.QtSql import *
- import ui_BSCS
- import BSCSEngine
- import mibian
- import pandas as pd
- import collections
- __version__ = "1.0.0"
- class MainWindow(QDialog, ui_BSCS.Ui_SBCSDialog):
- def __init__(self, parent=None):
- super(MainWindow, self).__init__(parent)
- self.setupUi(self)
- # f_UnderlyingPrice=float(self.UnderlyingPricelineEdit.text())
- # f_StrikePrice= float(self.StrikePricelineEdit.text())
- # f_Volatility= float(self.VolatilitylineEdit.text())
- # f_InterestRate= float(self.InterestRatelineEdit.text())
- # f_DividendYield= float(self.DividendYieldlineEdit.text())
- # f_TimeToExp= float(self.TimeToExplineEdit.text())
- # print ("JKFrame",optionFrame )
- self.model = QSqlTableModel(self)
- self.model.setTable("ParamTable")
- # self.model.setSort(STARTTIME, Qt.AscendingOrder)QSqlTableModel
- self.model.select()
- self.mapper = QDataWidgetMapper(self)
- # self.mapper.setSubmitPolicy(QDataWidgetMapper.ManualSubmit)
- self.mapper.setSubmitPolicy(QDataWidgetMapper.AutoSubmit)
- self.mapper.setModel(self.model)
- self.mapper.addMapping(self.UnderlyingPricelineEdit, 0)
- self.mapper.addMapping(self.StrikePricelineEdit, 1)
- self.mapper.addMapping(self.VolatilitylineEdit, 4)
- self.mapper.addMapping(self.InterestRatelineEdit, 2)
- self.mapper.addMapping(self.DividendYieldlineEdit,7)
- self.mapper.addMapping(self.TimeToExplineEdit,3)
- self.mapper.toFirst()
- # print("JKFrame", optionFrame)
- # __UnderlyingPrice = self.UnderlyingPricelineEdit
- # time to expiration need to ui
- BSAsset = mibian.BS([float(self.UnderlyingPricelineEdit.text()),
- float(self.StrikePricelineEdit.text()),
- float(self.InterestRatelineEdit.text()),
- float(26)],volatility=float(self.VolatilitylineEdit.text()) )
- Parameters = [
- ['UnderlyingPrice', float(self.UnderlyingPricelineEdit.text())],
- ['StrikePrice', float(self.StrikePricelineEdit.text())],
- ['Volatility', float(self.VolatilitylineEdit.text())],
- ['InterestRate',float(self.InterestRatelineEdit.text())],
- ['DividendYield', float(self.DividendYieldlineEdit.text())],
- ['TimeToExp', float(self.TimeToExplineEdit.text())],
- ]
- optionFrame = pd.DataFrame(Parameters, columns=['ParamName', 'ParamValue'])
- # myGreeks(optionFrame)
- # print ("JKFrame", optionFrame)
- f_UnderlyingPrice=float(self.UnderlyingPricelineEdit.text())
- f_StrikePrice= float(self.StrikePricelineEdit.text())
- f_Volatility= float(self.VolatilitylineEdit.text())
- f_InterestRate= float(self.InterestRatelineEdit.text())
- f_DividendYield= float(self.DividendYieldlineEdit.text())
- f_TimeToExp= float(self.TimeToExplineEdit.text())
- myOption(f_UnderlyingPrice=f_UnderlyingPrice,
- f_StrikePrice=f_StrikePrice,
- f_Volatility=f_Volatility,
- f_InterestRate=f_InterestRate,
- f_DividendYield=f_DividendYield,
- f_TimeToExp=f_TimeToExp
- )
- # print ("UnderlyingPrice=", type(self.UnderlyingPricelineEdit))
- # print("callPrice=",BSAsset.callPrice )
- # print ("Rounded=", "%.4f" % BSAsset.callDelta )
- # JK = "%.4f" % BSAsset.callDelta
- # def initGreeks():
- # BSCSEngine.initAsset()
- self.CallPricelineEdit.setText(str(round(BSAsset.callPrice, 4)))
- self.CallDeltalineEdit.setText(str(round(BSAsset.callDelta, 4)))
- self.CallGammalineEdit.setText(str(round(BSAsset.gamma, 4)))
- self.CallThetalineEdit.setText(str(round(BSAsset.callTheta, 4)))
- self.CallVegalineEdit.setText(str(round(BSAsset.vega, 4)))
- self.CallRholineEdit.setText(str(round(BSAsset.callRho, 4)))
- self.PutPricelineEdit.setText(str(round(BSAsset.putPrice, 4)))
- self.PutDeltalineEdit.setText(str(round(BSAsset.putDelta, 4)))
- # self.PutDeltalineEdit.setText(JK)
- self.PutGammalineEdit.setText(str(round(BSAsset.gamma, 4)))
- self.PutThetalineEdit.setText(str(round(BSAsset.putTheta, 4)))
- self.PutVegalineEdit.setText(str(round(BSAsset.vega, 4)))
- self.PutRholineEdit.setText(str(round(BSAsset.putRho, 4)))
- self.UnderlyingPricelineEdit.editingFinished.connect(self.do_UnderlyingPrice)
- self.StrikePricelineEdit.editingFinished.connect(self.do_StrikePrice)
- self.VolatilitylineEdit.editingFinished.connect(self.do_Volatility)
- self.InterestRatelineEdit.editingFinished.connect(self.do_InterestRate)
- self.DividendYieldlineEdit.editingFinished.connect(self.do_DividendYield)
- self.TimeToExplineEdit.editingFinished.connect(self.do_TimeToExp)
- def do_UnderlyingPrice(self):
- print("UnderlyingPriceEditingFinished: ",self.UnderlyingPricelineEdit.text())
- BSAsset = mibian.BS([float(self.UnderlyingPricelineEdit.text()),
- float(self.StrikePricelineEdit.text()),
- float(self.InterestRatelineEdit.text()),
- float(26)], volatility=float(self.VolatilitylineEdit.text()) )
- self.setGreeks(BSAsset)
- # self.CallPricelineEdit.setText(str(round(BSAsset.callPrice, 4)))
- # self.CallDeltalineEdit.setText(str(round(BSAsset.callDelta, 4)))
- # self.CallGammalineEdit.setText(str(round(BSAsset.gamma, 4)))
- # self.CallThetalineEdit.setText(str(round(BSAsset.callTheta, 4)))
- # self.CallVegalineEdit.setText(str(round(BSAsset.vega, 4)))
- # self.CallRholineEdit.setText(str(round(BSAsset.callRho, 4)))
- #
- # self.PutPricelineEdit.setText(str(round(BSAsset.putPrice, 4)))
- # self.PutDeltalineEdit.setText(str(round(BSAsset.putDelta, 4)))
- # self.PutGammalineEdit.setText(str(round(BSAsset.gamma, 4)))
- # self.PutThetalineEdit.setText(str(round(BSAsset.putTheta, 4)))
- # self.PutVegalineEdit.setText(str(round(BSAsset.vega, 4)))
- # self.PutRholineEdit.setText(str(round(BSAsset.putRho, 4)))
- def do_StrikePrice(self):
- print("StrikePriceEditingFinished: ", self.StrikePricelineEdit.text())
- BSAsset = mibian.BS([float(self.UnderlyingPricelineEdit.text()),
- float(self.StrikePricelineEdit.text()),
- float(self.InterestRatelineEdit.text()),
- float(26)], volatility=float(self.VolatilitylineEdit.text()))
- self.setGreeks(BSAsset)
- # self.CallPricelineEdit.setText(str(round(BSAsset.callPrice, 4)))
- # self.CallDeltalineEdit.setText(str(round(BSAsset.callDelta, 4)))
- # self.CallGammalineEdit.setText(str(round(BSAsset.gamma, 4)))
- # self.CallThetalineEdit.setText(str(round(BSAsset.callTheta, 4)))
- # self.CallVegalineEdit.setText(str(round(BSAsset.vega, 4)))
- # self.CallRholineEdit.setText(str(round(BSAsset.callRho, 4)))
- #
- # self.PutPricelineEdit.setText(str(round(BSAsset.putPrice, 4)))
- # self.PutDeltalineEdit.setText(str(round(BSAsset.putDelta, 4)))
- # self.PutGammalineEdit.setText(str(round(BSAsset.gamma, 4)))
- # self.PutThetalineEdit.setText(str(round(BSAsset.putTheta, 4)))
- # self.PutVegalineEdit.setText(str(round(BSAsset.vega, 4)))
- # self.PutRholineEdit.setText(str(round(BSAsset.putRho, 4)))
- def do_Volatility(self):
- print("VolatilityEditingFinished: ", self.VolatilitylineEdit.text())
- def do_InterestRate(self):
- print("InterestRateEditingFinished: ", self.InterestRatelineEdit.text())
- def do_DividendYield(self):
- print("DividendYieldEditingFinished: ", self.DividendYieldlineEdit.text())
- def do_TimeToExp(self):
- print("TimeToExpEditingFinished: ", self.TimeToExplineEdit.text())
- def setGreeks(self, BSAsset):
- self.CallPricelineEdit.setText(str(round(BSAsset.callPrice, 4)))
- self.CallDeltalineEdit.setText(str(round(BSAsset.callDelta, 4)))
- self.CallGammalineEdit.setText(str(round(BSAsset.gamma, 4)))
- self.CallThetalineEdit.setText(str(round(BSAsset.callTheta, 4)))
- self.CallVegalineEdit.setText(str(round(BSAsset.vega, 4)))
- self.CallRholineEdit.setText(str(round(BSAsset.callRho, 4)))
- self.PutPricelineEdit.setText(str(round(BSAsset.putPrice, 4)))
- self.PutDeltalineEdit.setText(str(round(BSAsset.putDelta, 4)))
- self.PutGammalineEdit.setText(str(round(BSAsset.gamma, 4)))
- self.PutThetalineEdit.setText(str(round(BSAsset.putTheta, 4)))
- self.PutVegalineEdit.setText(str(round(BSAsset.vega, 4)))
- self.PutRholineEdit.setText(str(round(BSAsset.putRho, 4)))
- # def recalcGreeks(self):
- # BSAsset = mibian.BS([float(self.UnderlyingPricelineEdit.text()),
- # float(self.StrikePricelineEdit.text()),
- # float(self.InterestRatelineEdit.text()),
- # float(26)], volatility=float(self.VolatilitylineEdit.text()))
- # return BSAsset
- def main():
- app = QApplication(sys.argv)
- app.setOrganizationName("BCSM Ltd.")
- app.setOrganizationDomain("BCSM.us")
- app.setApplicationName("Black-Schole Calculator Simulator")
- # app.setWindowIcon(QIcon(":/icon.png"))
- BSCSEngine.DBConnect()
- form = MainWindow()
- form.show()
- app.exec_()
- def jktest():
- Ret = 77
- return str(Ret)
- def myGreeks(optionFrame):
- print ("JKFrame", optionFrame)
- print ("Nu")
- # Parameters = [
- # ['UnderlyingPrice', float(self.UnderlyingPricelineEdit.text())],
- # ['StrikePrice', float(self.StrikePricelineEdit.text())],
- # ['Volatility', float(self.VolatilitylineEdit.text())],
- # ['InterestRate', float(self.InterestRatelineEdit.text())],
- # ['DividendYield', float(self.DividendYieldlineEdit.text())],
- # ['TimeToExp', float(self.TimeToExplineEdit.text())],
- # ]
- # optionFrame = pd.DataFrame(Parameters, columns=['ParamName', 'ParamValue'])
- # SAsset = mibian.BS([float(self.UnderlyingPricelineEdit.text()),
- # float(self.StrikePricelineEdit.text()),
- # float(self.InterestRatelineEdit.text()),
- # float(26)], volatility=float(self.VolatilitylineEdit.text()))
- #
- # myBS = mibian.BS([optionFrame.P])
- def BScalc(**kwargs):
- args = kwargs
- # print str(args)
- # print str(args['f_UnderlyingPrice'])
- BSAsset = mibian.BS([args['f_UnderlyingPrice'],
- args['f_StrikePrice'],
- args['f_InterestRate'],
- args['f_TimeToExp'],
- ], volatility=args['f_Volatility']
- )
- return BSAsset
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement