def execute_results(self,pathfilelocalsymbols,pathfilelocalexpirations,rootlocalforfilespulled,directorylocaloutput,showresults): ################################################ # # Returns file name of output # ################################################ import mytools downloaddirectorylocal = mytools.mystrings.appendnormaldateddirectorybasedoncurrenttime15(rootlocalforfilespulled) print('downloaddirectorylocal=' + downloaddirectorylocal) ################################################ import shutil shutil.rmtree(downloaddirectorylocal, ignore_errors=True) ################################################ import pullpricesallfromdirectorylocalroot pullpricesallfromdirectorylocalroot.pull(downloaddirectorylocal, pathfilelocalsymbols, pathfilelocalexpirations) ################################################ import readintomemoryinsertcalendarspreadpairsintodictionary cal = readintomemoryinsertcalendarspreadpairsintodictionary.read(downloaddirectorylocal) #if showresults == 1: print('completed readintomemoryinsertcalendarspreadpairsintodictionary') dPairs = cal.PairsDictionary dPairsCalculated = {} #if showresults == 1: print('building valid pairs...') for k,ls in dPairs.items(): earlier = ls[0] later = ls[1] if earlier.bid.replace('.','',1).isdigit() and float(earlier.bid) >= 0.25: if float(earlier.bid) <= 4.0: if (earlier.optiontype == 'C' and float(earlier.stockprice) < float(earlier.strike)) or (earlier.optiontype == 'P' and float(earlier.stockprice) > float(earlier.strike)): if later.ask.replace('.','',1).isdigit() and float(later.ask) > 0.0 and float(earlier.bid)/float(later.ask) > 0.6: dPairsCalculated[k] = float(earlier.bid)/float(later.ask) if showresults == 1: print(str(len(dPairsCalculated)) + ' valid pairs...') print('sorting results...') from collections import OrderedDict dOrdered = OrderedDict(sorted(dPairsCalculated.items(), key=lambda t: t[1])) outputlines = {} #if showresults == 1: print('putting results into printable dictionary ' + str(len(dOrdered)) + ' lines') for k1,v1 in dOrdered.items(): #ls = list(dPairs.keys())[list(dPairs.values()).index(k1)] ls = dPairs.get(k1) earlier = ls[0] later = ls[1] outputlines[len(outputlines)]=earlier.optionsymbol+','+later.optionsymbol+','+str(later.strike)+','+str(later.stockprice)+','+str(earlier.bid)+','+str(later.ask)+','+'{percent:.0%}'.format(percent=float(earlier.bid)/float(later.ask)) +','+ str(round(float(later.ask)-float(earlier.bid),2)) mytools.general.make_sure_path_exists(directorylocaloutput) datetime14 = mytools.mystrings.ConvertDatetime14() print(datetime14) outputfilepath = directorylocaloutput + '\\' + datetime14 + '.csv' #if showresults == 1: print('printing results to ' + outputfilepath) with open(outputfilepath, 'w') as f: for outputline in outputlines.values(): f.write(outputline+'\n') #if showresults == 1: print('Finished executing calendarspreadslive...') self.OutputFilePathString = outputfilepath
def execute_quantifyprofitlosssingle(self, SellEarlyCallOptionSymbol, BuyLaterCallOptionSymbol, SellEarlyPutOptionSymbol, BuyLaterPutOptionSymbol, CallPairSpread, PutPairSpread, showresults): pathfilelocalsymbols = 'inputs\\SymbolsTemp.txt' pathfilelocalexpirations = 'inputs\\ExpirationsTemp.txt' rootlocalforfilespulled = 'downloads' directorylocaloutput = 'output' import mytools as mt mysymbol = mt.get_from_optionsymbol.symbol(SellEarlyCallOptionSymbol) #file = open(pathfilelocalsymbols, 'w') #file.close() with open(pathfilelocalsymbols, 'w') as fsymbol: fsymbol.write(mysymbol + '\n') import datetime dExpirations = {} myexpiration = mt.get_from_optionsymbol.expirationdate( SellEarlyCallOptionSymbol) if not myexpiration in dExpirations: dExpirations[myexpiration] = myexpiration.strftime("%Y-%m-%d") myexpiration = mt.get_from_optionsymbol.expirationdate( BuyLaterCallOptionSymbol) if not myexpiration in dExpirations: dExpirations[myexpiration] = myexpiration.strftime("%Y-%m-%d") myexpiration = mt.get_from_optionsymbol.expirationdate( SellEarlyPutOptionSymbol) if not myexpiration in dExpirations: dExpirations[myexpiration] = myexpiration.strftime("%Y-%m-%d") myexpiration = mt.get_from_optionsymbol.expirationdate( BuyLaterPutOptionSymbol) if not myexpiration in dExpirations: dExpirations[myexpiration] = myexpiration.strftime("%Y-%m-%d") with open(pathfilelocalexpirations, 'w') as fexpirations: for k, v in dExpirations.items(): fexpirations.write(v + '\n') #,pathfilelocalsymbols,pathfilelocalexpirations,rootlocalforfilespulled,directorylocaloutput ################################################ # # Returns file name of output # ################################################ import mytools downloaddirectorylocal = mytools.mystrings.appendnormaldateddirectorybasedoncurrenttime15( rootlocalforfilespulled) print('downloaddirectorylocal=' + downloaddirectorylocal) ################################################ import shutil shutil.rmtree(downloaddirectorylocal, ignore_errors=True) ################################################ import pullpricesallfromdirectorylocalroot pullpricesallfromdirectorylocalroot.pull(downloaddirectorylocal, pathfilelocalsymbols, pathfilelocalexpirations) ################################################ import readintomemoryinsertcalendarspreadpairsintodictionary cal = readintomemoryinsertcalendarspreadpairsintodictionary.read( downloaddirectorylocal) #if showresults == 1: dPairs = cal.PairsDictionary print( 'completed readintomemoryinsertcalendarspreadpairsintodictionary =' + str(len(dPairs))) dMyPairs = {} #if showresults == 1: print('building valid pairs...') #callpairspreadcurrent = -999 #putpairspreadcurrent = -999 callpairspreadcurrent = -999.99 putpairspreadcurrent = -999.99 callpairlaterbid = -999.99 callpairearlierask = -999.99 putpairlaterbid = -999.99 putpairearlierask = -999.99 import structureforcalendartrade for k, ls in dPairs.items(): earlier = ls[0] later = ls[1] #print(earlier.optionsymbol + ' ' + later.optionsymbol) if earlier.optionsymbol == SellEarlyCallOptionSymbol: #print('My Calls',SellEarlyCallOptionSymbol,BuyLaterCallOptionSymbol) if later.optionsymbol == BuyLaterCallOptionSymbol: #print('My Calls',SellEarlyCallOptionSymbol,BuyLaterCallOptionSymbol) print('CallEarlierBid = ' + str(float(earlier.bid))) print('CallEarlierAsk = ' + str(float(earlier.ask))) print('CallEarlierMidpoint = ' + str(( (float(earlier.bid) + float(earlier.ask)) / 2.0))) print('CallLaterBid = ' + str(float(later.bid))) print('CallLaterAsk = ' + str(float(later.ask))) print('CallLaterMidpoint = ' + str(((float(later.bid) + float(later.ask)) / 2.0))) # callpairearlierask = float(earlier.ask) # callpairspreadcurrent = float(later.bid) - float(earlier.ask) dMyPairs['call'] = ls structCalendarTradeCall = structureforcalendartrade.Framework( ls) if earlier.optionsymbol == SellEarlyPutOptionSymbol: #print('My Puts',SellEarlyPutOptionSymbol,BuyLaterPutOptionSymbol) if later.optionsymbol == BuyLaterPutOptionSymbol: print('PutEarlierBid = ' + str(float(earlier.bid))) print('PutEarlierAsk = ' + str(float(earlier.ask))) print('PutLaterBid = ' + str(float(later.bid))) print('PutLaterAsk = ' + str(float(later.ask))) # putpairlaterbid = float(later.bid) # putpairearlierask = float(earlier.ask) # putpairspreadcurrent = float(later.bid) - float(earlier.ask) dMyPairs['put'] = ls structCalendarTradePut = structureforcalendartrade.Framework( ls) # print('callpairlaterbid='+str(structCalendarTrades)) # print('callpairearlierask='+str(callpairearlierask)) # # print('putpairlaterbid='+str(putpairlaterbid)) # print('putpairearlierask='+str(putpairearlierask)) # oCallCalendarSpread = structCalendarTradeCall.closingpairspreadmarketprices # oPutCalendarSpread = structCalendarTradePut.closingpairspreadmarketprices print('openingcallpairspreadmarketprices=' + str(structCalendarTradeCall.openingpairspreadmarketprices)) print('openingputpairspreadmarketprices=' + str(structCalendarTradePut.openingpairspreadmarketprices)) print('openingcallpairspreadmidpointprices=' + str(structCalendarTradeCall.openingpairspreadmidpointprices)) print('openingputpairspreadmidpointprices=' + str(structCalendarTradePut.openingpairspreadmidpointprices)) print('closingcallpairspreadmarketprices=' + str(structCalendarTradeCall.closingpairspreadmarketprices)) print('closingputpairspreadmarketprices=' + str(structCalendarTradePut.closingpairspreadmarketprices)) print('closingcallpairspreadmidpointprices=' + str(structCalendarTradeCall.closingpairspreadmidpointprices)) print('closingputpairspreadmidpointprices=' + str(structCalendarTradePut.closingpairspreadmidpointprices))
except OSError as exception: if exception.errno != errno.EEXIST: raise ######################################################################## #test_downloadpath='C:\\Documents and Settings\\jmalinchak\\My Documents\\My Python\\Active\\downloads\\test' test_downloadpath = 'C:\\Documents and Settings\\jmalinchak\My Documents\\My Python\\Active\\downloads\\2014-12-07\\01\\60' #test_downloadpath='C:\\Documents and Settings\\jmalinchak\\My Documents\\My Python\\Active\\downloads\\2014-12-07\\01\\30' pathfilelocaloutput = 'C:\Documents and Settings\jmalinchak\My Documents\My Python\Active\output\\output_readintomemoryinsertcalendarspreadpairsintodictionary.csv' showresults = 0 ######################################################################## import readintomemoryinsertcalendarspreadpairsintodictionary print('running readintomemoryinsertcalendarspreadpairsintodictionary...') cal = readintomemoryinsertcalendarspreadpairsintodictionary.read( test_downloadpath, showresults) #if showresults == 1: print('completed readintomemoryinsertcalendarspreadpairsintodictionary') dPairs = cal.PairsDictionary dPairsCalculated = {} switch = 0 #if showresults == 1: print('building valid pairs...') for k, ls in dPairs.items(): earlier = ls[0] later = ls[1]
def execute_quantifyprofitlossleg(self, SellEarlyOptionSymbol, BuyLaterOptionSymbol, PairSpread, showresults): pathfilelocalsymbols='inputs\\SymbolsTemp.txt' pathfilelocalexpirations='inputs\\ExpirationsTemp.txt' rootlocalforfilespulled='downloads' directorylocaloutput='output' import mytools as mt mysymbol = mt.get_from_optionsymbol.symbol(SellEarlyOptionSymbol) #file = open(pathfilelocalsymbols, 'w') #file.close() with open(pathfilelocalsymbols, 'w') as fsymbol: fsymbol.write(mysymbol+'\n') dExpirations={} myexpiration=mt.get_from_optionsymbol.expirationdate(SellEarlyOptionSymbol) if not myexpiration in dExpirations: dExpirations[myexpiration] = myexpiration.strftime("%Y-%m-%d") myexpiration=mt.get_from_optionsymbol.expirationdate(BuyLaterOptionSymbol) if not myexpiration in dExpirations: dExpirations[myexpiration] = myexpiration.strftime("%Y-%m-%d") with open(pathfilelocalexpirations, 'w') as fexpirations: for k,v in dExpirations.items(): fexpirations.write(v+'\n') #,pathfilelocalsymbols,pathfilelocalexpirations,rootlocalforfilespulled,directorylocaloutput ################################################ # # Returns file name of output # ################################################ import mytools downloaddirectorylocal = mytools.mystrings.appendnormaldateddirectorybasedoncurrenttime15(rootlocalforfilespulled) print('downloaddirectorylocal=' + downloaddirectorylocal) ################################################ import shutil shutil.rmtree(downloaddirectorylocal, ignore_errors=True) ################################################ import pullpricesallfromdirectorylocalroot pullpricesallfromdirectorylocalroot.pull(downloaddirectorylocal, pathfilelocalsymbols, pathfilelocalexpirations) ################################################ import readintomemoryinsertcalendarspreadpairsintodictionary cal = readintomemoryinsertcalendarspreadpairsintodictionary.read(downloaddirectorylocal) #if showresults == 1: dPairs = cal.PairsDictionary print('completed readintomemoryinsertcalendarspreadpairsintodictionary =' + str(len(dPairs))) #if showresults == 1: print('building valid pairs...') #PairSpreadcurrent = -999 #putpairspreadcurrent = -999 #PairSpreadcurrent = -999.99 import structureforcalendartrade for k,ls in dPairs.items(): earlier = ls[0] later = ls[1] #print(earlier.optionsymbol + ' ' + later.optionsymbol) if earlier.optionsymbol == SellEarlyOptionSymbol: #print('My s',SellEarlyOptionSymbol,BuyLaterOptionSymbol) if later.optionsymbol == BuyLaterOptionSymbol: #print('My s',SellEarlyOptionSymbol,BuyLaterOptionSymbol) print('-----------------------------------------') print('EarlierBid = ' + str(float(earlier.bid))) print('EarlierAsk = ' + str(float(earlier.ask))) print('EarlierMidpoint = ' + str(((float(earlier.bid) + float(earlier.ask)) / 2.0))) print('LaterBid = ' + str(float(later.bid))) print('LaterAsk = ' + str(float(later.ask))) print('LaterMidpoint = ' + str(((float(later.bid) + float(later.ask)) / 2.0))) print('-----------------------------------------') structCalendarTrade = structureforcalendartrade.Framework(ls) # print('pairlaterbid='+str(structCalendarTrades)) # print('pairearlierask='+str(pairearlierask)) # # print('putpairlaterbid='+str(putpairlaterbid)) # print('putpairearlierask='+str(putpairearlierask)) # oCalendarSpread = structCalendarTrade.closingpairspreadmarketprices # oPutCalendarSpread = structCalendarTradePut.closingpairspreadmarketprices print('openingpairspreadmarketprices='+str(structCalendarTrade.openingpairspreadmarketprices)) print('openingpairspreadmidpointprices='+str(structCalendarTrade.openingpairspreadmidpointprices)) print('closingpairspreadmarketprices='+str(structCalendarTrade.closingpairspreadmarketprices)) print('closingpairspreadmidpointprices='+str(structCalendarTrade.closingpairspreadmidpointprices))
def execute_results(self,rootlocal,pathfilelocaloutput,pathfilelocalsymbols,pathfilelocalexpirations,showresults): ################################################ import mytools mydirectory = mytools.mystrings.appendnormaldateddirectorybasedoncurrenttime15(rootlocal) print(mydirectory) ################################################ import shutil shutil.rmtree(mydirectory, ignore_errors=True) ################################################ import pulllpricesallfromdirectorylocalroot pulllpricesallfromdirectorylocalroot.pull(mydirectory, pathfilelocalsymbols, pathfilelocalexpirations) ################################################ import readintomemoryinsertcalendarspreadpairsintodictionary cal = readintomemoryinsertcalendarspreadpairsintodictionary.read(mydirectory) #if showresults == 1: print('completed readintomemoryinsertcalendarspreadpairsintodictionary') dPairs = cal.PairsDictionary dPairsCalculated = {} #if showresults == 1: print('building valid pairs...') for k,ls in dPairs.items(): earlier = ls[0] later = ls[1] if earlier.bid.replace('.','',1).isdigit() and float(earlier.bid) >= 0.25: if float(earlier.bid) <= 4.0: if (earlier.optiontype == 'C' and float(earlier.stockprice) < float(earlier.strike)) or (earlier.optiontype == 'P' and float(earlier.stockprice) > float(earlier.strike)): if later.ask.replace('.','',1).isdigit() and float(later.ask) > 0.0 and float(earlier.bid)/float(later.ask) > 0.6: dPairsCalculated[k] = float(earlier.bid)/float(later.ask) if showresults == 1: print(str(len(dPairsCalculated)) + ' valid pairs...') # if earlier.optiontype == 'C' and float(earlier.stockprice) < float(earlier.strike): # dPairsCalculated[k] = float(earlier.bid)/float(later.ask) # if earlier.optiontype == 'P' and float(earlier.stockprice) > float(earlier.strike): # dPairsCalculated[k] = float(earlier.bid)/float(later.ask) #print(earlier.optionsymbol,later.optionsymbol, ' >>> ', earlier.bid, later.ask,float(earlier.bid)/float(later.ask)) #,((earlier.bid+earlier.ask)/2.00), ((later.bid+later.ask)/2.00), ((earlier.bid+earlier.ask)/2.00) - ((later.bid+later.ask)/2.00)) #dPairsCalculated[k] = float(earlier.bid)/float(later.ask) #from operator import itemgetter, attrgetter, methodcaller #tPairsSorted = sorted(dPairsCalculated.items(), key=itemgetter('ratio')) #if showresults == 1: print('sorting results...') from collections import OrderedDict dOrdered = OrderedDict(sorted(dPairsCalculated.items(), key=lambda t: t[1])) outputlines = {} #if showresults == 1: print('putting results into printable dictionary ' + str(len(dOrdered)) + ' lines') for k1,v1 in dOrdered.items(): #ls = list(dPairs.keys())[list(dPairs.values()).index(k1)] ls = dPairs.get(k1) earlier = ls[0] later = ls[1] outputlines[len(outputlines)]=earlier.optionsymbol+','+later.optionsymbol+','+str(later.strike)+','+str(later.stockprice)+','+str(earlier.bid)+','+str(later.ask)+','+'{percent:.0%}'.format(percent=float(earlier.bid)/float(later.ask)) +','+ str(round(float(later.ask)-float(earlier.bid),2)) #print(outputline) #print(earlier.optionsymbol,later.optionsymbol,'<strike>'+later.strike+'<\strike>','<stockprice>'+later.stockprice+'<\stockprice>',' > ',earlier.bid,later.ask,' >>> ','{percent:.0%}'.format(percent=float(earlier.bid)/float(later.ask))) make_sure_filepath_exists(pathfilelocaloutput) #if showresults == 1: print('printing results to ' + pathfilelocaloutput) with open(pathfilelocaloutput, 'w') as f: for outputline in outputlines.values(): f.write(outputline+'\n') #if showresults == 1: print('done')
# -*- coding: utf-8 -*- """ Created on Sun Nov 23 00:17:18 2014 @author: jmalinchak """ import readintomemoryinsertcalendarspreadpairsintodictionary cal = readintomemoryinsertcalendarspreadpairsintodictionary.read('C:\\Documents and Settings\\jmalinchak\\My Documents\\My Python\\Active\\downloads\\20141204\\1600test') #cal = readintomemoryinsertcalendarspreadpairsintodictionary.read('C:\\Batches\\AutomationProjects\\My Python\\downloads\\20141204end') dPairs = cal.PairsDictionary dPairsCalculated = {} switch = 0 for k,ls in dPairs.items(): earlier = ls[0] later = ls[1] if float(earlier.bid) > 0.50: if float(earlier.bid) < 3.50: if earlier.optiontype == 'C': if float(earlier.stockprice) < float(earlier.strike): dPairsCalculated[k] = float(earlier.bid)/float(later.ask) if earlier.optiontype == 'P': if float(earlier.stockprice) > float(earlier.strike): dPairsCalculated[k] = float(earlier.bid)/float(later.ask) #print(earlier.optionsymbol,later.optionsymbol, ' >>> ', earlier.bid, later.ask,float(earlier.bid)/float(later.ask)) #,((earlier.bid+earlier.ask)/2.00), ((later.bid+later.ask)/2.00), ((earlier.bid+earlier.ask)/2.00) - ((later.bid+later.ask)/2.00))
path = os.path.dirname(os.path.abspath(filepath)) os.makedirs(path) except OSError as exception: if exception.errno != errno.EEXIST: raise ######################################################################## #test_downloadpath='C:\\Documents and Settings\\jmalinchak\\My Documents\\My Python\\Active\\downloads\\test' test_downloadpath='C:\\Documents and Settings\\jmalinchak\My Documents\\My Python\\Active\\downloads\\2014-12-07\\01\\60' #test_downloadpath='C:\\Documents and Settings\\jmalinchak\\My Documents\\My Python\\Active\\downloads\\2014-12-07\\01\\30' pathfilelocaloutput='C:\Documents and Settings\jmalinchak\My Documents\My Python\Active\output\\output_readintomemoryinsertcalendarspreadpairsintodictionary.csv' showresults = 0 ######################################################################## import readintomemoryinsertcalendarspreadpairsintodictionary print('running readintomemoryinsertcalendarspreadpairsintodictionary...') cal = readintomemoryinsertcalendarspreadpairsintodictionary.read(test_downloadpath,showresults) #if showresults == 1: print('completed readintomemoryinsertcalendarspreadpairsintodictionary') dPairs = cal.PairsDictionary dPairsCalculated = {} switch = 0 #if showresults == 1: print('building valid pairs...') for k,ls in dPairs.items(): earlier = ls[0] later = ls[1]