我正在尝试用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股票,到最后,我会留下一系列退货但没有日期。如何将Return数组与日期
相关联2)如果我输入多个股票,我会得到一个超出范围的索引错误。可能导致问题的原因是什么?
任何有关概念化解决方案的帮助也将受到高度赞赏。
谢谢
答案 0 :(得分:0)
如果没有看到程序的完整列表,则无法回答问题2.如果仔细查看“索引超出范围”异常的堆栈跟踪,它应该告诉您异常所在的行号被解雇。从那里开始。
关于问题1,您应该考虑在您的应用程序中应用OO设计技术。
例如,return可以像这样实现
class Return(object):
def __init__(self, date, r):
self.date = date
self.r = r
通过这种方式,您可以将日期与返回值相关联。