2013-05-12 4 views
1

Я пытаюсь создать программу на Python, в которой пользователь вводит количество биржевых тикеров и желаемый диапазон дат; выход будет представлять собой график ежедневной совокупной доходности портфеля в этом диапазоне дат, предполагая, что акции имеют равные веса.Корреляция массивов и вложенных циклов в Pandas (анализ портфеля ценных бумаг)

До сих пор это мой входной блок:

import datetime 
import pandas 
import numpy 
import matplotlib.pyplot as plt 
from matplotlib import pyplot 
import csv 
from pandas.io.data import DataReader 

isValid = False 

userInStart = raw_input("Enter Start Date mm/dd/yyyy: ") """start of date range""" 
userInEnd = raw_input ("Enter End Date mm/dd/yyyy: ") """end of date range""" 

StockCount = input ('Input the number of stocks in the porfolio: ') 
StockArray = list() """an array of input stocks""" 
Return = [[]] """an array of daily returns for each stock""" 
CumulativeReturn = list() """an array of cumulative returns for each stock""" 

Блок обработки:

for i in range(0,StockCount): 
    for j in range(1,len(StockArray[i]["Adj Close"])): 
     Return[i].append (StockArray[i]["Adj Close"][j] - StockArray[i]["Adj Close"][j-1]) 

1) Если я вход 1 акции, в конце концов, я остался с массивом возвратов, но нет дат. Как я могу связать массив Return с датами

2) Если я ввожу более одного запаса, мне присваивается индекс за пределами диапазона. Что может быть причиной проблемы?

Любая помощь по концептуализации решения также будет высоко оценена.

Благодаря

ответ

0

не видя полный список вашей программы невозможно ответить на вопрос 2. Если вы внимательно посмотрите на StackTrace из «индекса из диапазона» исключения, он должен сказать вам линию номер, в котором выполняется исключение. Начните оттуда.

Что касается вопроса 1, вам следует рассмотреть возможность применения техники проектирования OO в своем приложении.

Например, возврат может быть реализован как класс, как этот

class Return(object): 
    def __init__(self, date, r): 
     self.date = date 
     self.r = r 

В этом случае вы связать дату с возвращаемым значением.

 Смежные вопросы

  • Нет связанных вопросов^_^