1

我正在尝试在 Python 中创建一个程序,用户在其中输入一些股票代码和所需的日期范围;假设股票具有相同的权重,输出将是该日期范围内投资组合的每日累积收益图。

到目前为止,这是我的输入块:

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 只股票,到最后,我会得到一个回报数组,但没有日期。如何将返回数组与日期相关联

2) 如果我输入多只股票,我会收到一个指数超出范围的错误。什么可能导致问题?

任何有关概念化解决方案的帮助也将受到高度赞赏。

谢谢

4

1 回答 1

0

如果没有看到程序的完整列表,就不可能回答问题 2。如果您仔细查看“索引超出范围”异常的堆栈跟踪,它应该会告诉您引发异常的行号。从那里开始。

至于问题 1,您应该考虑在您的应用程序中应用 OO 设计技术。

例如,return 可以实现为这样的类

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

通过这种方式,您可以将日期与返回值相关联。

于 2013-05-12T06:03:31.493 回答