Esempio n. 1
0
    def execute_results(self,
                        rootlocalforfilespulled,
                        #onlyoutofthemoney, # onlyoutofthemoney 1 for yes, 0 for no
                        maxvalueatrisk, 
                        maxsellearlyprice, # MaxSellEarlyPrice
                        minbuylaterprice, # MinBuyLaterPrice
                        minpairspreadpercent, # MinimumSpreadPercentage
                        maxpairspreadpercent, # MinimumSpreadPercentage
                        maxbidaskspreadpercentagesell,
                        maxbidaskspreadpercentagebuy,    
                        minopeninterest,
                        earningsdatestring,
                        directorylocaloutput,
                        showresults):
 #       import mytools
        downloaddirectorylocal = rootlocalforfilespulled #mytools.mystrings.appendnormaldateddirectorybasedoncurrenttime15(rootlocalforfilespulled)
        print('-- downloaddirectorylocal set to ' + downloaddirectorylocal)
        
        import readintomemorybuilddictionaryofpairsdictionariesbysymbol        
        o = readintomemorybuilddictionaryofpairsdictionariesbysymbol.read(downloaddirectorylocal,showresults)
        
        dDictionaryOfPairsDictionariesBySymbol = o.DictionaryOfPairsDictionariesBySymbol        
#        dTestValueAndPairTupleSortableByPairSpreadPct = {}
#        dPairsValid = {}
        dCalendarPairs = {}
        dQualifiedPairsBasedOnAllCriteriaProvided = {}
        bContinue = 1   
        for kSymbol,vPairsDictionary in dDictionaryOfPairsDictionariesBySymbol.items():
            dPairs  = vPairsDictionary
            #if showresults == 1:
            print('-- ' + kSymbol + ' building valid pairs... ')
            bContinue == 1            
            for k,ls in dPairs.items():
                earlier = ls[0]
                later = ls[1]
                bContinue == 1
                #-- Make sure EarlierExpirationIsBefore and LaterExpirationIsAfter
                if len(earningsdatestring) > 0:
                    bContinue == 0
                    from datetime import datetime
                    earningsdate = datetime.strptime(earningsdatestring, '%Y-%m-%d')
                    print('earningsdate= ' + str(earningsdate))
                    if earlier.expirationdate <= earningsdate and later.expirationdate > earningsdate:
                        bContinue == 1
                if bContinue == 1:
                    dCalendarPairs[len(dCalendarPairs)] = ls
                    #-- Make sure onlyoutofthemoney is respected
#                    if onlyoutofthemoney == 1:
#                        bContinue == 0
                    if (earlier.optiontype == 'C' and float(earlier.stockprice) < float(earlier.strike)) \
                        or (earlier.optiontype == 'P' and float(earlier.stockprice) > float(earlier.strike)):
                            #print('passed',earlier.optiontype ,earlier.stockprice,earlier.strike)
#                            bContinue == 1
#                    print( bContinue,earlier.optiontype ,earlier.stockprice,earlier.strike)
#                    if bContinue == 1:
                        #-- Set your MaxSellEarlyPrice
                        
                            #-- check bid-ask prices are numeric
                            if earlier.bid.replace('.','',1).isdigit() and later.ask.replace('.','',1).isdigit():
                                if later.bid.replace('.','',1).isdigit() and earlier.ask.replace('.','',1).isdigit():
                                    #-- check earlier bid <= maxsellearlyprice
                                    if float(earlier.bid) <= maxsellearlyprice:
                                        #-- Set your MinBuyLaterPrice    
                                        if float(later.ask) > minbuylaterprice:
                                            if float(earlier.bid) > 0.0 and float(later.ask) > 0.0 and float(later.bid) > 0:                        
                                            #-- Make sure MinimumSpreadPercentage is greater than
                                                if float(earlier.bid)/float(later.ask) > minpairspreadpercent:
                                                    #-- Make sure MaximumSpreadPercentage is less than
                                                    if float(earlier.bid)/float(later.ask) <= maxpairspreadpercent:
                                                        if float(maxvalueatrisk) >= -float(earlier.bid)+float(later.ask):
                                                            if (float(earlier.ask) - float(earlier.bid)) / float(earlier.bid) <= float(maxbidaskspreadpercentagesell):
                                                                if (float(later.ask) - float(later.bid)) / float(later.bid) <= float(maxbidaskspreadpercentagebuy):
                                                                    if int(earlier.openinterest) > minopeninterest and int(later.openinterest) > minopeninterest:
                                                                        dQualifiedPairsBasedOnAllCriteriaProvided[len(dQualifiedPairsBasedOnAllCriteriaProvided)] = ls
#                                            dTestValueAndPairTupleSortableByPairSpreadPct[len(dTestValueAndPairTupleSortableByPairSpreadPct)] = [float(earlier.bid)/float(later.ask),ls]
                                            #dPairsValid[len(dPairsValid)] = ls
#                                            if showresults == 1:
#                                                print(str(len(dTestValueAndPairTupleSortableByPairSpreadPct)) + ' valid pairs...')
#        print(str(len(dCalendarPairs)) + ' qualified pairs based on straddling expiration date')
#        print('sorting results...')            
#        from collections import OrderedDict
#        dOrdered = OrderedDict(sorted(dTestValueAndPairTupleSortableByPairSpreadPct.items(), key=lambda t: t[1][0]))
        self.DictionaryOfAllCalendarPairs = dCalendarPairs
        self.DictionaryOfFilteredCalendarPairs = dQualifiedPairsBasedOnAllCriteriaProvided
Esempio n. 2
0
    def execute_results(self,
                        rootlocalforfilespulled,
                        #onlyoutofthemoney, # onlyoutofthemoney 1 for yes, 0 for no
                        maxvalueatrisk, 
                        maxsellearlyprice, # MaxSellEarlyPrice
                        minbuylaterprice, # MinBuyLaterPrice
                        minspreadpercent, # MinimumSpreadPercentage
                        maxspreadpercent, # MinimumSpreadPercentage
                        earningsdatestring,
                        directorylocaloutput,
                        showresults):
 #       import mytools
        downloaddirectorylocal = rootlocalforfilespulled #mytools.mystrings.appendnormaldateddirectorybasedoncurrenttime15(rootlocalforfilespulled)
        print('downloaddirectorylocal set to ' + downloaddirectorylocal + ' within class buildpairsdictionarywithcriteriafromdirectoryofpulledfiles.py')
        
        import readintomemorybuilddictionaryofpairsdictionariesbysymbol        
        o = readintomemorybuilddictionaryofpairsdictionariesbysymbol.read(downloaddirectorylocal,showresults)
        
        dDictionaryOfPairsDictionariesBySymbol = o.DictionaryOfPairsDictionariesBySymbol
        
#        dTestValueAndPairTupleSortableByPairSpreadPct = {}
#        dPairsValid = {}
        

        
        dCalendarPairs = {}
        dQualifiedPairsBasedOnAllCriteriaProvided = {}
        bContinue = 1   
        for kSymbol,vPairsDictionary in dDictionaryOfPairsDictionariesBySymbol.items():
            dPairs  = vPairsDictionary
            #if showresults == 1:
            print('building valid pairs... ' + kSymbol)
            bContinue == 1            
            for k,ls in dPairs.items():
                earlier = ls[0]
                later = ls[1]
                bContinue == 1
                #-- Make sure EarlierExpirationIsBefore and LaterExpirationIsAfter
                if len(earningsdatestring) > 0:
                    bContinue == 0
                    from datetime import datetime
                    earningsdate = datetime.strptime(earningsdatestring, '%Y-%m-%d')
                    print('earningsdate= ' + str(earningsdate))
                    if earlier.expirationdate <= earningsdate and later.expirationdate > earningsdate:
                        bContinue == 1
                if bContinue == 1:
                    dCalendarPairs[len(dCalendarPairs)] = ls
                    #-- Make sure onlyoutofthemoney is respected
#                    if onlyoutofthemoney == 1:
#                        bContinue == 0
                    if (earlier.optiontype == 'C' 
                        and float(earlier.stockprice) < float(earlier.strike)) 
                        or 
                        (earlier.optiontype == 'P' 
                        and float(earlier.stockprice) > float(earlier.strike)):
                            #print('passed',earlier.optiontype ,earlier.stockprice,earlier.strike)
#                            bContinue == 1
#                    print( bContinue,earlier.optiontype ,earlier.stockprice,earlier.strike)
#                    if bContinue == 1:
                        #-- Set your MaxSellEarlyPrice
                        if earlier.bid.replace('.','',1).isdigit() and float(earlier.bid) <= maxsellearlyprice:
                            #-- Set your MinBuyLaterPrice    
                            if later.ask.replace('.','',1).isdigit() and float(later.ask) > minbuylaterprice:
                                #-- Make sure MinimumSpreadPercentage is greater than
                                if float(earlier.bid)/float(later.ask) > minspreadpercent:
                                    #-- Make sure MaximumSpreadPercentage is less than
                                    if float(earlier.bid)/float(later.ask) <= maxspreadpercent:
                                        if float(maxvalueatrisk) >= -float(earlier.bid)+float(later.ask):
                                            dQualifiedPairsBasedOnAllCriteriaProvided[len(dQualifiedPairsBasedOnAllCriteriaProvided)] = ls
Esempio n. 3
0
    def execute_results(
            self,
            #                        pathfilelocalsymbols,
            #                        pathfilelocalexpirations,
            rootlocalforfilespulled,
            #onlyoutofthemoney, # onlyoutofthemoney 1 for yes, 0 for no
            maxvalueatrisk,
            maxsellearlyprice,  # MaxSellEarlyPrice
            minbuylaterprice,  # MinBuyLaterPrice
            minspreadpercent,  # MinimumSpreadPercentage
            maxspreadpercent,  # MinimumSpreadPercentage
            earningsdatestring,
            directorylocaloutput,
            showresults):
        import mytools
        downloaddirectorylocal = rootlocalforfilespulled  #mytools.mystrings.appendnormaldateddirectorybasedoncurrenttime15(rootlocalforfilespulled)
        print('downloaddirectorylocal=' + downloaddirectorylocal)

        import readintomemorybuilddictionaryofpairsdictionariesbysymbol
        o = readintomemorybuilddictionaryofpairsdictionariesbysymbol.read(
            downloaddirectorylocal)

        dDictionaryOfPairsDictionariesBySymbol = o.DictionaryOfPairsDictionariesBySymbol

        dPairsCalculated = {}
        dPairsValid = {}

        dQualifiedPairsBasedOnDate = {}
        bContinue = 1
        for kSymbol, vPairsDictionary in dDictionaryOfPairsDictionariesBySymbol.items(
        ):
            dPairs = vPairsDictionary
            #if showresults == 1:
            print('building valid pairs... ' + kSymbol)
            bContinue == 1
            for k, ls in dPairs.items():
                earlier = ls[0]
                later = ls[1]
                bContinue == 1
                #-- Make sure EarlierExpirationIsBefore and LaterExpirationIsAfter
                if len(earningsdatestring) > 0:
                    bContinue == 0
                    from datetime import datetime
                    earningsdate = datetime.strptime(earningsdatestring,
                                                     '%Y-%m-%d')
                    print('earningsdate= ' + str(earningsdate))
                    if earlier.expirationdate <= earningsdate and later.expirationdate > earningsdate:
                        bContinue == 1
                if bContinue == 1:
                    dQualifiedPairsBasedOnDate[len(
                        dQualifiedPairsBasedOnDate)] = ls
                    #-- Make sure onlyoutofthemoney is respected
                    #                    if onlyoutofthemoney == 1:
                    #                        bContinue == 0
                    if (earlier.optiontype == 'C' and
                            float(earlier.stockprice) < float(earlier.strike)
                        ) or (earlier.optiontype == 'P' and float(
                            earlier.stockprice) > float(earlier.strike)):
                        #print('passed',earlier.optiontype ,earlier.stockprice,earlier.strike)
                        #                            bContinue == 1
                        #                    print( bContinue,earlier.optiontype ,earlier.stockprice,earlier.strike)
                        #                    if bContinue == 1:
                        #-- Set your MaxSellEarlyPrice
                        if earlier.bid.replace('.', '', 1).isdigit() and float(
                                earlier.bid) <= maxsellearlyprice:
                            #-- Set your MinBuyLaterPrice
                            if later.ask.replace(
                                    '.', '', 1).isdigit() and float(
                                        later.ask) > minbuylaterprice:
                                #-- Make sure MinimumSpreadPercentage is greater than
                                if float(earlier.bid) / float(
                                        later.ask) > minspreadpercent:
                                    #-- Make sure MaximumSpreadPercentage is less than
                                    if float(earlier.bid) / float(
                                            later.ask) <= maxspreadpercent:
                                        if float(maxvalueatrisk) >= -float(
                                                earlier.bid) + float(
                                                    later.ask):
                                            dPairsCalculated[len(
                                                dPairsCalculated)] = float(
                                                    earlier.bid) / float(
                                                        later.ask)
                                            dPairsValid[len(dPairsValid)] = ls
                                            if showresults == 1:
                                                print(
                                                    str(len(dPairsCalculated))
                                                    + ' valid pairs...')
        print(
            str(len(dQualifiedPairsBasedOnDate)) +
            ' qualified pairs based on straddling expiration date')
        print('sorting results...')
        from collections import OrderedDict
        dOrdered = OrderedDict(
            sorted(dPairsCalculated.items(), key=lambda t: t[1]))
        print(str(len(dOrdered)) + ' items in Ordered dictionary')
        outputlines = {}
        outputlines[len(outputlines)]='earlier.optionsymbol' + ',' + \
                'later.optionsymbol' + ',' + \
                'earlier.strike' + '/' + 'later.strike' + ',' + \
                'later.optiontype' + ',' + \
                'earlier.expirationdate-datetime.today()' + ',' + 'remainder' + ',' + \
                'later.expirationdate-earlier.expirationdate' + ',' + 'remainder' + ',' + \
                'earlier.strike - later.strike' + ',' + \
                'later.stockprice' + ',' + \
                'earlier.bid' + ',' + \
                'later.ask' + ',' + 'percent earlier.bid/later.ask' + ',' + \
                'later.ask-earlier.bid' + ',' + \
                'later.inthemoney'
        #if showresults == 1:
        print('putting results into printable dictionary ' +
              str(len(dOrdered)) + ' lines')
        from datetime import datetime
        for k1, v1 in dOrdered.items():
            #ls = list(dPairs.keys())[list(dPairs.values()).index(k1)]
            ls = dPairsValid.get(k1)
            earlier = ls[0]
            later = ls[1]
            outputlines[len(outputlines)]=earlier.optionsymbol + ',' + \
                later.optionsymbol + ',' + \
                "'" + str(earlier.strike) + '/' + str(later.strike) + ',' + \
                later.optiontype + ',' + \
                str(earlier.expirationdate-datetime.today()) + ',' + \
                str(later.expirationdate-earlier.expirationdate) + ',' + \
                str(float(earlier.strike) - float(later.strike)) + ',' + \
                str(later.stockprice) + ',' + \
                str(earlier.bid) + ',' + \
                str(later.ask) + ',' + '{percent:.0%}'.format(percent=float(earlier.bid)/float(later.ask)) + ',' + \
                str(float(later.ask)-float(earlier.bid)) + ',' + \
                str(later.inthemoney)

        mytools.general.make_sure_path_exists(directorylocaloutput)

        datetime14 = mytools.mystrings.ConvertDatetime14()
        print(datetime14)
        outputfilepath = directorylocaloutput + '\\calendarspreads ' + 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
Esempio n. 4
0
    def execute_results(self, pathfilelocalsymbols, pathfilelocalexpirations,
                        rootlocalforfilespulled, directorylocaloutput,
                        showresults):
        import mytools
        downloaddirectorylocal = rootlocalforfilespulled  #mytools.mystrings.appendnormaldateddirectorybasedoncurrenttime15(rootlocalforfilespulled)
        print('downloaddirectorylocal=' + downloaddirectorylocal)

        import readintomemorybuilddictionaryofpairsdictionariesbysymbol
        o = readintomemorybuilddictionaryofpairsdictionariesbysymbol.read(
            downloaddirectorylocal)

        dDictionaryOfPairsDictionariesBySymbol = o.DictionaryOfPairsDictionariesBySymbol

        dPairsCalculated = {}
        dPairsValid = {}

        for kSymbol, vPairsDictionary in dDictionaryOfPairsDictionariesBySymbol.items(
        ):
            dPairs = vPairsDictionary
            #if showresults == 1:
            print('building valid pairs... ' + kSymbol)

            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)):
                        #------------------------------------------
                        #-- Set your Percentage cutoff here
                        #------------------------------------------
                        if later.ask.replace(
                                '.', '',
                                1).isdigit() and float(later.ask) > 0.0:
                            if float(earlier.bid) / float(later.ask) > 0.8:
                                #if float(earlier.bid)/float(later.ask) <= 1.0:
                                dPairsCalculated[len(
                                    dPairsCalculated)] = float(
                                        earlier.bid) / float(later.ask)
                                dPairsValid[len(dPairsValid)] = ls
                                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]))
        print(str(len(dOrdered)) + ' items in Ordered dictionary')
        outputlines = {}

        #if showresults == 1:
        print('putting results into printable dictionary ' +
              str(len(dOrdered)) + ' lines')
        from datetime import datetime
        for k1, v1 in dOrdered.items():
            #ls = list(dPairs.keys())[list(dPairs.values()).index(k1)]
            ls = dPairsValid.get(k1)
            earlier = ls[0]
            later = ls[1]
            outputlines[len(outputlines)]=earlier.optionsymbol + ',' + \
                later.optionsymbol + ',' + \
                "'" + str(earlier.strike) + '/' + str(later.strike) + ',' + \
                later.optiontype + ',' + \
                str(earlier.expirationdate-datetime.today()) + ',' + \
                str(later.expirationdate-earlier.expirationdate) + ',' + \
                str(float(earlier.strike) - float(later.strike)) + ',' + \
                str(later.stockprice) + ',' + \
                str(earlier.bid) + ',' + \
                str(later.ask) + ',' + '{percent:.0%}'.format(percent=float(earlier.bid)/float(later.ask)) + ',' + \
                str(float(later.ask)-float(earlier.bid)) + ',' + \
                str(later.inthemoney)

        mytools.general.make_sure_path_exists(directorylocaloutput)

        datetime14 = mytools.mystrings.ConvertDatetime14()
        print(datetime14)
        outputfilepath = directorylocaloutput + '\\calendarspreads ' + 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_results(self,pathfilelocalsymbols,pathfilelocalexpirations,rootlocalforfilespulled,
                        #onlyoutofthemoney, # onlyoutofthemoney 1 for yes, 0 for no
                        maxvalueatrisk, 
                        maxsellearlyprice, # MaxSellEarlyPrice
                        minbuylaterprice, # MinBuyLaterPrice
                        minspreadpercent, # MinimumSpreadPercentage
                        maxspreadpercent, # MinimumSpreadPercentage
                        earningsdatestring,
                        directorylocaloutput,
                        showresults):
        import mytools
        downloaddirectorylocal = rootlocalforfilespulled #mytools.mystrings.appendnormaldateddirectorybasedoncurrenttime15(rootlocalforfilespulled)
        print('downloaddirectorylocal=' + downloaddirectorylocal)
        
        import readintomemorybuilddictionaryofpairsdictionariesbysymbol        
        o = readintomemorybuilddictionaryofpairsdictionariesbysymbol.read(downloaddirectorylocal)
        
        dDictionaryOfPairsDictionariesBySymbol = o.DictionaryOfPairsDictionariesBySymbol
        
        dPairsCalculated = {}
        dPairsValid = {}
        

        
        dQualifiedPairsBasedOnDate = {}
        bContinue = 1   
        for kSymbol,vPairsDictionary in dDictionaryOfPairsDictionariesBySymbol.items():
            dPairs  = vPairsDictionary
            #if showresults == 1:
            print('building valid pairs... ' + kSymbol)
            bContinue == 1            
            for k,ls in dPairs.items():
                earlier = ls[0]
                later = ls[1]
                bContinue == 1
                #-- Make sure EarlierExpirationIsBefore and LaterExpirationIsAfter
                if len(earningsdatestring) > 0:
                    bContinue == 0
                    from datetime import datetime
                    earningsdate = datetime.strptime(earningsdatestring, '%Y-%m-%d')
                    print('earningsdate= ' + str(earningsdate))
                    if earlier.expirationdate <= earningsdate and later.expirationdate > earningsdate:
                        bContinue == 1
                if bContinue == 1:
                    dQualifiedPairsBasedOnDate[len(dQualifiedPairsBasedOnDate)] = ls
                    #-- Make sure onlyoutofthemoney is respected
#                    if onlyoutofthemoney == 1:
#                        bContinue == 0
                    if (earlier.optiontype == 'C' and float(earlier.stockprice) < float(earlier.strike)) or (earlier.optiontype == 'P' and float(earlier.stockprice) > float(earlier.strike)):
                            #print('passed',earlier.optiontype ,earlier.stockprice,earlier.strike)
#                            bContinue == 1
#                    print( bContinue,earlier.optiontype ,earlier.stockprice,earlier.strike)
#                    if bContinue == 1:
                        #-- Set your MaxSellEarlyPrice
                        if earlier.bid.replace('.','',1).isdigit() and float(earlier.bid) <= maxsellearlyprice:
                            #-- Set your MinBuyLaterPrice    
                            if later.ask.replace('.','',1).isdigit() and float(later.ask) > minbuylaterprice:
                                #-- Make sure MinimumSpreadPercentage is greater than
                                if float(earlier.bid)/float(later.ask) > minspreadpercent:
                                    #-- Make sure MaximumSpreadPercentage is less than
                                    if float(earlier.bid)/float(later.ask) <= maxspreadpercent:
                                        if float(maxvalueatrisk) >= -float(earlier.bid)+float(later.ask):
                                            dPairsCalculated[len(dPairsCalculated)] = float(earlier.bid)/float(later.ask)
                                            dPairsValid[len(dPairsValid)] = ls
                                            if showresults == 1:
                                                print(str(len(dPairsCalculated)) + ' valid pairs...')
        print(str(len(dQualifiedPairsBasedOnDate)) + ' qualified pairs based on straddling expiration date')
        print('sorting results...')            
        from collections import OrderedDict
        dOrdered = OrderedDict(sorted(dPairsCalculated.items(), key=lambda t: t[1]))
        print(str(len(dOrdered))+ ' items in Ordered dictionary')
        outputlines = {}
        outputlines[len(outputlines)]='earlier.optionsymbol' + ',' + \
                'later.optionsymbol' + ',' + \
                'earlier.strike' + '/' + 'later.strike' + ',' + \
                'later.optiontype' + ',' + \
                'earlier.expirationdate-datetime.today()' + ',' + 'remainder' + ',' + \
                'later.expirationdate-earlier.expirationdate' + ',' + 'remainder' + ',' + \
                'earlier.strike - later.strike' + ',' + \
                'later.stockprice' + ',' + \
                'earlier.bid' + ',' + \
                'later.ask' + ',' + 'percent earlier.bid/later.ask' + ',' + \
                'later.ask-earlier.bid' + ',' + \
                'later.inthemoney'
        #if showresults == 1:
        print('putting results into printable dictionary ' + str(len(dOrdered)) + ' lines')
        from datetime import datetime 
        for k1,v1 in dOrdered.items():
            #ls = list(dPairs.keys())[list(dPairs.values()).index(k1)]
            ls = dPairsValid.get(k1)
            earlier = ls[0]
            later = ls[1]
            outputlines[len(outputlines)]=earlier.optionsymbol + ',' + \
                later.optionsymbol + ',' + \
                "'" + str(earlier.strike) + '/' + str(later.strike) + ',' + \
                later.optiontype + ',' + \
                str(earlier.expirationdate-datetime.today()) + ',' + \
                str(later.expirationdate-earlier.expirationdate) + ',' + \
                str(float(earlier.strike) - float(later.strike)) + ',' + \
                str(later.stockprice) + ',' + \
                str(earlier.bid) + ',' + \
                str(later.ask) + ',' + '{percent:.0%}'.format(percent=float(earlier.bid)/float(later.ask)) + ',' + \
                str(float(later.ask)-float(earlier.bid)) + ',' + \
                str(later.inthemoney)
            
        mytools.general.make_sure_path_exists(directorylocaloutput)
        
        datetime14 = mytools.mystrings.ConvertDatetime14()
        print(datetime14)
        outputfilepath = directorylocaloutput + '\\calendarspreads ' + 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_results(self,pathfilelocalsymbols,pathfilelocalexpirations,rootlocalforfilespulled,earningsdatestring,directorylocaloutput,showresults):
        import mytools
        downloaddirectorylocal = rootlocalforfilespulled #mytools.mystrings.appendnormaldateddirectorybasedoncurrenttime15(rootlocalforfilespulled)
        print('downloaddirectorylocal=' + downloaddirectorylocal)
        
        import readintomemorybuilddictionaryofpairsdictionariesbysymbol        
        o = readintomemorybuilddictionaryofpairsdictionariesbysymbol.read(downloaddirectorylocal)
        
        dDictionaryOfPairsDictionariesBySymbol = o.DictionaryOfPairsDictionariesBySymbol
        
        dPairsCalculated = {}
        dPairsValid = {}
        
        from datetime import datetime
        earningsdate = datetime.strptime(earningsdatestring, '%Y-%m-%d')
        print('earningsdate= ' + str(earningsdate))
        
        dQualifiedPairsBasedOnDate = {}
        for kSymbol,vPairsDictionary in dDictionaryOfPairsDictionariesBySymbol.items():
            dPairs  = vPairsDictionary
            #if showresults == 1:
            print('building valid pairs... ' + kSymbol)
                
            for k,ls in dPairs.items():
                earlier = ls[0]
                later = ls[1]
                #print(earlier.expirationdate,earningsdate)
                if earlier.expirationdate < earningsdate and later.expirationdate > earningsdate:
                    dQualifiedPairsBasedOnDate[len(dQualifiedPairsBasedOnDate)] = ls
                    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)): 
                                #------------------------------------------
                                #-- Set your Percentage cutoff here
                                #------------------------------------------
                                if later.ask.replace('.','',1).isdigit() and float(later.ask) > 0.0:
                                    if float(earlier.bid)/float(later.ask) > 0.0:
                                        #if float(earlier.bid)/float(later.ask) <= 1.0:
                                        dPairsCalculated[len(dPairsCalculated)] = float(earlier.bid)/float(later.ask)
                                        dPairsValid[len(dPairsValid)] = ls
                                        if showresults == 1:
                                            print(str(len(dPairsCalculated)) + ' valid pairs...')
        print(str(len(dQualifiedPairsBasedOnDate)) + ' qualified pairs based on straddling expiration date')
        print('sorting results...')            
        from collections import OrderedDict
        dOrdered = OrderedDict(sorted(dPairsCalculated.items(), key=lambda t: t[1]))
        print(str(len(dOrdered))+ ' items in Ordered dictionary')
        outputlines = {}
        
        #if showresults == 1:
        print('putting results into printable dictionary ' + str(len(dOrdered)) + ' lines')
        from datetime import datetime 
        for k1,v1 in dOrdered.items():
            #ls = list(dPairs.keys())[list(dPairs.values()).index(k1)]
            ls = dPairsValid.get(k1)
            earlier = ls[0]
            later = ls[1]
            outputlines[len(outputlines)]=earlier.optionsymbol + ',' + \
                later.optionsymbol + ',' + \
                "'" + str(earlier.strike) + '/' + str(later.strike) + ',' + \
                later.optiontype + ',' + \
                str(earlier.expirationdate-datetime.today()) + ',' + \
                str(later.expirationdate-earlier.expirationdate) + ',' + \
                str(float(earlier.strike) - float(later.strike)) + ',' + \
                str(later.stockprice) + ',' + \
                str(earlier.bid) + ',' + \
                str(later.ask) + ',' + '{percent:.0%}'.format(percent=float(earlier.bid)/float(later.ask)) + ',' + \
                str(float(later.ask)-float(earlier.bid)) + ',' + \
                str(later.inthemoney)
            
        mytools.general.make_sure_path_exists(directorylocaloutput)
        
        datetime14 = mytools.mystrings.ConvertDatetime14()
        print(datetime14)
        outputfilepath = directorylocaloutput + '\\calendarspreads ' + 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
Esempio n. 7
0
# -*- coding: utf-8 -*-
"""
Created on Sun Feb  1 18:30:53 2015

@author: jmalinchak
"""

import readintomemorybuilddictionaryofpairsdictionariesbysymbol
o = readintomemorybuilddictionaryofpairsdictionariesbysymbol.read(
    'C:\\Documents and Settings\\jmalinchak\\My Documents\\My Python\\Active\\py\\downloads\\2015-02-04\\09\\45\\YHOO',
    1)
print(o.DictionaryOfSymbols)
# -*- coding: utf-8 -*-
"""
Created on Sun Feb  1 18:30:53 2015

@author: jmalinchak
"""

import readintomemorybuilddictionaryofpairsdictionariesbysymbol
o = readintomemorybuilddictionaryofpairsdictionariesbysymbol.read('C:\\Documents and Settings\\jmalinchak\\My Documents\\My Python\\Active\\py\\downloads\\2015-02-04\\09\\45\\YHOO',1)
print(o.DictionaryOfSymbols)