示例#1
0
def calculateKeypoint(dog1, dog2, dog3, octaveNo):
    stopJLoop = len(dog2[0])
    stopILoop = len(dog2)
    # Calculate terminating conditions
    if len(dog2) % 3 == 0:
        stopILoop = len(dog2)
    else:
        stopILoop = stopILoop - (len(dog2) % 3)

    if len(dog2[0]) % 3 == 0:
        stopJLoop = len(dog2[0])
    else:
        stopJLoop = stopJLoop - (len(dog2[0]) % 3)
    # start calculating keypoints
    detectedPoints = []
    for imrow in range(3, len(dog1) - 3, 1):
        # if imrow == stopILoop:
        #     return detectedPoints
        for imcol in range(3, (len(dog1[0])) - 3, 1):
            # if imcol == stopJLoop:
            #     imrow += 1
            #     imcol = 0
            #     continue
            mid = dog2[imrow + 1][imcol + 1]
            maxDOG2 = findMax(dog2, imrow, imcol)
            minDOG2 = findMin(dog2, imrow, imcol)
            if mid >= maxDOG2:
                maxDOG1 = findMax(dog1, imrow, imcol)
                maxDOG3 = findMax(dog3, imrow, imcol)
                if mid > maxDOG1 and mid > maxDOG3:
                    detectedPoints.append([(2**octaveNo) * imrow + 1,
                                           (2**octaveNo) * imcol + 1])

            elif mid <= minDOG2:
                minDOG1 = findMin(dog1, imrow, imcol)
                minDOG3 = findMin(dog3, imrow, imcol)
                if mid < minDOG1 and mid < minDOG3:
                    detectedPoints.append([(2**octaveNo) * imrow + 1,
                                           (2**octaveNo) * imcol + 1])

    return detectedPoints
示例#2
0
DataFolder = 'E:\Dropbox\CQA 2014\Data'
CAPITAL = 1e7
# BUILD_DATE = datetime.datetime(2013, 11, 1)
START_TRAIN = datetime.datetime(2010, 11, 1)
END_TRAIN = datetime.datetime(2013, 10, 31)
START = datetime.datetime(2013, 11, 1)
END = datetime.datetime(2014, 11, 5)
BETA_BOUND = 0.45
WEIGHT_BOUND = 0.05

(StockPrices, SP500Prices, CarhartDaily,
 StockBeta) = ReadData.ReadAll(DataFolder)
StockReturns = ReadData.ReadReturn(DataFolder)
tickers = ReadData.ReadTickers(DataFolder)
(StockMax, highMax, lowMax) = functions.findMax(StockReturns, START, tickers)

decay = 0.003
Coef = pd.read_csv(r'%s/Coef_%s_%s_%.4f.csv' %
                   (DataFolder, START_TRAIN.date(), END_TRAIN.date(), decay))
betas = Coef[['ticker', 'Mkt-RF']].merge(tickers).rename(columns={
    'Mkt-RF': 'beta'
}).sort('beta')
maxes = StockMax[['ticker', 'MAX']].merge(tickers).sort('MAX')
N = betas.shape[0] / 10


def groupPerformance(StockPrices, StockReturns, SP500Prices, StockBeta, betas,
                     START):
    factor = betas.columns.values[1]
    betas = betas.sort(factor)
from scipy.optimize import minimize

DataFolder = 'E:\Dropbox\CQA 2014\Data'
CAPITAL = 1e7
# BUILD_DATE = datetime.datetime(2013, 11, 1)
START_TRAIN = datetime.datetime(2010, 11, 1)
END_TRAIN = datetime.datetime(2013, 10, 31)
START = datetime.datetime(2013, 11, 1)
END = datetime.datetime(2014, 11, 5)
BETA_BOUND = 0.45
WEIGHT_BOUND = 0.05

(StockPrices, SP500Prices, CarhartDaily, StockBeta) = ReadData.ReadAll(DataFolder)
StockReturns = ReadData.ReadReturn(DataFolder)
tickers = ReadData.ReadTickers(DataFolder)
(StockMax, highMax, lowMax) = functions.findMax(StockReturns, START, tickers)

decay  = 0.003
Coef = pd.read_csv(r'%s/Coef_%s_%s_%.4f.csv' % (DataFolder, START_TRAIN.date(), END_TRAIN.date(), decay))
betas = Coef[['ticker', 'Mkt-RF']].merge(tickers).rename(columns={'Mkt-RF': 'beta'}).sort('beta')
maxes = StockMax[['ticker', 'MAX']].merge(tickers).sort('MAX')
N = betas.shape[0]/10

def groupPerformance(StockPrices, StockReturns, SP500Prices, StockBeta, betas, START):
    factor = betas.columns.values[1]
    betas = betas.sort(factor)
    pfValuesAll = pd.DataFrame()
    for n in range(10):
        wTickers = betas.head(N * (n+1)).tail(N)[['ticker']].reset_index(drop=True)
        wTickers['weight'] = 1/np.float64(N)
        (pfValues, pfRecord) = functions.testPortfolio(StockPrices, StockReturns, SP500Prices, StockBeta, wTickers, START)
    print(stock)
    list_price = price[:, i + 1]
    # Change all the values to float
    list_price = np.asfarray(list_price, float)
    # Set the directory
    directory = "Optimization/"

    # Import Optimization Result
    with open(directory + stock + ' optimization.csv') as f:
        reader = csv.reader(f)
        results = [rows for rows in reader]
        results = results[1:optimization_count]  # Remove headers
    results = np.array(results)
    results = np.asfarray(results, float)  # Change all the values to float
    annual_return = results[:, -1]  # Last Column = Annual Return (%)
    maximum_return = functions.findMax(annual_return)
    # Find the index of maximum return
    index = functions.findMaxIndex(annual_return)
    # Technical Variables
    RSI_period = int(results[:, 0][index])
    RSI_Low = int(results[:, 1][index])
    RSI_High = int(results[:, 2][index])
    MACD_Fast = int(results[:, 3][index])
    MACD_Slow = int(results[:, 4][index])
    MACD_Sig = int(results[:, 5][index])
    EMA_Slow = int(results[:, 6][index])
    EMA_Fast = int(results[:, 7][index])
    #market_timing(stock, list_price, RSI_period, MACD_Fast, MACD_Slow, EMA_Slow, RSI_Low, RSI_High, MACD_Sig, EMA_Fast)
    #combined_signal(stock, 'weight 1', i)
    #combined_signal(stock, 'weight 2', i)
    #combined_signal(stock, 'weight optimized', i)
DataFolder = 'E:\Dropbox\CQA 2014\Data'
BUILD_DATE = datetime.datetime(2013, 11, 1)
START_TRAIN = datetime.datetime(2010, 11, 1)
END_TRAIN = datetime.datetime(2013, 10, 31)
BETA_BOUND = 0.5
MAX_POSITION = 0.05

(StockPrices, SP500Prices, CarhartDaily, StockBeta) = ReadData.ReadAll(DataFolder)
StockBeta = ReadData.ReadBeta(DataFolder)
StockReturns = ReadData.ReadReturn(DataFolder)
# tickers = ReadData.ReadTickers(DataFolder)
tickers = ReadData.GetTickers(StockPrices, StockBeta, DataFolder)
# Coef = ReadData.ReadCoef(START_TRAIN, END_TRAIN, DataFolder)
# mCoef = Coef[['Mkt-RF', 'SMB', 'HML', 'UMD']].astype(np.float64).as_matrix()
# alphas = Coef[['alphaFF', 'alphaCAPM', 'alphaSP500']].astype(np.float64).as_matrix()
(longTickers, shortTickers, wTickers) = functions.findMax(StockReturns, BUILD_DATE, tickers)
mCqaBeta = pd.merge(StockBeta, tickers).cqaBeta.astype(np.float64).as_matrix()

CAPITAL = 1e7
def intPart(x):
    return math.modf(x)[1]
iniPrices = pd.merge(StockPrices[StockPrices.date == BUILD_DATE][['ticker', 'date', 'adj_close']],
                     tickers, on = 'ticker')
##tickers = iniPrices[['ticker']]
portfolio = pd.concat((tickers, iniPrices[['date']], wTickers[['weight']], iniPrices[['adj_close']]), axis = 1)
portfolio['nShare'] = ((portfolio['weight'] * CAPITAL / portfolio['adj_close']).map(intPart))
portfolio['value'] = portfolio['nShare'] * portfolio['adj_close']
## Recording the initial portfolio
iniPortfolio = portfolio
resCapital = CAPITAL - sum(portfolio['value'])
pfRecord = iniPortfolio
pfValues = pd.DataFrame()
for group in range(10):
    pfValues = pfValues.append(pd.DataFrame([
        {'date': startDate.date(),
         'value': CAPITAL,
         'MAX_group': group,
         'MAX_mean': 0}
    ]))
lastValues = np.ones(10) * CAPITAL
# lastValues.fill(CAPITAL)
while True:
    # print endDate.date()
    StockPricesSample = StockPrices[(StockPrices['date'] >= backDate) &
                                    (StockPrices['date'] <= endDate)]
    (StockMax, highMax, lowMax) = functions.findMax(StockReturns, startDate, tickers)
    # print 'backDate = %s' % backDate
    # print 'startDate = %s' % startDate
    print 'endDate = %s' % endDate
    for group in range(10):
        # print 'endDate: %s, group: %d' % (endDate, group)
        tmpGroup = StockMax[StockMax['MAX_group'] == group]
        MAX_mean = tmpGroup['MAX'].mean(axis=1)
        tmpTickers = tmpGroup[['ticker']]
        StockPricesSample2 = StockPricesSample.merge(tmpTickers)
        tmpGroup = tmpGroup.merge(
            StockPricesSample2[StockPricesSample2['date'] == startDate][['ticker', 'adj_close']]
            ).rename( columns={'adj_close': 'iniPrice'})
        N = tmpGroup.shape[0]
        # print 'N = %d' % N
        # tmpGroup['nShare'] = CAPITAL / N / tmpGroup['iniPrice']
START_TRAIN = datetime.datetime(2010, 11, 1)
END_TRAIN = datetime.datetime(2013, 10, 31)
BETA_BOUND = 0.5
MAX_POSITION = 0.05

(StockPrices, SP500Prices, CarhartDaily,
 StockBeta) = ReadData.ReadAll(DataFolder)
StockBeta = ReadData.ReadBeta(DataFolder)
StockReturns = ReadData.ReadReturn(DataFolder)
# tickers = ReadData.ReadTickers(DataFolder)
tickers = ReadData.GetTickers(StockPrices, StockBeta, DataFolder)
# Coef = ReadData.ReadCoef(START_TRAIN, END_TRAIN, DataFolder)
# mCoef = Coef[['Mkt-RF', 'SMB', 'HML', 'UMD']].astype(np.float64).as_matrix()
# alphas = Coef[['alphaFF', 'alphaCAPM', 'alphaSP500']].astype(np.float64).as_matrix()
(longTickers, shortTickers,
 wTickers) = functions.findMax(StockReturns, BUILD_DATE, tickers)
mCqaBeta = pd.merge(StockBeta, tickers).cqaBeta.astype(np.float64).as_matrix()

CAPITAL = 1e7


def intPart(x):
    return math.modf(x)[1]


iniPrices = pd.merge(StockPrices[StockPrices.date == BUILD_DATE][[
    'ticker', 'date', 'adj_close'
]],
                     tickers,
                     on='ticker')
##tickers = iniPrices[['ticker']]