首页 文章

python中的投资组合跟踪器

提问于
浏览
0

我正在使用pandas远程数据功能制作投资组合跟踪器,但是,我遇到了传递多个股票名称和代码的问题 .

我想用公司名称创建单独的数据框,我正在尝试使用 **kwargs ,但它对它的工作原理有点模糊 .

我觉得我很亲密但却遗漏了某些东西 .

def portfolio(startDateYE, startDateMonth, startDateDay, end_dateYE,
              end_dateMonth, end_dateDay,  **kwargs):
    '''insert desired started and ending date as 2014,1,1 and key value pairs
    of the stock you would like to look up, i.e. ford = "f" '''
    start = datetime.datetime(startDateYE, startDateMonth, startDateDay)
    end = datetime.datetime(end_dateYE, end_dateMonth, end_dateDay)
    for key, value in kwargs.items():
        key = web.DataReader("%s" % value,'yahoo', start, end)

我将如何传递可变数量的变量的示例:

portfolio(2010,1,1,2011,1,1,ford="f",google="googl")

我的目标是:

In [6]: ford.ix['2010-01-04']
Out[6]: 
Open         1.017000e+01
High         1.028000e+01
Low          1.005000e+01
Close        1.028000e+01
Volume       6.085580e+07
Adj Close    8.755953e+00
Name: 2010-01-04 00:00:00, dtype: float64

编辑:

def portfolio(startDateYE, startDateMonth, startDateDay, end_dateYE,
              end_dateMonth, end_dateDay,  **kwargs):
    '''insert desired started and ending date as 2014,1,1 and key value pairs
    of the stock you would like to look up, i.e. ford = "f" '''
    start = datetime.datetime(startDateYE, startDateMonth, startDateDay)
    end = datetime.datetime(end_dateYE, end_dateMonth, end_dateDay)
    results = {}  # this is an empty dictionary
    for key, value in kwargs.iteritems():
        results[key] = web.DataReader(value, key, 'yahoo', start, end)

    print(results)

编辑:

现在我收到以下错误:

`---------------------------------------------------------------------------

ValueError Traceback(最近一次调用最后一次)在()34'''35 ---> 36投资组合(2012,1,1,2013,1,1,facebook =“f”,google =“googl”)37 38# Adjusted_f = f ['Adj Close']

在投资组合中(startDateYE,startDateMonth,startDateDay,end_dateYE,end_dateMonth,end_dateDay,** kwargs)27 results = {}#这是一个空字典28,用于键,值在kwargs.iteritems()中:---> 29结果[key ] = web.DataReader(值,键,'雅虎',开始,结束)30 31'''

DataReader中的/Users/andrewclark/anaconda2/lib/python2.7/site-packages/pandas/io/data.pyc(name,data_source,start,end,retry_count,pause)86 ff = DataReader(“F-F_ST_Reversal_Factor”, “famafrench”)87“”“---> 88 start,end = _sanitize_dates(start,end)89 90 if data_source ==”yahoo“:

_ssers/andrewclark/anaconda2/lib/python2.7/site-packages/pandas/io/data.pyc in _sanitize_dates(start,end)104 def _sanitize_dates(start,end):105 from pandas.core.datetools import to_datetime - - > 106 start = to_datetime(start)107 end = to_datetime(end)108如果start为None:

/Users/andrewclark/anaconda2/lib/python2.7/site-packages/pandas/util/decorators.pyc in wrapper(* args,** kwargs)89 else:90 kwargs [new_arg_name] = new_arg_value ---> 91 return func(* args,** kwargs)92返回包装器93返回_deprecate_kwarg

/Users/andrewclark/anaconda2/lib/python2.7/site-packages/pandas/tseries/tools.pyc in_datetime(arg,errors,dayfirst,yearfirst,utc,box,format,exact,coerce,unit,infer_datetime_format)285 yearfirst = yearfirst,286 utc = utc,box = box,format = format,exact = exact, - > 287 unit = unit,infer_datetime_format = infer_datetime_format)288 289

/Users/andrewclark/anaconda2/lib/python2.7/site-packages/pandas/tseries/tools.pyc in_to_datetime(arg,errors,dayfirst,yearfirst,utc,box,format,exact,unit,freq,infer_datetime_format)414 return _convert_listlike(arg,box,format)415 - > 416 return _convert_listlike(np.array([arg]),box,format)[0] 417 418

_convert_list中的/Users/andrewclark/anaconda2/lib/python2.7/site-packages/pandas/tseries/tools.pyc(arg,box,format,name)400返回DatetimeIndex._simple_new(values,name = name,tz = tz )401除了(ValueError,TypeError): - > 402如果arg为None则引发e 403 404:

ValueError:未知的字符串格式

谢谢!

1 回答

  • 0

    问题是您不断覆盖键值,因此您实际上只保存最后一个数据集 .

    您应该分别跟踪键及其结果,如下所示:

    results = {}  # this is an empty dictionary
    for key, value in kwargs.iteritems():
        results[key] = web.DataReader(value, key, start, end)
    
    print(results)
    

相关问题