动量策略(momentum driven)
最后更新于:2022-04-01 21:54:21
# 动量策略(momentum driven)
> 来源:https://uqer.io/community/share/555ed9eef9f06c6c7304f9a9
```py
import pandas as pd
start = '2011-11-01'
end = '2015-03-01'
benchmark = 'HS300'
universe = set_universe('HS300') # 股票池为沪深300
capital_base = 10000000
refresh_rate = 10
def initialize(account):
pass
def handle_data(account):
history = account.get_attribute_history('closePrice', 20)
momentum = {'symbol':[], 'c_ret':[]}
for stk in account.universe:
momentum['symbol'].append(stk)
momentum['c_ret'].append(history[stk][-1]/history[stk][0])
# 按照过去20日收益率排序,并且选择前20%的股票作为买入候选
momentum = pd.DataFrame(momentum).sort(columns='c_ret').reset_index()
momentum = momentum[len(momentum)*4/5:len(momentum)] # 选择
buylist = momentum['symbol'].tolist()
for stk in account.valid_secpos:
if stk not in buylist:
order_to(stk, 0)
# 等权重买入所选股票
portfolio_value = account.referencePortfolioValue
for stk in buylist:
if stk not in account.valid_secpos:
order_to(stk, int(portfolio_value / account.referencePrice[stk] / 100.0 / len(buylist))*100)
```
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-07-30_579cbb057e130.jpg)
```py
bt
```
| | tradeDate | cash | security_position | portfolio_value | benchmark_return | blotter |
| --- | --- |
| 0 | 2011-11-29 | 1.627636 | {u'600809.XSHG': 5700, u'600597.XSHG': 21100, ... | 10057034.029636 | 0.013697 | [Order(order time: datetime.datetime(2011, 11,... |
| 1 | 2011-11-30 | 1.627636 | {u'600809.XSHG': 5700, u'600597.XSHG': 21100, ... | 9744501.409636 | -0.033370 | [] |
| 2 | 2011-12-01 | 1.627636 | {u'600809.XSHG': 5700, u'600597.XSHG': 21100, ... | 9865655.500636 | 0.024625 | [] |
| 3 | 2011-12-02 | 1.627636 | {u'600809.XSHG': 5700, u'600597.XSHG': 21100, ... | 9708455.312636 | -0.010180 | [] |
| 4 | 2011-12-05 | 1.627636 | {u'600809.XSHG': 5700, u'600597.XSHG': 21100, ... | 9406180.945636 | -0.014048 | [] |
| 5 | 2011-12-06 | 1.627636 | {u'600809.XSHG': 5700, u'600597.XSHG': 21100, ... | 9415313.949636 | -0.002000 | [] |
| 6 | 2011-12-07 | 1.627636 | {u'600809.XSHG': 5700, u'600597.XSHG': 21100, ... | 9454383.554636 | 0.004724 | [] |
| 7 | 2011-12-08 | 1.627636 | {u'600809.XSHG': 5700, u'600597.XSHG': 21100, ... | 9492264.755636 | -0.001276 | [] |
| 8 | 2011-12-09 | 1.627636 | {u'600809.XSHG': 5700, u'600597.XSHG': 21100, ... | 9410892.851636 | -0.008531 | [] |
| 9 | 2011-12-12 | 1.627636 | {u'600809.XSHG': 5700, u'600597.XSHG': 21100, ... | 9280515.559636 | -0.010293 | [] |
| 10 | 2011-12-13 | 6.144010 | {u'000423.XSHE': 4200, u'600036.XSHG': 16300, ... | 9116051.541010 | -0.022506 | [Order(order time: datetime.datetime(2011, 12,... |
| 11 | 2011-12-14 | 6.144010 | {u'000423.XSHE': 4200, u'600036.XSHG': 16300, ... | 9042660.489010 | -0.010094 | [] |
| 12 | 2011-12-15 | 6.144010 | {u'000423.XSHE': 4200, u'600036.XSHG': 16300, ... | 8973191.009010 | -0.023646 | [] |
| 13 | 2011-12-16 | 6.144010 | {u'000423.XSHE': 4200, u'600036.XSHG': 16300, ... | 9203671.207010 | 0.021079 | [] |
| 14 | 2011-12-19 | 6.144010 | {u'000423.XSHE': 4200, u'600036.XSHG': 16300, ... | 9272914.609010 | -0.002394 | [] |
| 15 | 2011-12-20 | 6.144010 | {u'000423.XSHE': 4200, u'600036.XSHG': 16300, ... | 9245375.546010 | -0.003076 | [] |
| 16 | 2011-12-21 | 6.144010 | {u'000423.XSHE': 4200, u'600036.XSHG': 16300, ... | 9134328.126010 | -0.015971 | [] |
| 17 | 2011-12-22 | 6.144010 | {u'000423.XSHE': 4200, u'600036.XSHG': 16300, ... | 9174823.752010 | 0.000952 | [] |
| 18 | 2011-12-23 | 6.144010 | {u'000423.XSHE': 4200, u'600036.XSHG': 16300, ... | 9185929.702010 | 0.007613 | [] |
| 19 | 2011-12-26 | 6.144010 | {u'000423.XSHE': 4200, u'600036.XSHG': 16300, ... | 9054507.546010 | -0.009943 | [] |
| 20 | 2011-12-27 | 9.172263 | {u'601328.XSHG': 41600, u'600036.XSHG': 16300,... | 8855733.701263 | -0.013130 | [Order(order time: datetime.datetime(2011, 12,... |
| 21 | 2011-12-28 | 9.172263 | {u'601328.XSHG': 41600, u'600036.XSHG': 16300,... | 8820469.780263 | 0.001255 | [] |
| 22 | 2011-12-29 | 9.172263 | {u'601328.XSHG': 41600, u'600036.XSHG': 16300,... | 8836530.533263 | 0.001487 | [] |
| 23 | 2011-12-30 | 9.172263 | {u'601328.XSHG': 41600, u'600036.XSHG': 16300,... | 8976704.526263 | 0.014875 | [] |
| 24 | 2012-01-04 | 9.172263 | {u'601328.XSHG': 41600, u'600036.XSHG': 16300,... | 8858664.267263 | -0.020032 | [] |
| 25 | 2012-01-05 | 9.172263 | {u'601328.XSHG': 41600, u'600036.XSHG': 16300,... | 8785873.316263 | -0.009730 | [] |
| 26 | 2012-01-06 | 9.172263 | {u'601328.XSHG': 41600, u'600036.XSHG': 16300,... | 8790219.626263 | 0.006245 | [] |
| 27 | 2012-01-09 | 9.172263 | {u'601328.XSHG': 41600, u'600036.XSHG': 16300,... | 9032347.125263 | 0.034039 | [] |
| 28 | 2012-01-10 | 9.172263 | {u'601328.XSHG': 41600, u'600036.XSHG': 16300,... | 9247829.118263 | 0.033260 | [] |
| 29 | 2012-01-11 | 9.172263 | {u'601328.XSHG': 41600, u'600036.XSHG': 16300,... | 9186427.159263 | -0.004797 | [] |
| ... | ... | ... | ... | ... | ... | ... |
| 755 | 2015-01-12 | 1.942737 | {u'600036.XSHG': 23600, u'000776.XSHE': 22100,... | 20280828.092737 | -0.009344 | [] |
| 756 | 2015-01-13 | 1.942737 | {u'600036.XSHG': 23600, u'000776.XSHE': 22100,... | 20204218.432737 | 0.000131 | [] |
| 757 | 2015-01-14 | 1.942737 | {u'600036.XSHG': 23600, u'000776.XSHE': 22100,... | 20223885.602737 | -0.003307 | [] |
| 758 | 2015-01-15 | 1.942737 | {u'600036.XSHG': 23600, u'000776.XSHE': 22100,... | 20962393.212737 | 0.029036 | [] |
| 759 | 2015-01-16 | 1.942737 | {u'600036.XSHG': 23600, u'000776.XSHE': 22100,... | 21076614.722737 | 0.008608 | [] |
| 760 | 2015-01-19 | 3.731317 | {u'601328.XSHG': 49500, u'600066.XSHG': 21600,... | 19298994.131317 | -0.077023 | [Order(order time: datetime.datetime(2015, 1, ... |
| 761 | 2015-01-20 | 3.731317 | {u'601328.XSHG': 49500, u'600066.XSHG': 21600,... | 19641436.921317 | 0.012240 | [] |
| 762 | 2015-01-21 | 3.731317 | {u'601328.XSHG': 49500, u'600066.XSHG': 21600,... | 20548813.131317 | 0.044951 | [] |
| 763 | 2015-01-22 | 3.731317 | {u'601328.XSHG': 49500, u'600066.XSHG': 21600,... | 20654164.321317 | 0.005277 | [] |
| 764 | 2015-01-23 | 3.731317 | {u'601328.XSHG': 49500, u'600066.XSHG': 21600,... | 20704527.401317 | 0.001155 | [] |
| 765 | 2015-01-26 | 3.731317 | {u'601328.XSHG': 49500, u'600066.XSHG': 21600,... | 20741863.411317 | 0.010150 | [] |
| 766 | 2015-01-27 | 3.731317 | {u'601328.XSHG': 49500, u'600066.XSHG': 21600,... | 20501439.751317 | -0.009161 | [] |
| 767 | 2015-01-28 | 3.731317 | {u'601328.XSHG': 49500, u'600066.XSHG': 21600,... | 20072450.291317 | -0.013877 | [] |
| 768 | 2015-01-29 | 3.731317 | {u'601328.XSHG': 49500, u'600066.XSHG': 21600,... | 19879912.781317 | -0.012346 | [] |
| 769 | 2015-01-30 | 3.731317 | {u'601328.XSHG': 49500, u'600066.XSHG': 21600,... | 19612742.771317 | -0.013616 | [] |
| 770 | 2015-02-02 | 6.734377 | {u'002153.XSHE': 4400, u'600498.XSHG': 19400, ... | 19457712.474377 | -0.023419 | [Order(order time: datetime.datetime(2015, 2, ... |
| 771 | 2015-02-03 | 6.734377 | {u'002153.XSHE': 4400, u'600498.XSHG': 19400, ... | 19862476.714377 | 0.024891 | [] |
| 772 | 2015-02-04 | 6.734377 | {u'002153.XSHE': 4400, u'600498.XSHG': 19400, ... | 19714886.724377 | -0.010379 | [] |
| 773 | 2015-02-05 | 6.734377 | {u'002153.XSHE': 4400, u'600498.XSHG': 19400, ... | 19679598.144377 | -0.010236 | [] |
| 774 | 2015-02-06 | 6.734377 | {u'002153.XSHE': 4400, u'600498.XSHG': 19400, ... | 19297569.294377 | -0.016194 | [] |
| 775 | 2015-02-09 | 6.734377 | {u'002153.XSHE': 4400, u'600498.XSHG': 19400, ... | 19131675.244377 | 0.010114 | [] |
| 776 | 2015-02-10 | 6.734377 | {u'002153.XSHE': 4400, u'600498.XSHG': 19400, ... | 19621103.094377 | 0.018238 | [] |
| 777 | 2015-02-11 | 6.734377 | {u'002153.XSHE': 4400, u'600498.XSHG': 19400, ... | 20007845.234377 | 0.007978 | [] |
| 778 | 2015-02-12 | 6.734377 | {u'002153.XSHE': 4400, u'600498.XSHG': 19400, ... | 20139049.804377 | 0.002548 | [] |
| 779 | 2015-02-13 | 6.734377 | {u'002153.XSHE': 4400, u'600498.XSHG': 19400, ... | 20416511.184377 | 0.007829 | [] |
| 780 | 2015-02-16 | 5.417277 | {u'002153.XSHE': 4400, u'600498.XSHG': 19400, ... | 21015638.057277 | 0.008547 | [Order(order time: datetime.datetime(2015, 2, ... |
| 781 | 2015-02-17 | 5.417277 | {u'002153.XSHE': 4400, u'600498.XSHG': 19400, ... | 20991534.387277 | 0.006526 | [] |
| 782 | 2015-02-25 | 5.417277 | {u'002153.XSHE': 4400, u'600498.XSHG': 19400, ... | 20681973.077277 | -0.012376 | [] |
| 783 | 2015-02-26 | 5.417277 | {u'002153.XSHE': 4400, u'600498.XSHG': 19400, ... | 20936634.347277 | 0.025172 | [] |
| 784 | 2015-02-27 | 5.417277 | {u'002153.XSHE': 4400, u'600498.XSHG': 19400, ... | 21204596.757277 | 0.001836 | [] |
```
785 rows × 6 columns
```
';