[Mod]调整OptionMaster的组合配置文件加载目录
This commit is contained in:
parent
a18b2a2b0d
commit
2b8f918866
29
examples/OptionMaster/etf_portfolio.json
Normal file
29
examples/OptionMaster/etf_portfolio.json
Normal file
@ -0,0 +1,29 @@
|
||||
{
|
||||
"name": "etf_portfolio",
|
||||
"model": "bsCython",
|
||||
"underlying": [
|
||||
"510050"
|
||||
],
|
||||
"chain": [
|
||||
{
|
||||
"underlyingSymbol": "510050",
|
||||
"chainSymbol": "510050-1802",
|
||||
"r": 0.04
|
||||
},
|
||||
{
|
||||
"underlyingSymbol": "510050",
|
||||
"chainSymbol": "510050-1803",
|
||||
"r": 0.03
|
||||
},
|
||||
{
|
||||
"underlyingSymbol": "510050",
|
||||
"chainSymbol": "510050-1806",
|
||||
"r": 0.03
|
||||
},
|
||||
{
|
||||
"underlyingSymbol": "510050",
|
||||
"chainSymbol": "510050-1809",
|
||||
"r": 0.03
|
||||
}
|
||||
]
|
||||
}
|
@ -118,6 +118,9 @@ class OmUnderlying(OmInstrument):
|
||||
"""Constructor"""
|
||||
super(OmUnderlying, self).__init__(contract, detail)
|
||||
|
||||
# 标的类型
|
||||
self.productClass = contract.productClass
|
||||
|
||||
# 以该合约为标的物的期权链字典
|
||||
self.chainDict = OrderedDict()
|
||||
|
||||
@ -393,11 +396,15 @@ class OmChain(object):
|
||||
for n, call in enumerate(callList):
|
||||
put = putList[n]
|
||||
|
||||
# 如果标的为期货,则不进行调整
|
||||
if call.underlying.productClass == PRODUCT_FUTURES:
|
||||
return
|
||||
|
||||
# 如果有任意中间价为0,则忽略该PCP
|
||||
if (not call.underlying.midPrice or
|
||||
not put.midPrice or
|
||||
not call.midPrice or
|
||||
not call.k,
|
||||
not call.k or
|
||||
not call.t):
|
||||
continue
|
||||
|
||||
@ -406,6 +413,9 @@ class OmChain(object):
|
||||
l.append(r)
|
||||
|
||||
# 求平均值来计算拟合折现率
|
||||
if not l:
|
||||
return
|
||||
|
||||
self.r = sum(l)/len(l)
|
||||
for option in self.optionDict.values():
|
||||
option.setR(r)
|
||||
|
@ -105,8 +105,9 @@ class OmEngine(object):
|
||||
if self.portfolio:
|
||||
return False
|
||||
|
||||
f = file(fileName)
|
||||
f = open(fileName)
|
||||
setting = json.load(f)
|
||||
f.close()
|
||||
|
||||
# 读取定价模型
|
||||
model = MODEL_DICT.get(setting['model'], None)
|
||||
|
@ -42,7 +42,7 @@ class OmManager(QtWidgets.QWidget):
|
||||
# 读取配置文件
|
||||
settingFileList = []
|
||||
|
||||
path = os.path.abspath(os.path.dirname(__file__))
|
||||
path = os.getcwd()
|
||||
for root, subdirs, files in os.walk(path):
|
||||
for name in files:
|
||||
if '_portfolio.json' in name:
|
||||
@ -112,7 +112,7 @@ class OmManager(QtWidgets.QWidget):
|
||||
#----------------------------------------------------------------------
|
||||
def initOmEngine(self):
|
||||
"""初始化引擎"""
|
||||
path = os.path.abspath(os.path.dirname(__file__))
|
||||
path = os.getcwd()
|
||||
fileName = unicode(self.comboSettingFile.currentText())
|
||||
fileName = os.path.join(path, fileName)
|
||||
result = self.omEngine.initEngine(fileName)
|
||||
|
Loading…
Reference in New Issue
Block a user