在 Python 的上下文中初始化对象
Initializing an object in a context in Python
这看起来像是一个微不足道的问题,但如果能提供一些帮助,我将不胜感激。也许它也会帮助其他人理解初始化。
我正在实施一些东西,在某些情况下,将获取给定时间段的市场数据,计算 returns,然后,稍后,当这段代码起作用时,将计算最佳投资组合中的权重。
目前,我在这个阶段遇到了问题:
import pandas.io.data as web
import datetime
class Black_Litterman:
def initialize(context):
context.start = datetime.datetime(2015, 1, 1)
context.end = datetime.datetime(2015, 1, 28)
# Select five large cap equities for the portfolio
# Apple, Google, GE, Microsoft, Amazon
# later, these should be read in from a csv file stored elsewhere
context.securities = ['AAPL', 'GOOGL', 'GE', 'MSFT', 'AMZN']
context.market_cap = [479.51, 377.58, 272.76, 300.86, 180.96]
context.cap_wts = np.array(context.market_cap)/sum(np.array(context.market_cap))
# Set Max and Min positions in security
context.max_notional = 1000000.1
context.min_notional = -1000000.0
def get_data(context, data):
all_prices = []
cont_start_str = (context.start).strftime("%Y-%m-%d")
cont_end_str = (context.end).strftime("%Y-%m-%d")
for i in context.securities:
f = web.DataReader(i, 'google', context.start, context.end)
all_prices.append(f.ix[cont_start_str : cont_end_str, 'Open'])
# Drop missing values and transpose matrix
daily_returns = all_prices.pct_change().dropna().values.T
当我尝试时
cont = Black_Litterman()
Black_Litterman.get_data(cont, 0)
我明白了
AttributeError: Black_Litterman instance has no attribute 'start'
这意味着即使 cont 是这个 class 的一个实例,它也没有用初始参数初始化。
有没有办法初始化它(不同于传统的 (init( self, start, end, ...)) )?
非常感谢!
我真的不明白,你想做什么,但是我 python 使用默认参数初始化 class 的实例,你应该这样做:
class Black_Litterman:
def __init__(self):
self.start = datetime.datetime(2015, 1, 1)
self.end = datetime.datetime(2015, 1, 28)
....
def get_data(self, data):
all_prices = []
cont_start_str = self.start.strftime("%Y-%m-%d")
cont_end_str = self.end.strftime("%Y-%m-%d")
...
# Use it like this
bl_instance = Black_Litterman()
bl_instance.get_data(data)
抱歉造成混淆!我现在明白了。我需要做的就是打电话
cont = Black_Litterman()
cont.initialize()
只有那时
Black_Litterman.get_data(cont, 0)
谢谢!
这看起来像是一个微不足道的问题,但如果能提供一些帮助,我将不胜感激。也许它也会帮助其他人理解初始化。
我正在实施一些东西,在某些情况下,将获取给定时间段的市场数据,计算 returns,然后,稍后,当这段代码起作用时,将计算最佳投资组合中的权重。
目前,我在这个阶段遇到了问题:
import pandas.io.data as web
import datetime
class Black_Litterman:
def initialize(context):
context.start = datetime.datetime(2015, 1, 1)
context.end = datetime.datetime(2015, 1, 28)
# Select five large cap equities for the portfolio
# Apple, Google, GE, Microsoft, Amazon
# later, these should be read in from a csv file stored elsewhere
context.securities = ['AAPL', 'GOOGL', 'GE', 'MSFT', 'AMZN']
context.market_cap = [479.51, 377.58, 272.76, 300.86, 180.96]
context.cap_wts = np.array(context.market_cap)/sum(np.array(context.market_cap))
# Set Max and Min positions in security
context.max_notional = 1000000.1
context.min_notional = -1000000.0
def get_data(context, data):
all_prices = []
cont_start_str = (context.start).strftime("%Y-%m-%d")
cont_end_str = (context.end).strftime("%Y-%m-%d")
for i in context.securities:
f = web.DataReader(i, 'google', context.start, context.end)
all_prices.append(f.ix[cont_start_str : cont_end_str, 'Open'])
# Drop missing values and transpose matrix
daily_returns = all_prices.pct_change().dropna().values.T
当我尝试时
cont = Black_Litterman()
Black_Litterman.get_data(cont, 0)
我明白了
AttributeError: Black_Litterman instance has no attribute 'start'
这意味着即使 cont 是这个 class 的一个实例,它也没有用初始参数初始化。 有没有办法初始化它(不同于传统的 (init( self, start, end, ...)) )?
非常感谢!
我真的不明白,你想做什么,但是我 python 使用默认参数初始化 class 的实例,你应该这样做:
class Black_Litterman:
def __init__(self):
self.start = datetime.datetime(2015, 1, 1)
self.end = datetime.datetime(2015, 1, 28)
....
def get_data(self, data):
all_prices = []
cont_start_str = self.start.strftime("%Y-%m-%d")
cont_end_str = self.end.strftime("%Y-%m-%d")
...
# Use it like this
bl_instance = Black_Litterman()
bl_instance.get_data(data)
抱歉造成混淆!我现在明白了。我需要做的就是打电话
cont = Black_Litterman()
cont.initialize()
只有那时
Black_Litterman.get_data(cont, 0)
谢谢!