前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >生活小技能:科学地股票选股策略

生活小技能:科学地股票选股策略

作者头像
机械视角
发布2019-10-23 11:14:00
9710
发布2019-10-23 11:14:00
举报
文章被收录于专栏:TensorbytesTensorbytes

多种选股策略介绍

1.1 彼得林奇PEG价值选股策略

策略思路:

1.选择PEG < 0.5, 即稳定成长且价值被低估的股票 其中PEG = PE / growth_rate 2.使用ES风险平价配权 3.根据组合的日内波动小于3%的条件, 与货币基金组合配资 4.最大持仓5只股票和1只货币基金, 优先买入市值小的, 15天调仓一次 5.剔除了周期性和项目类行业(该部分对改善回撤有明显的效果)

1.2 詹姆斯.奥肖内西价值投资法

策略选股

A. 股票的市值大于市场的中位数 B. 股票的股本大于市场的中位数 C. 股票的市现率大于0,从小到大排列,取前400只股票 D. 股票的市销率大于0,从小到大排列,取前400只股票 E. 股票的股息率从大到小排列,取前400只股票 F. 取上述5个条件满足下的前30只股票

交易方式: 按月调仓

止损方式 A. 当个股价格低于成本价的7%时,卖出该股票 B. 当5日内大盘下跌13%时,卖出所有股票

1.3 阿梅特·欧卡莫斯集中投资法则

A 三年平均营业收入成长率大于市场平均值的60% B.三年平均税后利润成长率大于市场平均值的60% C 三年平均自由现金流量成长率大于市场平均值的60% D ROE 大于市场平均值的60% E 管理层持股比例增加或者高于市场平均值的60%(缺少数据) F 市净率小于4.0 倍 G 市盈率小于30 倍 H 满足上述条件下股票池中前30只股票

交易方式: 按月调仓

止损方式: A. 当个股价格低于成本价的7%时,卖出该股票 B. 当5日内大盘下跌13%时,卖出所有股票

1.4 本杰明格雷厄姆企业主投资法

策略选股:

A.股票的市盈率大于0,且选取市盈率最低的400只股票 B.股票的市净率大于0且小于2.5,且选取市净率最低的400只股票 C.企业的流动资产至少是流动负债的1.2 倍 D.企业的总借款不超过净流动资产的1.5 倍 E.企业净利润大于0 F.最近一期现金股利大于0 G.净利润增长率从大到小排序,选取前400只股票 H. 满足于上述7个条件下的前30只股票

交易方式: 按月调仓

止损方式: A. 当个股价格低于成本价的7%时,卖出该股票 B. 当5日内大盘下跌13%时,卖出所有股票

1.5 史蒂夫·路佛价值选股法则

策略选股:

A 市净率大于0且低于全市场平均值,股票按市净率从小到大排列 B.市盈率大于0且低于全市场平均值,股票按市盈率从小到大排列 C 流动资产至少是总市值的30% D 股价现金流量比大于0且低于全市场平均值,股票按股价现金流量从小到大排列 E 长期借款占总资本比率低于50% F 流动比率高于全市场平均值,股票按流动比率从大到小排列 G 满足上述条件下股票池中前30只股票

交易方式: 按月调仓

止损方式: A. 当个股价格低于成本价的7%时,卖出该股票 B. 当5日内大盘下跌13%时,卖出所有股票

1.6戴维•波伦价值型系统评价投资法

策略选股:

1) 总市值 > 市场平均值; 2) 产权比率(负债/股东权益) < 市场平均值; 3) 每股企业自由现金流量 > 市场平均值; 4) 股价/每股自由现金流量 < 市场平均值; 5)(ROE)均大于市场平均值 6) 净利润同比增长率均大于市场平均值; 7) 投入资本回报率 > 市场平均值; 8) 投入资本回报率 > 市场基准利率。(3.5%) 9) 选取符合以上条件的前30只股票

交易方式: 按月调仓

止损方式: A. 当个股价格低于成本价的7%时,卖出该股票 B. 当5日内大盘下跌13%时,卖出所有股票

1.7 三一投资管理公司价值选股策略

具体策略

一、每月作为调仓周期,选取符合以下条件的股票进入投资组合: 选取本益比最低的前400公司 股价账面价值比最低的前400公司 股利收益率最高的前400公司 为了控制每期选出的股票数,我们增加如下条件: 若选出股票超过30 个,选取前30个进入组合。

二、止损方式 当个股价格低于成本价的8%时,卖出该股票 当5日内大盘下跌13%时,卖出所有股票

1.8 查尔斯.布兰德价值投资策略

策略选股

A. 股票负债净值比小于80% B. 股票的市盈率不高于市场平均值1.5 倍 C. 股票的股价/近四季现金流量(市现率)不高于市场平均值的1.5 倍 D. 股票的市净率不高于市场平均值的1.5 倍 E. 股票的市净率小于2.0 倍 F. 满足于上述条件下的前30只股票

交易方式: 按月调仓

止损方式 A. 当个股价格低于成本价的7%时,卖出该股票 B. 当5日内大盘下跌13%时,卖出所有股票

1.9 迈克尔•普莱斯低估价值选股策略

策略选股:

A 股价与每股净值比小于2,且选取市净率最低的400只股票 B 董监事持股比例大于市场平均值(缺失该数据) C 负债比例低于市场平均值 D. 满足于上述条件下的前30只股票

交易方式: 按月调仓

止损方式: A. 当个股价格低于成本价的7%时,卖出该股票 B. 当5日内大盘下跌13%时,卖出所有股票

爬虫

爬虫数据:

(1)采集沪股通及深股通持股纪录,存入数据库中,每天更新 http://sc.hkexnews.hk/TuniS/www.hkexnews.hk/sdw/search/mutualmarket_c.aspx?t=sh

(2)同花顺里面的龙虎榜名单 http://data.10jqka.com.cn/market/longhu/#refCountId=data_55f13c7e_426

(3)同花顺里面的公司财报信息。 http://stockpage.10jqka.com.cn/000807/finance/#finance?qq-pf-to=pcqq.c2c

(4)采集公司的融资融券及其历史信息 http://stockpage.10jqka.com.cn/000807/#lhb?qq-pf-to=pcqq.c2c

代码语言:javascript
复制
#coding:utf-8
import scrapy, json,io
from scrapy.selector import Selector
from scrapy.http import Request, FormRequest
from StockRecord.items import StockrecordItem
import datetime, re, requests
import collections
from urllib.parse import urlencode, quote_plus
class Scrapy(scrapy.Spider):
    name = 'stockrecord'
    allow_domain = ['http://sc.hkexnews.hk/']
    start_urls =['http://sc.hkexnews.hk/TuniS/www.hkexnews.hk/sdw/search/mutualmarket_c.aspx?t=sh']

    def parse(self,response):
        with open('index.html','wb')as f:
            f.write(response.body)
        url = 'http://sc.hkexnews.hk/TuniS/www.hkexnews.hk/sdw/search/mutualmarket_c.aspx?t=sh'
        EVENTVALIDATION = response.xpath("//*[@id='__EVENTVALIDATION']/@value").extract()
        VIEWSTATE = response.xpath("//*[@id='__VIEWSTATE']/@value").extract()
        VIEWSTATEGENERATOR = response.xpath("//*[@id='__VIEWSTATEGENERATOR']/@value").extract()
        today = response.xpath("//*[@id='today']/@value").extract()
        sortBy = response.xpath("//*[@id='sortBy']/@value").extract()
        alertMsg = response.xpath("//*[@id='alertMsg']/@value").extract()
        formdata ={}
        for i in range(1):
            # formdata['__VIEWSTATE'] =re.findall(r'<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="(.*?)" />',sourepage.text)[0]
            # formdata['__EVENTVALIDATION'] = re.findall(r'<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="(.*?)" />',sourepage.text)[0]
            # formdata['__VIEWSTATEGENERATOR'] = 'EC4ACD6F'
            formdata['__VIEWSTATE'] =VIEWSTATE[0]
            formdata['__EVENTVALIDATION'] = EVENTVALIDATION[0]
            formdata['__VIEWSTATEGENERATOR'] = VIEWSTATEGENERATOR[0]
            formdata['today'] = today[0]
            formdata['sortBy']= ''
            formdata['alertMsg']= ''
            start_time = datetime.date(2017, 3, 17) + datetime.timedelta(i)
            formdata['ddlShareholdingDay'] = str(start_time.day)
            formdata['ddlShareholdingMonth'] = str(start_time.month)
            formdata['ddlShareholdingYear'] = str(start_time.year)
            formdata['btnSearch.x'] = '32'
            formdata['btnSearch.y'] = '11'
            # print (formdata)
            data = urlencode(formdata,quote_via=quote_plus)
            print (data)
        # formdata = {'ddlShareholdingDay':'17','ddlShareholdingMonth':'03','ddlShareholdingYear':'2017'}
            return  Request(url,self.parse_result, method="POST",headers={'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36'},body=json.dumps(data))
        #     yield FormRequest.from_response(response,method='POST',formdata=formdata, callback=self.parse_result)
        # print ('result',result)
        # return result

    def parse_result(self, response):
        items = []
        # print('页面',response.text)
        with open('test.html','wb')as f:
            f.write(response.body)
        sel = Selector(response=response).css('#pnlResult > table')
        table_date = Selector(response=response).css('#pnlResult > div:nth-child(1)::text').extract()[0].strip().split(':')[-1]
        table = sel.css('td::text').extract()
        all_data = list(map(lambda x: x.strip(), table))
        every_line_data = [all_data[i:i + 4] for i in range(0, len(all_data), 4)]
        items=[]
        for every_line in every_line_data:
            item = StockrecordItem()
            item['date']= table_date
            item['code'] = every_line[0]
            item['name'] = every_line[1]
            item['shareholding'] = every_line[2]
            item['percentage'] = every_line[3]
            items.append(item)
        # print('结果:{}'.format(items))
        print (items)
        # return items

abupy策略代码

代码语言:javascript
复制

# coding: utf-8

# In[1]:


import abupy
from abupy import EMarketDataFetchMode
from abupy import AbuMetricsBase
from abupy import EDataCacheType
from abupy import EMarketTargetType
from abupy import AbuDoubleMaBuy, AbuDoubleMaSell
from abupy import AbuPositionBase
from abupy import abu


# In[2]:


# **AbuFactorBuyBreak**(N日趋势突破策略)趋势突破定义为当天收盘价格超过N天内的最高价或最低价,超过最高价格作为买入信号买入股票持有,超过最低价格作为卖出信号。
# 
# **AbuFactorAtrNStop**(止盈止损策略)真实波幅atr作为最大止盈和最大止损的常数值,当stop_loss_n 乘以 当日atr > 买入价格 - 当日收盘价格:止损卖出;当stop_win_n 乘以 当日atr < 当日收盘价格 -买入价格:止盈卖出
# 
# **AbuFactorPreAtrNStop**(风险控制止损策略)使用真实波幅atr作为常数值: 当今日价格下跌幅度 > 当日atr 乘以 pre_atr_n(下跌止损倍数)卖出股票
# 
# **AbuFactorCloseAtrNStop**(利润保护止盈策略) atr移动止盈策略,当买入股票有一定收益后,如果股价下跌幅度超过close_atr_n乘以当日atr:则保护止盈卖出

# In[2]:


from abupy import AbuFactorBuyBreak, AbuFactorAtrNStop, AbuFactorPreAtrNStop, AbuFactorCloseAtrNStop


# In[3]:


# 初始化资金20万
read_cash = 200000

# 买入因子使用60日向上和42日突破因子
buy_factors = [{'xd': 60, 'class': AbuFactorBuyBreak},
               {'xd': 42, 'class': AbuFactorBuyBreak}]

# 趋势跟踪策略止盈要大于止损设置值,这里1.0,3.0
# 卖出因子并行生效
sell_factors = [
    {'stop_loss_n': 1.0, 'stop_win_n': 3.0,
     'class': AbuFactorAtrNStop},
    {'class': AbuFactorPreAtrNStop, 'pre_atr_n': 1.5},
    {'class': AbuFactorCloseAtrNStop, 'close_atr_n': 1.5}
]


# In[4]:


# 回测生成买入时刻特征
abupy.env.g_enable_ml_feature = True
# 回测开始时将symbols切割分为训练集数据和测试集两份,使用训练集进行回测
#abupy.env.g_enable_train_test_split = True


# In[5]:


# 很多交易细节还是使用的默认设置中的美股交易模式,因此需要将环境设置为A股
abupy.env.g_market_target = EMarketTargetType.E_MARKET_TARGET_CN


# In[6]:


# 择时股票池
choice_symbols = ['002230', '000725', '300059', '601766', '600085', '600036', '600809', '000002', '002594', '002739',
                 '601388', '601919', '600307', '000725', '601880', '000100','601168']


# **针对A股涨停和跌停的特殊设置打开**

# In[7]:


from abupy import slippage
# 开启针对非集合竞价阶段的涨停,滑点买入价格以高概率在接近涨停的价格买入
slippage.sbb.g_enable_limit_up = True
# 将集合竞价阶段的涨停买入成功概率设置为0,如果设置为0.2即20%概率成功买入
slippage.sbb.g_pre_limit_up_rate = 0
# 开启针对非集合竞价阶段的跌停,滑点卖出价格以高概率在接近跌停的价格卖出
slippage.ssb.g_enable_limit_down = True
# 将集合竞价阶段的跌停卖出成功概率设置为0, 如果设置为0.2即20%概率成功卖出
slippage.ssb.g_pre_limit_down_rate = 0


# **自定义手续费**

# In[8]:


def buy_commission_ch(trade_cnt, price):
    """
    计算交易费用:每股0.001块,,最低消费1块;交易佣金:最高收费为3‰,最低收费5元;印花税:1‰
    :param trade_cnt: 交易的股数
    :param price: 每股的价格
    :return: 计算结果手续费
    """
    # 每股手续费0.01
    transfer_fees = trade_cnt * 0.001
    commission = price*trade_cnt*0.0003
    if transfer_fees < 1:
        transfer_fees = 1
    if commission < 5:
        # 最低消费2.99
        commission = 5
    return transfer_fees+commission

def sell_commission_ch(trade_cnt, price):
    """
    计算交易费用:每股0.001块,,最低消费1块;交易佣金:最高收费为3‰,最低收费5元;印花税:1‰
    :param trade_cnt: 交易的股数
    :param price: 每股的价格
    :return: 计算结果手续费
    """
    # 每股手续费0.01
    transfer_fees = trade_cnt * 0.001
    commission = price*trade_cnt*0.0003
    stamp_duty = price*trade_cnt*0.001#算一半,因为只有卖出才收
    if transfer_fees < 1:
        transfer_fees = 1
    if commission < 5:
        commission = 5
    return transfer_fees+commission+stamp_duty


# In[9]:


# 卖出字典key='sell_commission_func', 指向同一个手续费方法,当然也可以定义不同的方法
commission_dict = {'buy_commission_func': buy_commission_ch, 'sell_commission_func': sell_commission_ch}


# In[13]:


# 使用run_loop_back运行策略
abu_result_tuple, kl_pd_manger = abu.run_loop_back(read_cash,
                                                   buy_factors,
                                                   sell_factors,
                                                   n_folds=8,
                                                   commission_dict=commission_dict,
                                                   choice_symbols=choice_symbols)


# In[14]:


AbuMetricsBase.show_general(*abu_result_tuple, only_show_returns=True)


# **仓位管理**
# 
# 应用kelly公式来做仓位控制

# In[15]:


metrics = AbuMetricsBase(*abu_result_tuple)


# In[16]:


metrics.fit_metrics()


# In[17]:


metrics.win_rate


# In[10]:


class AbuKellyPosition(AbuPositionBase):
    """示例kelly仓位管理类"""

    def fit_position(self, factor_object):
        """
        fit_position计算的结果是买入多少个单位(股,手,顿,合约)
        需要factor_object策略因子对象通过历史回测统计胜率,期望收益,期望亏损,
        并设置构造当前factor_object对象,通过kelly公司计算仓位
        :param factor_object: ABuFactorBuyBases子类实例对象
        :return:买入多少个单位(股,手,顿,合约)
        """
        # 败率
        loss_rate = 1 - self.win_rate
        # kelly计算出仓位比例
        kelly_pos = self.win_rate - loss_rate / (self.gains_mean / self.losses_mean)
        # 最大仓位限制,依然受上层最大仓位控制限制,eg:如果kelly计算出全仓,依然会减少到75%,如修改需要修改最大仓位值
        kelly_pos = self.pos_max if kelly_pos > self.pos_max else kelly_pos
        # 结果是买入多少个单位(股,手,顿,合约)
        return self.read_cash * kelly_pos / self.bp * self.deposit_rate

    def _init_self(self, **kwargs):
        """kelly仓位控制管理类初始化设置"""

        # 默认kelly仓位胜率0.445
        self.win_rate = kwargs.pop('win_rate', 0.445)
        # 默认平均获利期望0.1338
        self.gains_mean = kwargs.pop('gains_mean', 0.1338)
        # 默认平均亏损期望0.06959
        self.losses_mean = kwargs.pop('losses_mean', 0.06959)


# In[20]:


# 买入因子使用60日向上和42日突破因子
buy_factors_sec = [{'xd': 60, 'class': AbuFactorBuyBreak},
               {'xd': 42, 'class': AbuFactorBuyBreak,
                'position': {'class': AbuKellyPosition, 'win_rate': metrics.win_rate, 
                              'gains_mean': metrics.gains_mean, 'losses_mean': -metrics.losses_mean},}]


# In[21]:


# 使用run_loop_back运行策略
abu_result_tuple, kl_pd_manger = abu.run_loop_back(read_cash,
                                                   buy_factors_sec,
                                                   sell_factors,
                                                   n_folds=8,
                                                   commission_dict=commission_dict,
                                                   choice_symbols=choice_symbols)


# In[22]:


AbuMetricsBase.show_general(*abu_result_tuple, only_show_returns=True)


# In[23]:


metrics = AbuMetricsBase(*abu_result_tuple)
metrics.plot_max_draw_down()


# ## 当天行为动作

# In[24]:


action_result_pd = abu_result_tuple.action_pd
action_result_pd[action_result_pd['Date']==20180124]


# In[25]:


result_orders_pd = abu_result_tuple.orders_pd
result_orders_pd[result_orders_pd['buy_date']==20180124]


# **买入动作重写**
# 
# 构建一个保守买入算法,以开盘价和最高价的平均值作为买入,而不是两者均值

# In[26]:


from abupy import AbuSlippageBuyBase, slippage
import numpy as np
class AbuSlippageBuyMean2(AbuSlippageBuyBase):
    """示例日内滑点均价买入类"""

    @slippage.sbb.slippage_limit_up
    def fit_price(self):
        """
        取当天交易日的最高最低均价做为决策价格
        :return: 最终决策的当前交易买入价格
        """
        g_open_down_rate = 0.02
        # TODO 基类提取作为装饰器函数,子类根据需要选择是否装饰,并且添加上根据order的call,put明确细节逻辑
        if self.kl_pd_buy.pre_close == 0 or (self.kl_pd_buy.open / self.kl_pd_buy.pre_close) < (1 - g_open_down_rate):
            # 开盘就下跌一定比例阀值,放弃单子
            return np.inf
        # 买入价格为当天均价,即最高,最低的平均,也可使用高开低收平均等方式计算
        self.buy_price = np.mean([self.kl_pd_buy['open'], self.kl_pd_buy['high']])
        # 返回最终的决策价格
        return self.buy_price


# In[27]:


# 买入因子使用60日向上和42日突破因子
buy_factors_sec = [{'xd': 60, 'class': AbuFactorBuyBreak,'slippage': AbuSlippageBuyMean2},
               {'xd': 42, 'class': AbuFactorBuyBreak, 'slippage': AbuSlippageBuyMean2,
                'position': {'class': AbuKellyPosition, 'win_rate': metrics.win_rate, 
                              'gains_mean': metrics.gains_mean, 'losses_mean': -metrics.losses_mean},}]


# In[43]:


# 使用run_loop_back运行策略
abu_result_tuple, kl_pd_manger = abu.run_loop_back(read_cash,
                                                   buy_factors_sec,
                                                   sell_factors,
                                                   n_folds=8,
                                                   commission_dict=commission_dict,
                                                   choice_symbols=choice_symbols)


# In[44]:


AbuMetricsBase.show_general(*abu_result_tuple, only_show_returns=True)


# In[41]:


action_result_pd = abu_result_tuple.action_pd
action_result_pd[action_result_pd['Date']==20180124]


# **双均线策略**

# In[45]:


# 买入双均线策略AbuDoubleMaBuy寻找金叉买入信号:ma快线=5,ma慢线=20
buy_factors = [{'fast': 5, 'slow': 20, 'class': AbuDoubleMaBuy}]
# 卖出双均线策略AbuDoubleMaSell寻找死叉卖出信号:ma快线=5,ma慢线=20,并行继续使用止盈止损基础策略
sell_factors = [{'fast': 5, 'slow': 20, 'class': AbuDoubleMaSell},
                    {'stop_loss_n': 1.0, 'stop_win_n': 3.0,
     'class': AbuFactorAtrNStop},
    {'class': AbuFactorPreAtrNStop, 'pre_atr_n': 1.5},
    {'class': AbuFactorCloseAtrNStop, 'close_atr_n': 1.5}]


# In[46]:


abu_result_tuple, kl_pd_manger = abu.run_loop_back(read_cash,
                                                   buy_factors,
                                                   sell_factors,
                                                   n_folds=8,
                                                   commission_dict=commission_dict,
                                                   choice_symbols=choice_symbols)


# In[47]:


AbuMetricsBase.show_general(*abu_result_tuple, only_show_returns=True)


# In[23]:


action_result_pd = abu_result_tuple.action_pd
action_result_pd[action_result_pd['Date']==20180124]


# In[49]:


metrics = AbuMetricsBase(*abu_result_tuple)
metrics.plot_max_draw_down()


# In[12]:


buy_factors = [{'fast': 5, 'slow': 20, 'class': AbuDoubleMaBuy},{'xd': 60, 'class': AbuFactorBuyBreak},
               {'xd': 42, 'class': AbuFactorBuyBreak,
                'position': {'class': AbuKellyPosition},}]

sell_factors = [{'stop_loss_n': 1.0, 'stop_win_n': 3.0,'class': AbuFactorAtrNStop},
    {'class': AbuFactorPreAtrNStop, 'pre_atr_n': 1.5},
    {'class': AbuFactorCloseAtrNStop, 'close_atr_n': 1.5}]


# In[13]:


abu_result_tuple, kl_pd_manger = abu.run_loop_back(read_cash,
                                                   buy_factors,
                                                   sell_factors,
                                                   n_folds=8,
                                                   commission_dict=commission_dict,
                                                   choice_symbols=choice_symbols)


# In[14]:


AbuMetricsBase.show_general(*abu_result_tuple, only_show_returns=True)


# In[15]:


metrics = AbuMetricsBase(*abu_result_tuple)
metrics.plot_max_draw_down()


# In[16]:


buy_factors = [{'fast': 5, 'slow': 20, 'class': AbuDoubleMaBuy},{'xd': 60, 'class': AbuFactorBuyBreak},
               {'xd': 42, 'class': AbuFactorBuyBreak,
                'position': {'class': AbuKellyPosition},}]

sell_factors = [{'class': AbuDoubleMaSell},
                    {'stop_loss_n': 1.0, 'stop_win_n': 3.0,'class': AbuFactorAtrNStop},
    {'class': AbuFactorPreAtrNStop, 'pre_atr_n': 1.5},
    {'class': AbuFactorCloseAtrNStop, 'close_atr_n': 1.5}]


# In[17]:


abu_result_tuple, kl_pd_manger = abu.run_loop_back(read_cash,
                                                   buy_factors,
                                                   sell_factors,
                                                   n_folds=8,
                                                   commission_dict=commission_dict,
                                                   choice_symbols=choice_symbols)


# In[18]:


AbuMetricsBase.show_general(*abu_result_tuple, only_show_returns=True)


# In[19]:


metrics = AbuMetricsBase(*abu_result_tuple)
metrics.plot_max_draw_down()


# In[20]:


action_result_pd = abu_result_tuple.action_pd
action_result_pd[action_result_pd['Date']==20180124]


# In[28]:


result_orders_pd = abu_result_tuple.orders_pd


# In[44]:


result_orders_pd[result_orders_pd['symbol']=='600797']


# In[43]:


result_orders_pd['symbol'].unique()


# In[11]:


from abupy import AbuBenchmark, AbuCapital, AbuKLManager


# In[ ]:


benchmark = AbuBenchmark()
capital = AbuCapital(1000000, benchmark)
kl_pd_manger = AbuKLManager(benchmark, capital)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-02-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 多种选股策略介绍
  • 1.1 彼得林奇PEG价值选股策略
  • 1.2 詹姆斯.奥肖内西价值投资法
  • 1.3 阿梅特·欧卡莫斯集中投资法则
  • 1.4 本杰明格雷厄姆企业主投资法
  • 1.5 史蒂夫·路佛价值选股法则
  • 1.6戴维•波伦价值型系统评价投资法
  • 1.7 三一投资管理公司价值选股策略
  • 1.8 查尔斯.布兰德价值投资策略
  • 1.9 迈克尔•普莱斯低估价值选股策略
  • 爬虫
  • abupy策略代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档