神经网络交易的训练部分

来源:https://uqer.io/community/share/55b8af12f9f06c91f818c607

  1. import pybrain as brain
  2. training_set = ("20050101", "20130101") # 训练集(六年)
  3. testing_set = ("20150101", "20150525") # 测试集(2015上半年数据)
  4. universe = ['000001']
  5. # 目标股票池
  6. HISTORY = 10 # 通过前十日数据预测
  1. from pybrain.datasets import SupervisedDataSet
  2. ### 建立数据集
  3. def make_training_data():
  4. ds = SupervisedDataSet(HISTORY, 1)
  5. for ticker in universe: # 遍历每支股票
  6. raw_data = DataAPI.MktEqudGet(ticker=ticker, beginDate=training_set[0], endDate=training_set[1], field=[
  7. 'tradeDate', 'closePrice' # 敏感字段
  8. ], pandas="1")
  9. plist = list(raw_data['closePrice'])
  10. for idx in range(1, len(plist) - HISTORY - 1):
  11. sample = []
  12. for i in range(HISTORY):
  13. sample.append(plist[idx + i - 1] / plist[idx + i] - 1)
  14. answer = plist[idx + HISTORY - 1] / plist[idx + HISTORY] - 1
  15. ds.addSample(sample, answer)
  16. return ds
  17. ### 建立测试集
  18. def make_testing_data():
  19. ds = SupervisedDataSet(HISTORY, 1)
  20. for ticker in universe: # 遍历每支股票
  21. raw_data = DataAPI.MktEqudGet(ticker=ticker, beginDate=testing_set[0], endDate=testing_set[1], field=[
  22. 'tradeDate', 'closePrice' # 敏感字段
  23. ], pandas="1")
  24. plist = list(raw_data['closePrice'])
  25. for idx in range(1, len(plist) - HISTORY - 1):
  26. sample = []
  27. for i in range(HISTORY):
  28. sample.append(plist[idx + i - 1] / plist[idx + i] - 1)
  29. answer = plist[idx + HISTORY - 1] / plist[idx + HISTORY] - 1
  30. ds.addSample(sample, answer)
  31. return ds
  1. from pybrain.supervised.trainers import BackpropTrainer
  2. ### 构造BP训练实例
  3. def make_trainer(net, ds, momentum = 0.1, verbose = True, weightdecay = 0.01): # 网络, 训练集, 训练参数
  4. trainer = BackpropTrainer(net, ds, momentum = momentum, verbose = verbose, weightdecay = weightdecay)
  5. return trainer
  1. ### 开始训练
  2. def start_training(trainer, epochs = 15): # 迭代次数
  3. trainer.trainEpochs(epochs)
  4. def start_testing(net, dataset):
  5. return net.activateOnDataset(dataset)
  1. ### 保存参数
  2. from pybrain.tools.customxml import NetworkWriter
  3. def save_arguments(net):
  4. NetworkWriter.writeToFile(net, 'huge_data.csv')
  5. print 'Arguments save to file net.csv'
  1. from pybrain.tools.shortcuts import buildNetwork
  2. ### 初始化神经网络
  3. fnn = buildNetwork(HISTORY, 15, 7, 1)
  4. training_dataset = make_training_data()
  5. testing_dataset = make_testing_data()
  6. trainer = make_trainer(fnn, training_dataset)
  7. start_training(trainer, 5)
  8. save_arguments(fnn)
  9. print start_testing(fnn, testing_dataset)
  10. Total error: 0.00226884924246
  11. Total error: 0.00058242191557
  12. Total error: 0.00058089738079
  13. Total error: 0.000581061747831
  14. Total error: 0.000580708420341
  15. Arguments save to file net.csv
  16. [[-0.00055257]
  17. [-0.00055257]
  18. [-0.00055257]
  19. [-0.00055257]
  20. [-0.00055257]
  21. [-0.00055257]
  22. [-0.00055257]
  23. [-0.00055257]
  24. [-0.00055257]
  25. [-0.00055257]
  26. [-0.00055257]
  27. [-0.00055257]
  28. [-0.00055257]
  29. [-0.00055257]
  30. [-0.00055257]
  31. [-0.00055257]
  32. [-0.00055257]
  33. [-0.00055257]
  34. [-0.00055257]
  35. [-0.00055257]
  36. [-0.00055257]
  37. [-0.00055257]
  38. [-0.00055257]
  39. [-0.00055257]
  40. [-0.00055257]
  41. [-0.00055257]
  42. [-0.00055257]
  43. [-0.00055257]
  44. [-0.00055257]
  45. [-0.00055257]
  46. [-0.00055257]
  47. [-0.00055257]
  48. [-0.00055257]
  49. [-0.00055257]
  50. [-0.00055257]
  51. [-0.00055257]
  52. [-0.00055257]
  53. [-0.00055257]
  54. [-0.00055257]
  55. [-0.00055257]
  56. [-0.00055257]
  57. [-0.00055257]
  58. [-0.00055257]
  59. [-0.00055257]
  60. [-0.00055257]
  61. [-0.00055257]
  62. [-0.00055257]
  63. [-0.00055257]
  64. [-0.00055257]
  65. [-0.00055257]
  66. [-0.00055257]
  67. [-0.00055257]
  68. [-0.00055257]
  69. [-0.00055257]
  70. [-0.00055257]
  71. [-0.00055257]
  72. [-0.00055257]
  73. [-0.00055257]
  74. [-0.00055257]
  75. [-0.00055257]
  76. [-0.00055257]
  77. [-0.00055257]
  78. [-0.00055257]
  79. [-0.00055257]
  80. [-0.00055257]
  81. [-0.00055257]
  82. [-0.00055257]
  83. [-0.00055257]
  84. [-0.00055257]
  85. [-0.00055257]
  86. [-0.00055257]
  87. [-0.00055257]
  88. [-0.00055257]
  89. [-0.00055257]
  90. [-0.00055257]
  91. [-0.00055257]
  92. [-0.00055257]
  93. [-0.00055257]
  94. [-0.00055257]
  95. [-0.00055257]
  96. [-0.00055257]
  97. [-0.00055257]
  98. [-0.00055257]
  99. [-0.00055257]
  100. [-0.00055257]
  101. [-0.00055257]
  102. [-0.00055257]
  103. [-0.00055257]
  104. [-0.00055257]
  105. [-0.00055257]
  106. [-0.00055257]
  107. [-0.00055257]
  108. [-0.00055257]
  109. [-0.00055257]
  110. [-0.00055257]
  111. [-0.00055257]
  112. [-0.00055257]
  113. [-0.00055257]
  114. [-0.00055257]
  115. [-0.00055257]
  116. [-0.00055257]
  117. [-0.00055257]
  118. [-0.00055257]
  119. [-0.00055257]
  120. [-0.00055257]
  121. [-0.00055257]
  122. [-0.00055257]
  123. [-0.00055257]
  124. [-0.00055257]
  125. [-0.00055257]
  126. [-0.00055257]
  127. [-0.00055257]
  128. [-0.00055257]
  129. [-0.00055257]
  130. [-0.00055257]
  131. [-0.00055257]
  132. [-0.00055257]
  133. [-0.00055257]
  134. [-0.00055257]
  135. [-0.00055257]
  136. [-0.00055257]
  137. [-0.00055257]
  138. [-0.00055257]
  139. [-0.00055257]
  140. [-0.00055257]
  141. [-0.00055257]
  142. [-0.00055257]
  143. [-0.00055257]
  144. [-0.00055257]
  145. [-0.00055257]
  146. [-0.00055257]
  147. [-0.00055257]
  148. [-0.00055257]
  149. [-0.00055257]
  150. [-0.00055257]
  151. [-0.00055257]
  152. [-0.00055257]
  153. [-0.00055257]
  154. [-0.00055257]
  155. [-0.00055257]
  156. [-0.00055257]
  157. [-0.00055257]
  158. [-0.00055257]
  159. [-0.00055257]
  160. [-0.00055257]
  161. [-0.00055257]
  162. [-0.00055257]
  163. [-0.00055257]
  164. [-0.00055257]
  165. [-0.00055257]
  166. [-0.00055257]
  167. [-0.00055257]
  168. [-0.00055257]
  169. [-0.00055257]
  170. [-0.00055257]
  171. [-0.00055257]
  172. [-0.00055257]
  173. [-0.00055257]
  174. [-0.00055257]
  175. [-0.00055257]
  176. [-0.00055257]
  177. [-0.00055257]
  178. [-0.00055257]
  179. [-0.00055257]
  180. [-0.00055257]
  181. [-0.00055257]
  182. [-0.00055257]
  183. [-0.00055257]
  184. [-0.00055257]
  185. [-0.00055257]
  186. [-0.00055257]
  187. [-0.00055257]
  188. [-0.00055257]
  189. [-0.00055257]
  190. [-0.00055257]
  191. [-0.00055257]
  192. [-0.00055257]
  193. [-0.00055257]
  194. [-0.00055257]
  195. [-0.00055257]
  196. [-0.00055257]
  197. [-0.00055257]
  198. [-0.00055257]
  199. [-0.00055257]
  200. [-0.00055257]
  201. [-0.00055257]
  202. [-0.00055257]
  203. [-0.00055257]
  204. [-0.00055257]
  205. [-0.00055257]
  206. [-0.00055257]
  207. [-0.00055257]
  208. [-0.00055257]
  209. [-0.00055257]
  210. [-0.00055257]
  211. [-0.00055257]
  212. [-0.00055257]
  213. [-0.00055257]
  214. [-0.00055257]
  215. [-0.00055257]
  216. [-0.00055257]
  217. [-0.00055257]
  218. [-0.00055257]
  219. [-0.00055257]
  220. [-0.00055257]
  221. [-0.00055257]
  222. [-0.00055257]
  223. [-0.00055257]
  224. [-0.00055257]
  225. [-0.00055257]
  226. [-0.00055257]
  227. [-0.00055257]
  228. [-0.00055257]
  229. [-0.00055257]
  230. [-0.00055257]
  231. [-0.00055257]
  232. [-0.00055257]
  233. [-0.00055257]
  234. [-0.00055257]
  235. [-0.00055257]
  236. [-0.00055257]
  237. [-0.00055257]
  238. [-0.00055257]
  239. [-0.00055257]
  240. [-0.00055257]
  241. [-0.00055257]
  242. [-0.00055257]
  243. [-0.00055257]
  244. [-0.00055257]
  245. [-0.00055257]
  246. [-0.00055257]
  247. [-0.00055257]
  248. [-0.00055257]
  249. [-0.00055257]
  250. [-0.00055257]
  251. [-0.00055257]
  252. [-0.00055257]
  253. [-0.00055257]
  254. [-0.00055257]
  255. [-0.00055257]
  256. [-0.00055257]
  257. [-0.00055257]
  258. [-0.00055257]
  259. [-0.00055257]
  260. [-0.00055257]
  261. [-0.00055257]
  262. [-0.00055257]
  263. [-0.00055257]
  264. [-0.00055257]
  265. [-0.00055257]
  266. [-0.00055257]
  267. [-0.00055257]
  268. [-0.00055257]
  269. [-0.00055257]
  270. [-0.00055257]
  271. [-0.00055257]
  272. [-0.00055257]
  273. [-0.00055257]
  274. [-0.00055257]
  275. [-0.00055257]
  276. [-0.00055257]
  277. [-0.00055257]
  278. [-0.00055257]
  279. [-0.00055257]
  280. [-0.00055257]
  281. [-0.00055257]
  282. [-0.00055257]
  283. [-0.00055257]
  284. [-0.00055257]
  285. [-0.00055257]
  286. [-0.00055257]
  287. [-0.00055257]
  288. [-0.00055257]
  289. [-0.00055257]
  290. [-0.00055257]
  291. [-0.00055257]
  292. [-0.00055257]
  293. [-0.00055257]
  294. [-0.00055257]
  295. [-0.00055257]
  296. [-0.00055257]
  297. [-0.00055257]
  298. [-0.00055257]
  299. [-0.00055257]
  300. [-0.00055257]
  301. [-0.00055257]
  302. [-0.00055257]
  303. [-0.00055257]
  304. [-0.00055257]
  305. [-0.00055257]
  306. [-0.00055257]
  307. [-0.00055257]
  308. [-0.00055257]
  309. [-0.00055257]
  310. [-0.00055257]
  311. [-0.00055257]
  312. [-0.00055257]
  313. [-0.00055257]
  314. [-0.00055257]
  315. [-0.00055257]
  316. [-0.00055257]
  317. [-0.00055257]
  318. [-0.00055257]
  319. [-0.00055257]
  320. [-0.00055257]
  321. [-0.00055257]
  322. [-0.00055257]
  323. [-0.00055257]
  324. [-0.00055257]
  325. [-0.00055257]
  326. [-0.00055257]
  327. [-0.00055257]
  328. [-0.00055257]
  329. [-0.00055257]
  330. [-0.00055257]
  331. [-0.00055257]
  332. [-0.00055257]
  333. [-0.00055257]
  334. [-0.00055257]
  335. [-0.00055257]
  336. [-0.00055257]
  337. [-0.00055257]
  338. [-0.00055257]
  339. [-0.00055257]
  340. [-0.00055257]
  341. [-0.00055257]
  342. [-0.00055257]
  343. [-0.00055257]
  344. [-0.00055257]
  345. [-0.00055257]
  346. [-0.00055257]
  347. [-0.00055257]
  348. [-0.00055257]
  349. [-0.00055257]
  350. [-0.00055257]
  351. [-0.00055257]
  352. [-0.00055257]
  353. [-0.00055257]
  354. [-0.00055257]
  355. [-0.00055257]
  356. [-0.00055257]
  357. [-0.00055257]
  358. [-0.00055257]
  359. [-0.00055257]
  360. [-0.00055257]
  361. [-0.00055257]
  362. [-0.00055257]
  363. [-0.00055257]
  364. [-0.00055257]
  365. [-0.00055257]
  366. [-0.00055257]
  367. [-0.00055257]
  368. [-0.00055257]
  369. [-0.00055257]
  370. [-0.00055257]
  371. [-0.00055257]
  372. [-0.00055257]
  373. [-0.00055257]
  374. [-0.00055257]
  375. [-0.00055257]
  376. [-0.00055257]
  377. [-0.00055257]
  378. [-0.00055257]
  379. [-0.00055257]
  380. [-0.00055257]
  381. [-0.00055257]
  382. [-0.00055257]
  383. [-0.00055257]
  384. [-0.00055257]
  385. [-0.00055257]
  386. [-0.00055257]
  387. [-0.00055257]
  388. [-0.00055257]
  389. [-0.00055257]
  390. [-0.00055257]
  391. [-0.00055257]
  392. [-0.00055257]
  393. [-0.00055257]
  394. [-0.00055257]
  395. [-0.00055257]
  396. [-0.00055257]
  397. [-0.00055257]
  398. [-0.00055257]
  399. [-0.00055257]
  400. [-0.00055257]
  401. [-0.00055257]
  402. [-0.00055257]
  403. [-0.00055257]
  404. [-0.00055257]
  405. [-0.00055257]
  406. [-0.00055257]
  407. [-0.00055257]
  408. [-0.00055257]
  409. [-0.00055257]
  410. [-0.00055257]
  411. [-0.00055257]
  412. [-0.00055257]
  413. [-0.00055257]
  414. [-0.00055257]
  415. [-0.00055257]
  416. [-0.00055257]
  417. [-0.00055257]
  418. [-0.00055257]
  419. [-0.00055257]
  420. [-0.00055257]
  421. [-0.00055257]
  422. [-0.00055257]
  423. [-0.00055257]
  424. [-0.00055257]
  425. [-0.00055257]
  426. [-0.00055257]
  427. [-0.00055257]
  428. [-0.00055257]
  429. [-0.00055257]
  430. [-0.00055257]
  431. [-0.00055257]
  432. [-0.00055257]
  433. [-0.00055257]
  434. [-0.00055257]
  435. [-0.00055257]
  436. [-0.00055257]
  437. [-0.00055257]
  438. [-0.00055257]
  439. [-0.00055257]
  440. [-0.00055257]
  441. [-0.00055257]
  442. [-0.00055257]
  443. [-0.00055257]
  444. [-0.00055257]
  445. [-0.00055257]
  446. [-0.00055257]
  447. [-0.00055257]
  448. [-0.00055257]
  449. [-0.00055257]
  450. [-0.00055257]
  451. [-0.00055257]
  452. [-0.00055257]
  453. [-0.00055257]
  454. [-0.00055257]
  455. [-0.00055257]
  456. [-0.00055257]
  457. [-0.00055257]
  458. [-0.00055257]
  459. [-0.00055257]
  460. [-0.00055257]
  461. [-0.00055257]
  462. [-0.00055257]
  463. [-0.00055257]
  464. [-0.00055257]
  465. [-0.00055257]
  466. [-0.00055257]
  467. [-0.00055257]
  468. [-0.00055257]
  469. [-0.00055257]
  470. [-0.00055257]
  471. [-0.00055257]
  472. [-0.00055257]
  473. [-0.00055257]
  474. [-0.00055257]
  475. [-0.00055257]
  476. [-0.00055257]
  477. [-0.00055257]
  478. [-0.00055257]
  479. [-0.00055257]
  480. [-0.00055257]
  481. [-0.00055257]
  482. [-0.00055257]
  483. [-0.00055257]
  484. [-0.00055257]
  485. [-0.00055257]
  486. [-0.00055257]
  487. [-0.00055257]
  488. [-0.00055257]
  489. [-0.00055257]
  490. [-0.00055257]
  491. [-0.00055257]
  492. [-0.00055257]
  493. [-0.00055257]
  494. [-0.00055257]
  495. [-0.00055257]
  496. [-0.00055257]
  497. [-0.00055257]
  498. [-0.00055257]
  499. [-0.00055257]
  500. [-0.00055257]
  501. [-0.00055257]
  502. [-0.00055257]
  503. [-0.00055257]
  504. [-0.00055257]
  505. [-0.00055257]
  506. [-0.00055257]
  507. [-0.00055257]
  508. [-0.00055257]
  509. [-0.00055257]
  510. [-0.00055257]
  511. [-0.00055257]
  512. [-0.00055257]
  513. [-0.00055257]
  514. [-0.00055257]
  515. [-0.00055257]
  516. [-0.00055257]
  517. [-0.00055257]
  518. [-0.00055257]
  519. [-0.00055257]
  520. [-0.00055257]
  521. [-0.00055257]
  522. [-0.00055257]
  523. [-0.00055257]
  524. [-0.00055257]
  525. [-0.00055257]
  526. [-0.00055257]
  527. [-0.00055257]
  528. [-0.00055257]
  529. [-0.00055257]
  530. [-0.00055257]
  531. [-0.00055257]
  532. [-0.00055257]
  533. [-0.00055257]
  534. [-0.00055257]
  535. [-0.00055257]
  536. [-0.00055257]
  537. [-0.00055257]
  538. [-0.00055257]
  539. [-0.00055257]
  540. [-0.00055257]
  541. [-0.00055257]
  542. [-0.00055257]
  543. [-0.00055257]
  544. [-0.00055257]
  545. [-0.00055257]
  546. [-0.00055257]
  547. [-0.00055257]
  548. [-0.00055257]
  549. [-0.00055257]
  550. [-0.00055257]
  551. [-0.00055257]
  552. [-0.00055257]
  553. [-0.00055257]
  554. [-0.00055257]
  555. [-0.00055257]
  556. [-0.00055257]
  557. [-0.00055257]
  558. [-0.00055257]
  559. [-0.00055257]
  560. [-0.00055257]
  561. [-0.00055257]
  562. [-0.00055257]
  563. [-0.00055257]
  564. [-0.00055257]
  565. [-0.00055257]
  566. [-0.00055257]
  567. [-0.00055257]
  568. [-0.00055257]
  569. [-0.00055257]
  570. [-0.00055257]
  571. [-0.00055257]
  572. [-0.00055257]
  573. [-0.00055257]
  574. [-0.00055257]
  575. [-0.00055257]
  576. [-0.00055257]
  577. [-0.00055257]
  578. [-0.00055257]
  579. [-0.00055257]
  580. [-0.00055257]
  581. [-0.00055257]
  582. [-0.00055257]
  583. [-0.00055257]
  584. [-0.00055257]
  585. [-0.00055257]
  586. [-0.00055257]
  587. [-0.00055257]
  588. [-0.00055257]
  589. [-0.00055257]
  590. [-0.00055257]
  591. [-0.00055257]
  592. [-0.00055257]
  593. [-0.00055257]
  594. [-0.00055257]
  595. [-0.00055257]
  596. [-0.00055257]
  597. [-0.00055257]
  598. [-0.00055257]
  599. [-0.00055257]
  600. [-0.00055257]
  601. [-0.00055257]
  602. [-0.00055257]
  603. [-0.00055257]
  604. [-0.00055257]
  605. [-0.00055257]
  606. [-0.00055257]
  607. [-0.00055257]
  608. [-0.00055257]
  609. [-0.00055257]
  610. [-0.00055257]
  611. [-0.00055257]
  612. [-0.00055257]
  613. [-0.00055257]
  614. [-0.00055257]
  615. [-0.00055257]
  616. [-0.00055257]
  617. [-0.00055257]
  618. [-0.00055257]
  619. [-0.00055257]
  620. [-0.00055257]
  621. [-0.00055257]
  622. [-0.00055257]
  623. [-0.00055257]
  624. [-0.00055257]
  625. [-0.00055257]
  626. [-0.00055257]
  627. [-0.00055257]
  628. [-0.00055257]
  629. [-0.00055257]
  630. [-0.00055257]
  631. [-0.00055257]
  632. [-0.00055257]
  633. [-0.00055257]
  634. [-0.00055257]
  635. [-0.00055257]
  636. [-0.00055257]
  637. [-0.00055257]
  638. [-0.00055257]
  639. [-0.00055257]
  640. [-0.00055257]
  641. [-0.00055257]
  642. [-0.00055257]
  643. [-0.00055257]
  644. [-0.00055257]
  645. [-0.00055257]
  646. [-0.00055257]
  647. [-0.00055257]
  648. [-0.00055257]
  649. [-0.00055257]
  650. [-0.00055257]
  651. [-0.00055257]
  652. [-0.00055257]
  653. [-0.00055257]
  654. [-0.00055257]
  655. [-0.00055257]
  656. [-0.00055257]
  657. [-0.00055257]
  658. [-0.00055257]
  659. [-0.00055257]
  660. [-0.00055257]
  661. [-0.00055257]
  662. [-0.00055257]
  663. [-0.00055257]
  664. [-0.00055257]
  665. [-0.00055257]
  666. [-0.00055257]
  667. [-0.00055257]
  668. [-0.00055257]
  669. [-0.00055257]
  670. [-0.00055257]
  671. [-0.00055257]]