UNPKG

turingtrader.js

Version:
91 lines (75 loc) 3.41 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _ = require("."); //============================================================================== // Name: profiling // Project: TuringTrader.js // Description: simple portfolio for profiling purposes // History: FUB, 2021viiii10, created //============================================================================== // see https://nodejs.org/en/docs/guides/simple-profiling/ // see https://nodejs.org/en/docs/guides/diagnostics-flamegraph/ //------------------------------------------------------------------------------ var algo = { run: function run(sim) { sim.startDate = new Date("2007-01-01T18:00:00.000-05:00"); // 6pm in America/New York (winter) sim.endDate = new Date("2020-12-31T18:00:00.000-05:00"); // 6pm in America/New York (winter) sim.deposit(1000); return sim.loop( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() { var orders; return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: orders = []; if (sim.t(0).getMonth() !== sim.t(-1).getMonth()) { orders.push(sim.asset("spy").alloc(0.25, sim.orderTypes.mktNextOpen)); orders.push(sim.asset("tlt").alloc(0.25, sim.orderTypes.mktNextOpen)); orders.push(sim.asset("shy").alloc(0.25, sim.orderTypes.mktNextOpen)); orders.push(sim.asset("gld").alloc(0.25, sim.orderTypes.mktNextOpen)); } return _context.abrupt("return", orders); case 3: case "end": return _context.stop(); } } }, _callee); }))); } }; //------------------------------------------------------------------------------ var profilingBacktest = /*#__PURE__*/function () { var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() { var profiler0, result, profiler1, report, profiler2; return _regenerator["default"].wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: profiler0 = Date.now(); _context2.next = 3; return (0, _.createSimulator)(algo).run(); case 3: result = _context2.sent; profiler1 = Date.now(); _context2.next = 7; return (0, _.createReport)(result); case 7: report = _context2.sent; profiler2 = Date.now(); console.log("simulation run: ".concat(profiler1 - profiler0, "ms")); console.log("simulation report: ".concat(profiler2 - profiler1, "ms")); case 11: case "end": return _context2.stop(); } } }, _callee2); })); return function profilingBacktest() { return _ref2.apply(this, arguments); }; }(); profilingBacktest(); //============================================================================== // end of file