Skip to content

Latest commit

 

History

History
636 lines (569 loc) · 28.7 KB

210905-股票-交易计划.md

File metadata and controls

636 lines (569 loc) · 28.7 KB

股票交易计划

前言

在股票交易中,如何让自己的投资策略不随市场的情绪而波动 唯一的办法,就是

  1. 建立自己的投资计划
  2. 并坚持投资纪律
  3. 耐心等待

今天我们就如何构建投资计划,开始一段用python程序来代替人来做决策, 从而控制自己的手

投资计划函数

import pandas as pd

# 自定义函数,针对单个标的的投资计划

def plan(name,price_init,rate_init,shares_init,data):
    df = pd.DataFrame(data=data)
    df['加仓批次'] = list(range(1,len(df)+1))
    df['名称'] = name
    df['价格'] = df['价格系数'] * price_init
    df['shares'] = ''
    df['money'] = ''    
    print(df)
    df.loc[df['加仓批次']==1, 'shares'] = shares_init
    print(df)
    df.loc[df['加仓批次']==1, 'money'] = df.loc[df['加仓批次']==1, '价格'] * df.loc[df['加仓批次']==1, 'shares']
    money_init = df.loc[df['加仓批次']==1, 'money'].values[0]  
    for i in range(len(df)-1):
        n = i+2   
        df.loc[df['加仓批次']==n, 'shares'] = round(money_init*df.loc[df['加仓批次']==n, '加仓比例']/\
                                                (rate_init * df.loc[df['加仓批次']==n, '价格']*100),0)*100
        df.loc[df['加仓批次']==n, 'money'] = df.loc[df['加仓批次']==n, '价格'] * df.loc[df['加仓批次']==n, 'shares']
    
    df['累计仓位'] = df['加仓比例'].cumsum()
    df['累计份额'] = df['shares'].cumsum()
    df['累计金额'] = df['money'].cumsum()
    df['成本'] = df['累计金额']/df['累计份额']
    df['下跌幅度'] = 1- df['价格系数']
    df['下跌幅度'] = df['下跌幅度'].apply(lambda x:f'下跌{int(round(x*100,0))}%')
    df.loc[df['加仓批次']==1, '下跌幅度'] = '首次'
    df = df[['名称','加仓批次', '下跌幅度', '价格系数','价格', '加仓比例', '累计仓位', 
             'shares', 'money','累计份额', '累计金额','成本']]
    return df

中概互联

# 标的名称
name = '中概互联-513050'

# 首次购入价格
price_init = 2.0

# 首次加仓比例
rate_init = 0.01

# 首次购入份额数量
shares_init = 2000

data = {
    '价格系数':[1,0.95,0.9,0.85,0.8,0.75,0.7,0.65],
    '加仓比例':[rate_init,0.02,0.03,0.04,0.05,0.05,0.05,0.05],
    }
df = plan(name,price_init,rate_init,shares_init,data)

format_dict = {'money': '¥{0:.0f}', 
               '累计金额': '¥{0:.0f}', 
               '价格': '{0:.3f}', 
               '成本': '{0:.3f}', 
               'shares': '{0:.0f}', 
               '累计份额': '{0:.0f}', 
               '价格系数': '{0:.0%}', 
               '加仓比例': '{0:.2%}', 
               '累计仓位': '{0:.2%}', 
                }
# print(name)
df.style.hide_index().format(format_dict)
<style type="text/css"> </style>
名称 加仓批次 下跌幅度 价格系数 价格 加仓比例 累计仓位 shares money 累计份额 累计金额 成本
中概互联-513050 1 首次 100% 2.000 1.00% 1.00% 2000 ¥4000 2000 ¥4000 2.000
中概互联-513050 2 下跌5% 95% 1.900 2.00% 3.00% 4200 ¥7980 6200 ¥11980 1.932
中概互联-513050 3 下跌10% 90% 1.800 3.00% 6.00% 6700 ¥12060 12900 ¥24040 1.864
中概互联-513050 4 下跌15% 85% 1.700 4.00% 10.00% 9400 ¥15980 22300 ¥40020 1.795
中概互联-513050 5 下跌20% 80% 1.600 5.00% 15.00% 12500 ¥20000 34800 ¥60020 1.725
中概互联-513050 6 下跌25% 75% 1.500 5.00% 20.00% 13300 ¥19950 48100 ¥79970 1.663
中概互联-513050 7 下跌30% 70% 1.400 5.00% 25.00% 14300 ¥20020 62400 ¥99990 1.602
中概互联-513050 8 下跌35% 65% 1.300 5.00% 30.00% 15400 ¥20020 77800 ¥120010 1.543

万科

# 标的名称
name = '万科'

# 首次购入价格
price_init = 22

# 首次加仓比例
rate_init = 0.01

# 首次购入份额数量
shares_init = 300

data = {
    '价格系数':[1,0.95,0.9,0.85,0.8,0.75,0.7,0.65],
    '加仓比例':[rate_init,0.02,0.03,0.04,0.05,0.05,0.05,0.05],
    }
df = plan(name,price_init,rate_init,shares_init,data)

format_dict = {'money': '¥{0:.0f}', 
               '累计金额': '¥{0:.0f}', 
               '价格': '{0:.3f}', 
               '成本': '{0:.3f}', 
               'shares': '{0:.0f}', 
               '累计份额': '{0:.0f}', 
               '价格系数': '{0:.0%}', 
               '加仓比例': '{0:.2%}', 
               '累计仓位': '{0:.2%}', 
                }
df.style.hide_index().format(format_dict)
   价格系数  加仓比例  加仓批次  名称    价格 shares money
0  1.00  0.01     1  万科  22.0             
1  0.95  0.02     2  万科  20.9             
2  0.90  0.03     3  万科  19.8             
3  0.85  0.04     4  万科  18.7             
4  0.80  0.05     5  万科  17.6             
5  0.75  0.05     6  万科  16.5             
6  0.70  0.05     7  万科  15.4             
7  0.65  0.05     8  万科  14.3             
   价格系数  加仓比例  加仓批次  名称    价格 shares money
0  1.00  0.01     1  万科  22.0    300      
1  0.95  0.02     2  万科  20.9             
2  0.90  0.03     3  万科  19.8             
3  0.85  0.04     4  万科  18.7             
4  0.80  0.05     5  万科  17.6             
5  0.75  0.05     6  万科  16.5             
6  0.70  0.05     7  万科  15.4             
7  0.65  0.05     8  万科  14.3             
<style type="text/css"> </style>
名称 加仓批次 下跌幅度 价格系数 价格 加仓比例 累计仓位 shares money 累计份额 累计金额 成本
万科 1 首次 100% 22.000 1.00% 1.00% 300 ¥6600 300 ¥6600 22.000
万科 2 下跌5% 95% 20.900 2.00% 3.00% 600 ¥12540 900 ¥19140 21.267
万科 3 下跌10% 90% 19.800 3.00% 6.00% 1000 ¥19800 1900 ¥38940 20.495
万科 4 下跌15% 85% 18.700 4.00% 10.00% 1400 ¥26180 3300 ¥65120 19.733
万科 5 下跌20% 80% 17.600 5.00% 15.00% 1900 ¥33440 5200 ¥98560 18.954
万科 6 下跌25% 75% 16.500 5.00% 20.00% 2000 ¥33000 7200 ¥131560 18.272
万科 7 下跌30% 70% 15.400 5.00% 25.00% 2100 ¥32340 9300 ¥163900 17.624
万科 8 下跌35% 65% 14.300 5.00% 30.00% 2300 ¥32890 11600 ¥196790 16.965
# 标的名称
name = '万科'

# 首次购入价格
price_init = 19

# 首次加仓比例
rate_init = 0.3

# 首次购入份额数量
shares_init = 300

data = {
    '价格系数': [1, 0.95, 0.9, 0.85, 0.8, 0.75, 0.7, 0.65],
    '加仓比例': [rate_init, 0.02, 0.03, 0.04, 0.05, 0.05, 0.05, 0.05],
}
df = plan(name, price_init, rate_init, shares_init, data)

format_dict = {'money': '¥{0:.0f}',
               '累计金额': '¥{0:.0f}',
               '价格': '{0:.3f}',
               '成本': '{0:.3f}',
               'shares': '{0:.0f}',
               '累计份额': '{0:.0f}',
               '价格系数': '{0:.0%}',
               '加仓比例': '{0:.2%}',
               '累计仓位': '{0:.2%}',
               }
df.style.hide_index().format(format_dict)
   价格系数  加仓比例  加仓批次  名称     价格 shares money
0  1.00  0.30     1  万科  19.00             
1  0.95  0.02     2  万科  18.05             
2  0.90  0.03     3  万科  17.10             
3  0.85  0.04     4  万科  16.15             
4  0.80  0.05     5  万科  15.20             
5  0.75  0.05     6  万科  14.25             
6  0.70  0.05     7  万科  13.30             
7  0.65  0.05     8  万科  12.35             
   价格系数  加仓比例  加仓批次  名称     价格 shares money
0  1.00  0.30     1  万科  19.00    300      
1  0.95  0.02     2  万科  18.05             
2  0.90  0.03     3  万科  17.10             
3  0.85  0.04     4  万科  16.15             
4  0.80  0.05     5  万科  15.20             
5  0.75  0.05     6  万科  14.25             
6  0.70  0.05     7  万科  13.30             
7  0.65  0.05     8  万科  12.35             
<style type="text/css"> </style>
名称 加仓批次 下跌幅度 价格系数 价格 加仓比例 累计仓位 shares money 累计份额 累计金额 成本
万科 1 首次 100% 19.000 30.00% 30.00% 300 ¥5700 300 ¥5700 19.000
万科 2 下跌5% 95% 18.050 2.00% 32.00% 0 ¥0 300 ¥5700 19.000
万科 3 下跌10% 90% 17.100 3.00% 35.00% 0 ¥0 300 ¥5700 19.000
万科 4 下跌15% 85% 16.150 4.00% 39.00% 0 ¥0 300 ¥5700 19.000
万科 5 下跌20% 80% 15.200 5.00% 44.00% 100 ¥1520 400 ¥7220 18.050
万科 6 下跌25% 75% 14.250 5.00% 49.00% 100 ¥1425 500 ¥8645 17.290
万科 7 下跌30% 70% 13.300 5.00% 54.00% 100 ¥1330 600 ¥9975 16.625
万科 8 下跌35% 65% 12.350 5.00% 59.00% 100 ¥1235 700 ¥11210 16.014
min_price = 14
max_price = 33
price = 19
money = 100000

bili = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]