{ "info": { "author": "Yili Peng", "author_email": "yili_peng@outlook.com", "bugtrack_url": null, "classifiers": [], "description": "This programme is built for back-testing factors.\n\nDependencies\n------------\n\n- python 3.5\n- pandas 0.23.0\n- numba 0.38.0\n- empyrical 0.5.0\n- data_box\n- pickle\n- multiprocessing\n- joblib\n\nLogic\n-----\n\nBasic definitions\n-----------------\n\n#. v_t,s_t,c_t: total value, stock value and cash value at time t after\n trading\n#. v^f_t,s^f_t,c^f_t: total value, stock value and cash value at time t\n before trading\n#. ss,sv: suspended stock value and valid stock value\n#. r_t: return at time t\n#. cost_t: cost to trade at time t\n\nNote: s,ss,sv are all vectors while others are numbers\n\nEquations\n---------\n\n#. v_t = \\|s_t\\| + c_t\n#. s^f_t = s_{t-1} \\* (1 + r_t) = ss^f_t + sv^f_t = ss_t + sv^f_t\n#. ss_t <- suspend, s^f_t\n#. c_{t-1} + \\|sv^f_t\\| = \\|sv_t\\| + c_t + cost_t ( where c_t, cost_t >=\n 0 )\n#. cost_t =|sv_t - sv^f_t\\| \\* costRate\n#. weight_t <- factor_{t-1},industry_t,suspend_t ( \\|weight_t\\| = 1 or 0\n if there is no valid stocks or factors or industries)\n#. define cost^f_t = (2|sv^f_t\\| + c_{t-1}) \\* costRate s.t. cost^f_t >=\n cost_t, which is greater than the maximum cost we may have during the\n trade\n#. define available_value^f_t = c_{t-1} + \\|sv^f_t\\| - cost^f_t, which\n means the value ( = \\|sv_t\\| if weight_t != 0) we have in stocks\n after trading\n#. let sv_t = weight_t \\* available_value^f_t s.t. c_t = c_{t-1} +\n \\|sv^f_t\\| - \\|sv_t\\| - cost_t >=0\n\nThus to update v_t, we would start with calculating s^f_t, ss, sv^f_t,\nthen cost^f_t, available_value^f_t, then sv_t, cost_t and c_t, and\nfinally v_t\n\nExample\n-------\n\nData Box: pre-process\n---------------------\n\n.. code:: python\n\n from data_box import data_box\n db=data_box()\\\n .load_indestry(ind)\\\n .load_indexWeight(ind_weight)\\\n .calc_indweight()\\\n .load_suspend(sus)\\\n .load_adjPrice(price)\\\n .add_factor('factor0',factor0)\\\n .add_factor('factor1',factor1)\\\n .set_lag(freq='d',day_lag=1)\\\n .align_data()\n # freq can be 'd' or 'm', for detail please refer to db.set_lag doc. \n\nWhere ``price,ind,ind_weight,sus,factor0,factor1`` are all dataframes\nwith index as date (yyyymmdd,int) and column as tickers. You can save\nand load this data box object by ``db.save('path')`` and\n``db.load('path')``. You can find more in data_box project.\n\nBack Test\n=========\n\n.. code:: python\n\n from single_factor_model import run_back_test\n\nSingle processor\n\n.. code:: python\n\n Value,Turnover=run_back_test(data_box=db,back_end=None,n=5,out_path=None,double_side_cost=0.003)\n\nMulti processors\n\n.. code:: python\n\n Value,Turnover=run_back_test(data_box=db,back_end='loky',n=5,n_jobs=-1,out_path=None,verbose=50)\n\nor\n\n.. code:: python\n\n with __name__=='__main__':\n Value,Turnover=run_back_test(data_box=db,back_end='multiprocessing',n=5,n_jobs=-1,out_path=None)\n\nTo check detailed positions of each portfolio every day, just assign\n``out_path``.\n\nBack test for specific industries\n\n.. code:: python\n\n from single_factor_model import run_back_test_by_industry\n Value_list,Turnover_list=run_back_test_by_industry(db,industry_list=None,back_end='loky',n_jobs=-1,double_side_cost=0.003,verbose=50) \n\nSummary and Plot\n================\n\nCalculate return including long short portfolio(and reverse)\n\n.. code:: python\n\n from single_factor_model import calc_return\n Return = calc_return(Value,Turnover,long_short=True,double_side_cost=0.003)\n\nSummary\n\n.. code:: python\n\n from single_factor_model import summary\n S=summary(Return)\n\nPlot\n\n.. code:: python\n\n from single_factor_model import run_plot\n run_plot(Return,show=True)\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "single-factor-model", "package_url": "https://pypi.org/project/single-factor-model/", "platform": "", "project_url": "https://pypi.org/project/single-factor-model/", "project_urls": null, "release_url": "https://pypi.org/project/single-factor-model/0.3.2/", "requires_dist": [ "data-box", "empyrical" ], "requires_python": "", "summary": "factor model", "version": "0.3.2" }, "last_serial": 4844789, "releases": { "0.0.2": [ { "comment_text": "", "digests": { "md5": "c11aed72a2d92775b9133ab3d4e5518d", "sha256": "c42223e3ae81527711309877994eab566a3af17b56db274ff9dbb1ebf2e27cf6" }, "downloads": -1, "filename": "single_factor_model-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "c11aed72a2d92775b9133ab3d4e5518d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26071, "upload_time": "2018-05-15T01:17:27", "url": "https://files.pythonhosted.org/packages/57/89/b8cace25b6bf3ce555d651efbb2e624f49602f9f929147333e2d8d26e3d2/single_factor_model-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c94aec6465dc3085bd0a19bfd3bb1c4f", "sha256": "b8a71ccc497a286dbcbb98e1fa229de7ea23cf3a3feda0dc5a75b888d8ffa2b1" }, "downloads": -1, "filename": "single_factor_model-0.0.2.tar.gz", "has_sig": false, "md5_digest": "c94aec6465dc3085bd0a19bfd3bb1c4f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14896, "upload_time": "2018-05-15T01:17:01", "url": "https://files.pythonhosted.org/packages/f9/fa/b474fd44df520e04d261156baf4c66b837dfafed6d58d1f6c266ff980358/single_factor_model-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "5f69fc6bb216fb398e6f1e3f58cb2582", "sha256": "87008cd32ac786904f220b737e4d959b7d59799782b5a69a80fa0a8360512c73" }, "downloads": -1, "filename": "single_factor_model-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "5f69fc6bb216fb398e6f1e3f58cb2582", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26115, "upload_time": "2018-05-22T03:02:33", "url": "https://files.pythonhosted.org/packages/55/53/dcb5d4c899f46d9d15e1fa561ee46a544791d9d89fc93d1a34afa8f94484/single_factor_model-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "47fab7aeba1fbab158621e62746a279d", "sha256": "051403c7c22a554a6692cd3c6399cdaa62e3bea12fdfb8cdb4521599a39c7e35" }, "downloads": -1, "filename": "single_factor_model-0.0.3.tar.gz", "has_sig": false, "md5_digest": "47fab7aeba1fbab158621e62746a279d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14936, "upload_time": "2018-05-22T03:02:34", "url": "https://files.pythonhosted.org/packages/d3/60/a0bad34c751d7a84887baa70144a1f6b1d774d058abc52d9bb40bc8a0c9f/single_factor_model-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "3548f312ade02be84a73ccfdd54cff03", "sha256": "61d982c05a53047fcaf6aa01b2d75b696fcad0119575398a8911c5119ca1d8e6" }, "downloads": -1, "filename": "single_factor_model-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "3548f312ade02be84a73ccfdd54cff03", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26125, "upload_time": "2018-05-22T03:37:20", "url": "https://files.pythonhosted.org/packages/de/dd/12dedea7d6538d26beacdace240ca31ed4b82ed2a837672a3fd511991310/single_factor_model-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "08c2f9c5bd15eac9b33c2351668954b4", "sha256": "6362341f61c49a29a0dfc3fac2c1cc9bed09da27b94717ef89ed7b45a986daa2" }, "downloads": -1, "filename": "single_factor_model-0.0.4.tar.gz", "has_sig": false, "md5_digest": "08c2f9c5bd15eac9b33c2351668954b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14952, "upload_time": "2018-05-22T03:37:22", "url": "https://files.pythonhosted.org/packages/9b/e9/0480287c2c184aa33ba15718762ba5de221f0b85e4d85b757f6ce485f2a3/single_factor_model-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "f99cdb3f9d3bab7ee9403f539b85c095", "sha256": "1cd9eb5683fe8103ad5fd7e29fc350ce3ff5b5c5f78dba649d58393e03c11b2b" }, "downloads": -1, "filename": "single_factor_model-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "f99cdb3f9d3bab7ee9403f539b85c095", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26165, "upload_time": "2018-05-24T03:47:47", "url": "https://files.pythonhosted.org/packages/ab/b5/6686db4bdaf6e623b58526082baf099317087fbb883cfd0f1ce1958ab94d/single_factor_model-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aa114a7ae85801eed8aa7f8f15756a41", "sha256": "506b33d50d1109c29d65320387a598709995a6b718087f0ad450f2d82d1e7788" }, "downloads": -1, "filename": "single_factor_model-0.0.5.tar.gz", "has_sig": false, "md5_digest": "aa114a7ae85801eed8aa7f8f15756a41", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14983, "upload_time": "2018-05-24T03:47:01", "url": "https://files.pythonhosted.org/packages/82/10/2aa1b66161182afa417626e84f15bd524bc8a9a11e83cb15afd3ed3a9934/single_factor_model-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "2bc083939f76d99112834e168647fa95", "sha256": "da612daf4531d7a688ee1239d3651bfb1ff97e48c0f654986ea0340e28c47bc1" }, "downloads": -1, "filename": "single_factor_model-0.0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "2bc083939f76d99112834e168647fa95", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26168, "upload_time": "2018-05-24T07:05:05", "url": "https://files.pythonhosted.org/packages/75/22/873cb08a096e5770a04c2242d76aeda03198f8f0a2ea303dc222c4c15cb8/single_factor_model-0.0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "afb204e0d6aa737fd73d3449dcb6f00a", "sha256": "c64dad540d9b3868339e9cae0906274db13295032ee4467e8641bfb1a26d89a3" }, "downloads": -1, "filename": "single_factor_model-0.0.6.tar.gz", "has_sig": false, "md5_digest": "afb204e0d6aa737fd73d3449dcb6f00a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14987, "upload_time": "2018-05-24T07:05:06", "url": "https://files.pythonhosted.org/packages/a6/93/1c6fa29d6551f026603284d84fecf2dfb5786e388f00b062c4dc4da55a8b/single_factor_model-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "d46026cb9773eea953a96bad196d578e", "sha256": "ecf2a37c48372e02171e9c485b0df7d7624a736e5106c6392134b7ea1d5aefb5" }, "downloads": -1, "filename": "single_factor_model-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "d46026cb9773eea953a96bad196d578e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26822, "upload_time": "2018-11-06T02:24:50", "url": "https://files.pythonhosted.org/packages/c6/96/56d4bcef619a141bdc9c818aca33680909d8085db537556b1e642e59c7de/single_factor_model-0.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6139d12c6f3eaffea4dba8c34b7b22ac", "sha256": "e5142c7acec2d9d47da1da4a07cf27d40783e62a073716abd7c0fb31a9b01d94" }, "downloads": -1, "filename": "single_factor_model-0.0.7.tar.gz", "has_sig": false, "md5_digest": "6139d12c6f3eaffea4dba8c34b7b22ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15622, "upload_time": "2018-11-06T02:24:52", "url": "https://files.pythonhosted.org/packages/33/b8/738a0b656e19af3ba8fda1208fdeefe9ae42189c0c71feda0622aeb7e17e/single_factor_model-0.0.7.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "4c2f7e9d0b5a667c8d4250c66ff5b216", "sha256": "a679a24838b9a15085a0ecfad86e8762537e1a6b19cbd2bf61d83bf8646a0e32" }, "downloads": -1, "filename": "single_factor_model-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4c2f7e9d0b5a667c8d4250c66ff5b216", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11542, "upload_time": "2018-11-29T08:40:40", "url": "https://files.pythonhosted.org/packages/82/2c/2c0fbdf58c1446f8e7fb9c544515926ec4d8421daaa150598492474354b7/single_factor_model-0.1.0-py3-none-any.whl" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "d047fd2d3cea335900f616b12c456d27", "sha256": "7de256926269fdf387152a6fc9c2818878c8b1642288ab56e46206fdb46234b6" }, "downloads": -1, "filename": "single_factor_model-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d047fd2d3cea335900f616b12c456d27", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11546, "upload_time": "2018-11-29T08:42:41", "url": "https://files.pythonhosted.org/packages/09/0a/4d8808d10871c15823da2d3ce5a3911e84e1054c01b2c1095ad1d7625096/single_factor_model-0.1.1-py3-none-any.whl" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "a7c769c7b1e0b72464802a63d7a36e1b", "sha256": "e41f6bef59e7889c6c9949736f616deb860455df4b906a7e98e0a3d2c341894d" }, "downloads": -1, "filename": "single_factor_model-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "a7c769c7b1e0b72464802a63d7a36e1b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11542, "upload_time": "2018-12-04T10:00:34", "url": "https://files.pythonhosted.org/packages/01/ab/355a4406b2a6bc88fcf50f3cf30a2c5f2930deefad7d4da77d93d156e69e/single_factor_model-0.1.2-py3-none-any.whl" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "c7b39b87c2aa1a74fd2fd782b436ee6b", "sha256": "b66163c572382246d60ea7c2f69a152b7bb585be8316302385fd993d7e980bcd" }, "downloads": -1, "filename": "single_factor_model-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "c7b39b87c2aa1a74fd2fd782b436ee6b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11790, "upload_time": "2018-12-07T05:25:23", "url": "https://files.pythonhosted.org/packages/2e/f5/dfc01f0126a5ba9b9bcbb5f4ce97ac75f670a665c77056ec5174a09aad74/single_factor_model-0.1.3-py3-none-any.whl" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "5565047f89254a46a89e2cb559a16706", "sha256": "bbe66f2cfbfe71d55317ca422030ec157c7a7b273fa72fe424b72a3604254283" }, "downloads": -1, "filename": "single_factor_model-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "5565047f89254a46a89e2cb559a16706", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11792, "upload_time": "2018-12-07T10:05:16", "url": "https://files.pythonhosted.org/packages/68/2a/81e52bfe408c10aa5e8c82aa989ad1d62e0f411aeecb4260853aa093d1d9/single_factor_model-0.1.4-py3-none-any.whl" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "7b8855f90a3c491294186c0c0202d910", "sha256": "4d292482b5d4aaaac8654c2b2e13280a137b5c3d470e4b85b04f7e89268ca473" }, "downloads": -1, "filename": "single_factor_model-0.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "7b8855f90a3c491294186c0c0202d910", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11767, "upload_time": "2018-12-14T02:29:40", "url": "https://files.pythonhosted.org/packages/19/ee/de4f399cd11cbb04c07cbf416fe3e1120c55ce5232c014ce18affad3d856/single_factor_model-0.1.6-py3-none-any.whl" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "a9e3d7362a1da1adc21c54febdec5aac", "sha256": "730d272eb356887b13f16b48a0828fc9652301a390f331481fd9c329db23f4fc" }, "downloads": -1, "filename": "single_factor_model-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "a9e3d7362a1da1adc21c54febdec5aac", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11792, "upload_time": "2018-12-14T07:40:25", "url": "https://files.pythonhosted.org/packages/d1/86/44783b5be41db1032c0fb192c88cf3d3c8307e69d37a85e73aeeb78a7a2f/single_factor_model-0.1.7-py3-none-any.whl" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "616f3ea5703bf2715fceec4bec6de1f2", "sha256": "7f62fd9e24796f620863feb874e4c0c3a530edc1fccaa5a4270581807da663e7" }, "downloads": -1, "filename": "single_factor_model-0.1.8-py3-none-any.whl", "has_sig": false, "md5_digest": "616f3ea5703bf2715fceec4bec6de1f2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 11809, "upload_time": "2018-12-29T08:25:24", "url": "https://files.pythonhosted.org/packages/22/01/a08c1bf570b4a0ed06ed8b9569c5f7e9cfc80e89a2ce8dc487c3a56ea33b/single_factor_model-0.1.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dcf038d575e77c0a28e8d2b5985bff0e", "sha256": "72f0e6c7883674474a3d039daa399f7fb694d3c5686b60e906659310ca71996d" }, "downloads": -1, "filename": "single_factor_model-0.1.8.tar.gz", "has_sig": false, "md5_digest": "dcf038d575e77c0a28e8d2b5985bff0e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9180, "upload_time": "2018-12-29T08:25:26", "url": "https://files.pythonhosted.org/packages/7c/0a/d6d105bb2f0278515ff50ebd11ecb3776a0e764730f1f655364a5dfef933/single_factor_model-0.1.8.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "cb21cb686b5d8a9da00f2a8a5c0b605f", "sha256": "86fda7e5238f333992346552a34a0c057981d1ac4bdd772199cd689afc245832" }, "downloads": -1, "filename": "single_factor_model-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "cb21cb686b5d8a9da00f2a8a5c0b605f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9980, "upload_time": "2019-01-16T07:28:22", "url": "https://files.pythonhosted.org/packages/a8/2d/f4d2bf0a17aee741134dd90dcf9f5b7412d43262aed30d2d4d646d99c4d8/single_factor_model-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "298948cc82defee371a4cec7f617ad05", "sha256": "a2e4bc54a1c5b48a2d3cebaf2de279d65813c6291b6af07186276516c00fdf36" }, "downloads": -1, "filename": "single_factor_model-0.2.0.tar.gz", "has_sig": false, "md5_digest": "298948cc82defee371a4cec7f617ad05", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8219, "upload_time": "2019-01-16T07:28:23", "url": "https://files.pythonhosted.org/packages/b9/d1/66c0eca61762499d1aa35b190211022060ed5c374e227e88a036b36238d9/single_factor_model-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "9ad8ae80b4fc9de9378ebdd999c898fe", "sha256": "669690979be220d0f650ca4a1cfbba7d74537112278a215aca3b4abacb2e3cca" }, "downloads": -1, "filename": "single_factor_model-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "9ad8ae80b4fc9de9378ebdd999c898fe", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9980, "upload_time": "2019-01-17T06:28:48", "url": "https://files.pythonhosted.org/packages/00/34/f2d75f7be7277d15d8f254ad5b9ddba09e8bcbb078f545815275dc099caf/single_factor_model-0.2.1-py3-none-any.whl" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "e2e9366d849f211ea71ee36ef13be4b6", "sha256": "fa356b268233b7982290d85975e4a48bef1fadbbfc7d39ee71865fcefd91ac49" }, "downloads": -1, "filename": "single_factor_model-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e2e9366d849f211ea71ee36ef13be4b6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12064, "upload_time": "2019-01-24T02:43:59", "url": "https://files.pythonhosted.org/packages/4e/08/002213a56e3baaf8cfd30612e4238a9b378dba3bbca8abeccdf0c966ec34/single_factor_model-0.3.0-py3-none-any.whl" } ], "0.3.0a0": [ { "comment_text": "", "digests": { "md5": "a8f800165edace28e8ed5ce447ba7ea7", "sha256": "ec0aa190ead20c26b9c5482fd6009f45b40eb2dadecc57996bf645f0b7181be5" }, "downloads": -1, "filename": "single_factor_model-0.3.0a0.tar.gz", "has_sig": false, "md5_digest": "a8f800165edace28e8ed5ce447ba7ea7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8069, "upload_time": "2019-01-24T01:46:53", "url": "https://files.pythonhosted.org/packages/ca/00/cc9d89157d01401b07493675cd8da13d4e97a5fa4cabdf255e5d8a5d4f00/single_factor_model-0.3.0a0.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "6e33762b5c38527d06dc509c763f4f6d", "sha256": "fd7d50fec54ccb2ca664f230f5ff9e2123460943883c5bcd9a2b6f895e506c4b" }, "downloads": -1, "filename": "single_factor_model-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "6e33762b5c38527d06dc509c763f4f6d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12707, "upload_time": "2019-01-31T07:01:48", "url": "https://files.pythonhosted.org/packages/77/9a/6ae258ca68b533e90d81f58c4d82e5cfecaeae64f4b1b9fb00064eaf079d/single_factor_model-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4be616a5c684bb8faa2bc50cc1543413", "sha256": "2fa46a605861d6d4d93808355c9a95c2d1459b6360e34523187e6c19d3ce94c0" }, "downloads": -1, "filename": "single_factor_model-0.3.2.tar.gz", "has_sig": false, "md5_digest": "4be616a5c684bb8faa2bc50cc1543413", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9374, "upload_time": "2019-02-20T10:26:14", "url": "https://files.pythonhosted.org/packages/d3/75/c71269a2ca5648e9d800de4839db34d603507fbec51d42f7fc738bfe6c3f/single_factor_model-0.3.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6e33762b5c38527d06dc509c763f4f6d", "sha256": "fd7d50fec54ccb2ca664f230f5ff9e2123460943883c5bcd9a2b6f895e506c4b" }, "downloads": -1, "filename": "single_factor_model-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "6e33762b5c38527d06dc509c763f4f6d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12707, "upload_time": "2019-01-31T07:01:48", "url": "https://files.pythonhosted.org/packages/77/9a/6ae258ca68b533e90d81f58c4d82e5cfecaeae64f4b1b9fb00064eaf079d/single_factor_model-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4be616a5c684bb8faa2bc50cc1543413", "sha256": "2fa46a605861d6d4d93808355c9a95c2d1459b6360e34523187e6c19d3ce94c0" }, "downloads": -1, "filename": "single_factor_model-0.3.2.tar.gz", "has_sig": false, "md5_digest": "4be616a5c684bb8faa2bc50cc1543413", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9374, "upload_time": "2019-02-20T10:26:14", "url": "https://files.pythonhosted.org/packages/d3/75/c71269a2ca5648e9d800de4839db34d603507fbec51d42f7fc738bfe6c3f/single_factor_model-0.3.2.tar.gz" } ] }