[QUANTAXIS量化分析]滚动复利策略

基本原理滚动复利,顾名思义,用利润滚动利润,简称:驴打滚.这种方法适用于大资金在起步建仓期,又或者在打净值安全垫期。利用极少一部分仓位将安全垫做出,这种方法比较适用于震荡市. 主要体现在灵活的仓位控制上,方法运用的过程中类似抗日战争时期八路军的"打游击”,在已既定选好股票池的基础上,以不恋战为原则,快进快出.策略实现初始资金100万,时间段为:2016-01-01~2018-05-01...
摘要由CSDN通过智能技术生成
基本原理
  • 滚动复利,顾名思义,用利润滚动利润,简称:驴打滚.这种方法适用于大资金在起步建仓期,又或者在打净值安全垫期。利用极少一部分仓位将安全垫做出,这种方法比较适用于震荡市. 主要体现在灵活的仓位控制上,方法运用的过程中类似抗日战争时期八路军的"打游击”,在已既定选好股票池的基础上,以不恋战为原则,快进快出.
策略实现
  • 初始资金100万,时间段为:2016-01-01~2018-05-01

  • 选择市盈率在0~20的市值最大的前n只股票

  • 平均分给每只股票现金相同,五步建仓,相当于若选50只股票的话,一只股票初始资金5万,分五次一万出来;

  • 个股5%止损和15%止盈

  • 购买条件:连续五日下跌的以及价格高于5日或10日均线20%的股票不操作

  • 每日对现金进行重新分配,对于每支股票,最多只能买入五次,不过每次买入的金额可能会不同,(之前是用每次买入的金额一致,见图二),下文代码使用的是对同一支每次买入金额可能不同的情况,即图一。每次买入金额相同即意味着第一次买入某支股票时,便把金额存储起来,每日剩余现金流减去这部分金额,再均分下去

  • 运行截图:

  • 图1:
    在这里插入图片描述

  • 图2:
    在这里插入图片描述

代码实现
# coding: utf-8
# @author: lin
# @date: 2018/11/14

import QUANTAXIS as QA
import pandas as pd
import time
import matplotlib.pyplot as plt

pd.set_option('max_colwidth', 5000)
pd.set_option('display.max_columns', 5000)
pd.set_option('display.max_rows', 5000)


class RollingProfitStrategy:
    def __init__(self, start_time, stop_time, n=20, ascending=False, stock_init_cash=1000000):
        self.Account = QA.QA_Account()  # 初始化账户
        self.Account.reset_assets(stock_init_cash)  # 初始化账户
        self.Broker = QA.QA_BacktestBroker()
        self.time_quantum_list = ['-12-31', '-09-30', '-06-30', '-03-31']
        self.start_time = start_time
        self.stop_time = stop_time
        self.stock_pool = []
        self.cash_n = 5
        self.bought_price = {}  # 入场的价格
        self.last_price = {}  # 上一天的价格
        self.init_cash = {}  # 入场的现金分配
        self.bought_stock = {}  # 每种股票是否已入场, boolean
        self.init_strategy(n, ascending)

    def init_strategy(self, n, ascending):
        self.get_stock_pool_price(n, ascending)  # 获取股票和初始价格
        for stock_code in self.stock_pool:
            self.init_cash[stock_code] = [1 for i in range(self.cash_n)]  # 五等分
            self.bought_stock[stock_code] = False

    def get_financial_time(self):
        """
        得到此日期前一个财务数据的日期
        :return:
        "
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值