{"id":3111,"date":"2022-08-21T20:26:57","date_gmt":"2022-08-21T20:26:57","guid":{"rendered":"https:\/\/lucylabs.gatech.edu\/ml4t\/?page_id=3111"},"modified":"2023-01-14T03:47:08","modified_gmt":"2023-01-14T03:47:08","slug":"project-2","status":"publish","type":"page","link":"https:\/\/lucylabs.gatech.edu\/ml4t\/fall2022\/project-2\/","title":{"rendered":"Project 2"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; header_font=&#8221;|700||on|||||&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h1 style=\"text-align: center;\">Project 2: Optimize Something<\/h1>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row use_custom_gutter=&#8221;on&#8221; gutter_width=&#8221;1&#8243; admin_label=&#8221;row&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; background_size=&#8221;initial&#8221; background_position=&#8221;top_left&#8221; background_repeat=&#8221;repeat&#8221; width=&#8221;100%&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_divider color=&#8221;#eeeeee&#8221; divider_position=&#8221;center&#8221; divider_weight=&#8221;3px&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; width=&#8221;25%&#8221; custom_padding=&#8221;30px||30px||true|false&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_divider][et_pb_blurb title=&#8221;Table of Contents&#8221; use_icon=&#8221;on&#8221; font_icon=&#8221;&#x68;||divi||400&#8243; icon_color=&#8221;rgba(0,0,0,0.05)&#8221; icon_placement=&#8221;left&#8221; image_icon_width=&#8221;100px&#8221; content_max_width=&#8221;100%&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; header_level=&#8221;h2&#8243; header_font_size=&#8221;26px&#8221; height=&#8221;38px&#8221; icon_font_size=&#8221;100px&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_blurb][et_pb_blurb title=&#8221;Overview&#8221; use_icon=&#8221;on&#8221; font_icon=&#8221;&#x24;||divi||400&#8243; icon_color=&#8221;#000000&#8243; image_icon_background_color=&#8221;#FFFFFF&#8221; icon_placement=&#8221;left&#8221; image_icon_width=&#8221;16px&#8221; content_max_width=&#8221;100%&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; header_font_size=&#8221;16px&#8221; header_line_height=&#8221;2em&#8221; image_icon_custom_padding=&#8221;8px|8px|8px|8px|false|false&#8221; custom_margin=&#8221;|||118px|false|false&#8221; custom_padding=&#8221;10px|||0px|false|false&#8221; link_option_url=&#8221;#overview&#8221; border_radii_image=&#8221;on|100%|100%|100%|100%&#8221; border_width_all_image=&#8221;2px&#8221; border_color_all_image=&#8221;#000000&#8243; icon_font_size=&#8221;16px&#8221; use_circle=&#8221;on&#8221; use_circle_border=&#8221;on&#8221; circle_border_color=&#8221;#b856c7&#8243; circle_color=&#8221;#FFFFFF&#8221; global_colors_info=&#8221;{}&#8221; font_icon__hover_enabled=&#8221;on|hover&#8221; font_icon__hover=&#8221;%22||divi||400&#8243; custom_padding__hover=&#8221;|||10px|false|false&#8221; custom_padding__hover_enabled=&#8221;on|hover&#8221; image_icon_background_color__sticky_enabled=&#8221;#7EBEC5&#8243; image_icon_background_color__sticky=&#8221;#7EBEC5&#8243;][\/et_pb_blurb][et_pb_blurb title=&#8221;About the Project&#8221; use_icon=&#8221;on&#8221; font_icon=&#8221;&#x24;||divi||400&#8243; icon_color=&#8221;#000000&#8243; image_icon_background_color=&#8221;#FFFFFF&#8221; icon_placement=&#8221;left&#8221; image_icon_width=&#8221;16px&#8221; content_max_width=&#8221;100%&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; header_font_size=&#8221;16px&#8221; header_line_height=&#8221;2em&#8221; image_icon_custom_padding=&#8221;8px|8px|8px|8px|false|false&#8221; custom_margin=&#8221;|||118px|false|false&#8221; custom_padding=&#8221;10px|||0px|false|false&#8221; link_option_url=&#8221;#about&#8221; border_radii_image=&#8221;on|100%|100%|100%|100%&#8221; border_width_all_image=&#8221;2px&#8221; border_color_all_image=&#8221;#000000&#8243; icon_font_size=&#8221;16px&#8221; use_circle=&#8221;on&#8221; use_circle_border=&#8221;on&#8221; circle_border_color=&#8221;#b856c7&#8243; circle_color=&#8221;#FFFFFF&#8221; global_colors_info=&#8221;{}&#8221; font_icon__hover_enabled=&#8221;on|hover&#8221; font_icon__hover=&#8221;%22||divi||400&#8243; custom_padding__hover=&#8221;|||10px|false|false&#8221; custom_padding__hover_enabled=&#8221;on|hover&#8221; image_icon_background_color__sticky_enabled=&#8221;#7EBEC5&#8243; image_icon_background_color__sticky=&#8221;#7EBEC5&#8243;][\/et_pb_blurb][et_pb_blurb title=&#8221;Your Implementation&#8221; use_icon=&#8221;on&#8221; font_icon=&#8221;&#x24;||divi||400&#8243; icon_color=&#8221;#000000&#8243; image_icon_background_color=&#8221;#FFFFFF&#8221; icon_placement=&#8221;left&#8221; image_icon_width=&#8221;16px&#8221; content_max_width=&#8221;100%&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; header_font_size=&#8221;16px&#8221; header_line_height=&#8221;2em&#8221; image_icon_custom_padding=&#8221;8px|8px|8px|8px|false|false&#8221; custom_margin=&#8221;|||118px|false|false&#8221; custom_padding=&#8221;10px|||0px|false|false&#8221; link_option_url=&#8221;#implementation&#8221; border_radii_image=&#8221;on|100%|100%|100%|100%&#8221; border_width_all_image=&#8221;2px&#8221; border_color_all_image=&#8221;#000000&#8243; icon_font_size=&#8221;16px&#8221; use_circle=&#8221;on&#8221; use_circle_border=&#8221;on&#8221; circle_border_color=&#8221;#b856c7&#8243; circle_color=&#8221;#FFFFFF&#8221; global_colors_info=&#8221;{}&#8221; font_icon__hover_enabled=&#8221;on|hover&#8221; font_icon__hover=&#8221;%22||divi||400&#8243; custom_padding__hover=&#8221;|||10px|false|false&#8221; custom_padding__hover_enabled=&#8221;on|hover&#8221; image_icon_background_color__sticky_enabled=&#8221;#7EBEC5&#8243; image_icon_background_color__sticky=&#8221;#7EBEC5&#8243;][\/et_pb_blurb][et_pb_blurb title=&#8221;Contents of Report&#8221; use_icon=&#8221;on&#8221; font_icon=&#8221;&#x24;||divi||400&#8243; icon_color=&#8221;#000000&#8243; image_icon_background_color=&#8221;#FFFFFF&#8221; icon_placement=&#8221;left&#8221; image_icon_width=&#8221;16px&#8221; content_max_width=&#8221;100%&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; header_font_size=&#8221;16px&#8221; header_line_height=&#8221;2em&#8221; image_icon_custom_padding=&#8221;8px|8px|8px|8px|false|false&#8221; custom_margin=&#8221;|||118px|false|false&#8221; custom_padding=&#8221;10px|||0px|false|false&#8221; link_option_url=&#8221;#report&#8221; border_radii_image=&#8221;on|100%|100%|100%|100%&#8221; border_width_all_image=&#8221;2px&#8221; border_color_all_image=&#8221;#000000&#8243; icon_font_size=&#8221;16px&#8221; use_circle=&#8221;on&#8221; use_circle_border=&#8221;on&#8221; circle_border_color=&#8221;#b856c7&#8243; circle_color=&#8221;#FFFFFF&#8221; global_colors_info=&#8221;{}&#8221; font_icon__hover_enabled=&#8221;on|hover&#8221; font_icon__hover=&#8221;%22||divi||400&#8243; custom_padding__hover=&#8221;|||10px|false|false&#8221; custom_padding__hover_enabled=&#8221;on|hover&#8221; image_icon_background_color__sticky_enabled=&#8221;#7EBEC5&#8243; image_icon_background_color__sticky=&#8221;#7EBEC5&#8243;][\/et_pb_blurb][et_pb_blurb title=&#8221;Testing Recommendations&#8221; use_icon=&#8221;on&#8221; font_icon=&#8221;&#x24;||divi||400&#8243; icon_color=&#8221;#000000&#8243; image_icon_background_color=&#8221;#FFFFFF&#8221; icon_placement=&#8221;left&#8221; image_icon_width=&#8221;16px&#8221; content_max_width=&#8221;100%&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; header_font_size=&#8221;16px&#8221; header_line_height=&#8221;2em&#8221; image_icon_custom_padding=&#8221;8px|8px|8px|8px|false|false&#8221; custom_margin=&#8221;|||118px|false|false&#8221; custom_padding=&#8221;10px|||0px|false|false&#8221; link_option_url=&#8221;#testing&#8221; border_radii_image=&#8221;on|100%|100%|100%|100%&#8221; border_width_all_image=&#8221;2px&#8221; border_color_all_image=&#8221;#000000&#8243; icon_font_size=&#8221;16px&#8221; use_circle=&#8221;on&#8221; use_circle_border=&#8221;on&#8221; circle_border_color=&#8221;#b856c7&#8243; circle_color=&#8221;#FFFFFF&#8221; global_colors_info=&#8221;{}&#8221; font_icon__hover_enabled=&#8221;on|hover&#8221; font_icon__hover=&#8221;%22||divi||400&#8243; custom_padding__hover=&#8221;|||10px|false|false&#8221; custom_padding__hover_enabled=&#8221;on|hover&#8221; image_icon_background_color__sticky_enabled=&#8221;#7EBEC5&#8243; image_icon_background_color__sticky=&#8221;#7EBEC5&#8243;][\/et_pb_blurb][et_pb_blurb title=&#8221;Submission Requirements&#8221; use_icon=&#8221;on&#8221; font_icon=&#8221;&#x24;||divi||400&#8243; icon_color=&#8221;#000000&#8243; image_icon_background_color=&#8221;#FFFFFF&#8221; icon_placement=&#8221;left&#8221; image_icon_width=&#8221;16px&#8221; content_max_width=&#8221;100%&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; header_font_size=&#8221;16px&#8221; header_line_height=&#8221;2em&#8221; image_icon_custom_padding=&#8221;8px|8px|8px|8px|false|false&#8221; custom_margin=&#8221;|||118px|false|false&#8221; custom_padding=&#8221;10px|||0px|false|false&#8221; link_option_url=&#8221;#submission&#8221; border_radii_image=&#8221;on|100%|100%|100%|100%&#8221; border_width_all_image=&#8221;2px&#8221; border_color_all_image=&#8221;#000000&#8243; icon_font_size=&#8221;16px&#8221; use_circle=&#8221;on&#8221; use_circle_border=&#8221;on&#8221; circle_border_color=&#8221;#b856c7&#8243; circle_color=&#8221;#FFFFFF&#8221; global_colors_info=&#8221;{}&#8221; font_icon__hover_enabled=&#8221;on|hover&#8221; font_icon__hover=&#8221;%22||divi||400&#8243; custom_padding__hover=&#8221;|||10px|false|false&#8221; custom_padding__hover_enabled=&#8221;on|hover&#8221; image_icon_background_color__sticky_enabled=&#8221;#7EBEC5&#8243; image_icon_background_color__sticky=&#8221;#7EBEC5&#8243;][\/et_pb_blurb][et_pb_blurb title=&#8221;Grading Information&#8221; use_icon=&#8221;on&#8221; font_icon=&#8221;&#x24;||divi||400&#8243; icon_color=&#8221;#000000&#8243; image_icon_background_color=&#8221;#FFFFFF&#8221; icon_placement=&#8221;left&#8221; image_icon_width=&#8221;16px&#8221; content_max_width=&#8221;100%&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; header_font_size=&#8221;16px&#8221; header_line_height=&#8221;2em&#8221; image_icon_custom_padding=&#8221;8px|8px|8px|8px|false|false&#8221; custom_margin=&#8221;|||118px|false|false&#8221; custom_padding=&#8221;10px|||0px|false|false&#8221; link_option_url=&#8221;#grading&#8221; border_radii_image=&#8221;on|100%|100%|100%|100%&#8221; border_width_all_image=&#8221;2px&#8221; border_color_all_image=&#8221;#000000&#8243; icon_font_size=&#8221;16px&#8221; use_circle=&#8221;on&#8221; use_circle_border=&#8221;on&#8221; circle_border_color=&#8221;#b856c7&#8243; circle_color=&#8221;#FFFFFF&#8221; global_colors_info=&#8221;{}&#8221; font_icon__hover_enabled=&#8221;on|hover&#8221; font_icon__hover=&#8221;%22||divi||400&#8243; custom_padding__hover=&#8221;|||10px|false|false&#8221; custom_padding__hover_enabled=&#8221;on|hover&#8221; image_icon_background_color__sticky_enabled=&#8221;#7EBEC5&#8243; image_icon_background_color__sticky=&#8221;#7EBEC5&#8243;][\/et_pb_blurb][et_pb_blurb title=&#8221;Development Guidelines&#8221; use_icon=&#8221;on&#8221; font_icon=&#8221;&#x24;||divi||400&#8243; icon_color=&#8221;#000000&#8243; image_icon_background_color=&#8221;#FFFFFF&#8221; icon_placement=&#8221;left&#8221; image_icon_width=&#8221;16px&#8221; content_max_width=&#8221;100%&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; header_font_size=&#8221;16px&#8221; header_line_height=&#8221;2em&#8221; image_icon_custom_padding=&#8221;8px|8px|8px|8px|false|false&#8221; custom_margin=&#8221;|||118px|false|false&#8221; custom_padding=&#8221;10px|||0px|false|false&#8221; link_option_url=&#8221;#guidelines&#8221; border_radii_image=&#8221;on|100%|100%|100%|100%&#8221; border_width_all_image=&#8221;2px&#8221; border_color_all_image=&#8221;#000000&#8243; icon_font_size=&#8221;16px&#8221; use_circle=&#8221;on&#8221; use_circle_border=&#8221;on&#8221; circle_border_color=&#8221;#b856c7&#8243; circle_color=&#8221;#FFFFFF&#8221; global_colors_info=&#8221;{}&#8221; font_icon__hover_enabled=&#8221;on|hover&#8221; font_icon__hover=&#8221;%22||divi||400&#8243; custom_padding__hover=&#8221;|||10px|false|false&#8221; custom_padding__hover_enabled=&#8221;on|hover&#8221; image_icon_background_color__sticky_enabled=&#8221;#7EBEC5&#8243; image_icon_background_color__sticky=&#8221;#7EBEC5&#8243;][\/et_pb_blurb][et_pb_blurb title=&#8221;Optional Resources&#8221; use_icon=&#8221;on&#8221; font_icon=&#8221;&#x24;||divi||400&#8243; icon_color=&#8221;#000000&#8243; image_icon_background_color=&#8221;#FFFFFF&#8221; icon_placement=&#8221;left&#8221; image_icon_width=&#8221;16px&#8221; content_max_width=&#8221;100%&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; header_font_size=&#8221;16px&#8221; header_line_height=&#8221;2em&#8221; image_icon_custom_padding=&#8221;8px|8px|8px|8px|false|false&#8221; custom_margin=&#8221;|||118px|false|false&#8221; custom_padding=&#8221;10px|||0px|false|false&#8221; link_option_url=&#8221;#optional&#8221; border_radii_image=&#8221;on|100%|100%|100%|100%&#8221; border_width_all_image=&#8221;2px&#8221; border_color_all_image=&#8221;#000000&#8243; icon_font_size=&#8221;16px&#8221; use_circle=&#8221;on&#8221; use_circle_border=&#8221;on&#8221; circle_border_color=&#8221;#b856c7&#8243; circle_color=&#8221;#FFFFFF&#8221; global_colors_info=&#8221;{}&#8221; font_icon__hover_enabled=&#8221;on|hover&#8221; font_icon__hover=&#8221;%22||divi||400&#8243; custom_padding__hover=&#8221;|||10px|false|false&#8221; custom_padding__hover_enabled=&#8221;on|hover&#8221; image_icon_background_color__sticky_enabled=&#8221;#7EBEC5&#8243; image_icon_background_color__sticky=&#8221;#7EBEC5&#8243;][\/et_pb_blurb][et_pb_divider color=&#8221;#eeeeee&#8221; divider_position=&#8221;center&#8221; divider_weight=&#8221;3px&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; width=&#8221;25%&#8221; custom_padding=&#8221;30px||30px||true|false&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_divider][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2>Revisions<\/h2>\n<p><span>This assignment is subject to change up until 3 weeks prior to the due date. We do not anticipate changes; any changes will be logged in this section.<\/span><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row module_id=&#8221;overview&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2>1. Overview<\/h2>\n<p><span data-contrast=\"auto\" xml:lang=\"EN-US\" lang=\"EN-US\" class=\"TextRun SCXW27378828 BCX4\"><span class=\"NormalTextRun SCXW27378828 BCX4\">In this project, you will write software that evaluates and prepares portfolio metrics. <\/span><span class=\"NormalTextRun SCXW27378828 BCX4\">You will submit the code for the project<\/span><span class=\"NormalTextRun SCXW27378828 BCX4\"> to<\/span><span class=\"NormalTextRun SCXW27378828 BCX4\"> <\/span><span class=\"NormalTextRun SpellingErrorV2 SCXW27378828 BCX4\">Gradescope<\/span><span class=\"NormalTextRun SCXW27378828 BCX4\"> SUBMISSION. <\/span><span class=\"NormalTextRun SCXW27378828 BCX4\">You will also submit to Canvas a chart as a 1-page report that compares two normalized portfolios.<\/span><\/span><span class=\"EOP SCXW27378828 BCX4\" data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h3>1.1 Learning Objectives<\/h3>\n<p><span data-contrast=\"auto\">The specific learning objectives for this assignment are focused on the following areas:<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<ul>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Portfolio Analysis Metrics<\/span><\/b><span data-contrast=\"auto\">: Implement several metrics that are used in assessing the performance of a portfolio.<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"2\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Optimization<\/span><\/b><span data-contrast=\"auto\">: Learn how to use the SciPy optimization function to determine the stock allocations in a portfolio that maximize a specific portfolio metric.<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"3\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Programming<\/span><\/b><span data-contrast=\"auto\">: Each assignment will build upon one another. The techniques around portfolios, metrics, and optimization will play important roles in future projects.\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"4\" data-aria-level=\"1\"><b><span data-contrast=\"auto\">Course Conduct<\/span><\/b><span data-contrast=\"auto\">: Developing and testing code locally in the local Conda ml4t environment, submitting it for pre-validation in the Gradescope TESTING environment, and submitting it for grading in the Gradescope SUBMISSION environment.<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<\/ul>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row module_id=&#8221;about&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2><span data-contrast=\"auto\" xml:lang=\"EN-US\" lang=\"EN-US\" class=\"TextRun SCXW163247658 BCX4\"><span class=\"NormalTextRun SCXW163247658 BCX4\">2. About the Project<\/span><\/span><span class=\"EOP SCXW163247658 BCX4\" data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\"><\/span><\/h2>\n<p><span data-contrast=\"auto\" xml:lang=\"EN-US\" lang=\"EN-US\" class=\"TextRun SCXW20719311 BCX4\"><span class=\"NormalTextRun SCXW20719311 BCX4\">Revise the optimization.py code to return several portfolio statistics: stock allocations (<\/span><span class=\"NormalTextRun SpellingErrorV2 SCXW20719311 BCX4\">allocs<\/span><span class=\"NormalTextRun SCXW20719311 BCX4\">), cumulative return (<\/span><span class=\"NormalTextRun SpellingErrorV2 SCXW20719311 BCX4\">cr<\/span><span class=\"NormalTextRun SCXW20719311 BCX4\">), average daily return (<\/span><span class=\"NormalTextRun SpellingErrorV2 SCXW20719311 BCX4\">adr<\/span><span class=\"NormalTextRun SCXW20719311 BCX4\">), standard deviation of daily returns (<\/span><span class=\"NormalTextRun SpellingErrorV2 SCXW20719311 BCX4\">sddr<\/span><span class=\"NormalTextRun SCXW20719311 BCX4\">), and Sharpe ratio (<\/span><span class=\"NormalTextRun SpellingErrorV2 SCXW20719311 BCX4\">sr<\/span><span class=\"NormalTextRun SCXW20719311 BCX4\">). This project builds upon what you learned about portfolio performance metrics and optimizers to optimize a portfolio. That means that you will find how much of a portfolio\u2019s funds should be allocated to each stock to optimize its performance. While a portfolio can be optimized for many different metrics, in this version of the assignment we will maximize the Sharpe Ratio. You will <\/span><span class=\"NormalTextRun SCXW20719311 BCX4\">also <\/span><span class=\"NormalTextRun SCXW20719311 BCX4\">use the data cleansing techniques introduced in the course lectures.<\/span><\/span><span class=\"EOP SCXW20719311 BCX4\" data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span> <\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row module_id=&#8221;implementation&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.17.4&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2>3. Your Implementation<\/h2>\n<p><span data-contrast=\"auto\" xml:lang=\"EN-US\" lang=\"EN-US\" class=\"TextRun SCXW28839308 BCX4\"><span class=\"NormalTextRun SCXW28839308 BCX4\">Revise the code to implement a Python function named <\/span><span class=\"NormalTextRun SpellingErrorV2 SCXW28839308 BCX4\">optimize_<\/span><span class=\"NormalTextRun SpellingErrorV2 SCXW28839308 BCX4\">portfolio<\/span><span class=\"NormalTextRun SCXW28839308 BCX4\">(<\/span><span class=\"NormalTextRun SCXW28839308 BCX4\">) in the file optimization.py that can find the optimal allocations for a given set of stocks. You should optimize for maximum Sharpe Ratio taking long positions only. <\/span><span class=\"NormalTextRun SCXW28839308 BCX4\">Once the code is complete, <\/span><span class=\"NormalTextRun SCXW28839308 BCX4\">include your chart in a report<\/span><span class=\"NormalTextRun SCXW28839308 BCX4\">. Before the deadline, make sure to pre-validate your submission using <\/span><span class=\"NormalTextRun SpellingErrorV2 SCXW28839308 BCX4\">Gradescope<\/span><span class=\"NormalTextRun SCXW28839308 BCX4\"> TESTING. Once you are satisfied with the results in testing, submit the code to <\/span><span class=\"NormalTextRun SpellingErrorV2 SpellingErrorHighlight SCXW28839308 BCX4\">Gradescope<\/span><span class=\"NormalTextRun SCXW28839308 BCX4\"> SUBMISSION. <\/span><\/span><span data-contrast=\"auto\" xml:lang=\"EN-US\" lang=\"EN-US\" class=\"TextRun SCXW28839308 BCX4\"><span class=\"NormalTextRun SCXW28839308 BCX4\">Only code submitted to <\/span><span class=\"NormalTextRun SpellingErrorV2 SCXW28839308 BCX4\">Gradescope<\/span><span class=\"NormalTextRun SCXW28839308 BCX4\"> SUBMISSION will be graded<\/span><span class=\"NormalTextRun SCXW28839308 BCX4\">.<\/span><strong><span class=\"NormalTextRun SCXW28839308 BCX4\"> If you submit your code to <\/span><span class=\"NormalTextRun SpellingErrorV2 SCXW28839308 BCX4\">Gradescope<\/span><span class=\"NormalTextRun SCXW28839308 BCX4\"> TESTING and have not also <\/span><span class=\"NormalTextRun SCXW28839308 BCX4\">submitted your code to <\/span><span class=\"NormalTextRun SpellingErrorV2 SCXW28839308 BCX4\">Gradescope<\/span><span class=\"NormalTextRun SCXW28839308 BCX4\"> <\/span><span class=\"NormalTextRun SCXW28839308 BCX4\">SUBMISSION, you will receive a zero (0).<\/span><\/strong><\/span><strong><span class=\"EOP SCXW28839308 BCX4\" data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/strong><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h3>3.1 Getting Started<\/h3>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.19.4&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; hover_enabled=&#8221;0&#8243; global_colors_info=&#8221;{}&#8221; sticky_enabled=&#8221;0&#8243;]<\/p>\n<p><span data-contrast=\"auto\" xml:lang=\"EN-US\" lang=\"EN-US\" class=\"TextRun SCXW230279372 BCX4\"><span class=\"NormalTextRun SCXW230279372 BCX4\">To make <\/span><span class=\"NormalTextRun SpellingErrorV2 SCXW230279372 BCX4\">i<\/span><span class=\"NormalTextRun SCXW230279372 BCX4\">t easier to get started on the project and focus on the concepts involved, you will be given a starter framework. This framework assumes you have already set up the <\/span><\/span><a class=\"Hyperlink SCXW230279372 BCX4\" href=\"https:\/\/lucylabs.gatech.edu\/ml4t\/fall2022\/local-environment\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span data-contrast=\"none\" xml:lang=\"EN-US\" lang=\"EN-US\" class=\"TextRun SCXW230279372 BCX4\"><span class=\"NormalTextRun SCXW230279372 BCX4\" data-ccp-charstyle=\"Hyperlink\">local environment<\/span><\/span><\/a><span data-contrast=\"auto\" xml:lang=\"EN-US\" lang=\"EN-US\" class=\"TextRun SCXW230279372 BCX4\"><span class=\"NormalTextRun SCXW230279372 BCX4\"> and <\/span><\/span><a class=\"Hyperlink SCXW230279372 BCX4\" href=\"https:\/\/lucylabs.gatech.edu\/ml4t\/fall2022\/software-setup\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span data-contrast=\"none\" xml:lang=\"EN-US\" lang=\"EN-US\" class=\"TextRun SCXW230279372 BCX4\"><span class=\"NormalTextRun SCXW230279372 BCX4\" data-ccp-charstyle=\"Hyperlink\">ML4T Software<\/span><\/span><\/a><span data-contrast=\"auto\" xml:lang=\"EN-US\" lang=\"EN-US\" class=\"TextRun SCXW230279372 BCX4\"><span class=\"NormalTextRun SCXW230279372 BCX4\">. <\/span><span class=\"NormalTextRun SCXW230279372 BCX4\">\u202fThe framework for Project <\/span><span class=\"NormalTextRun SCXW230279372 BCX4\">2<\/span><span class=\"NormalTextRun SCXW230279372 BCX4\"> can be obtained from:\u202f<\/span><\/span><a class=\"Hyperlink SCXW230279372 BCX4\" href=\"https:\/\/www.dropbox.com\/s\/grq5e2iqkk1hmj7\/optimize_something_2023Spr.zip?dl=1\" target=\"_blank\" rel=\"noopener noreferrer\">Optimize_Something_2022Fall.zip<\/a><span data-contrast=\"auto\" xml:lang=\"EN-US\" lang=\"EN-US\" class=\"TextRun SCXW230279372 BCX4\"><span class=\"NormalTextRun SCXW230279372 BCX4\">.\u202f<\/span><\/span><span class=\"EOP SCXW230279372 BCX4\" data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\" xml:lang=\"EN-US\" lang=\"EN-US\" class=\"TextRun SCXW248140167 BCX4\"><span class=\"NormalTextRun SCXW248140167 BCX4\">Extract its contents into the base directory (e.g., ML4T_2022Fall). This will add a new folder called \u201c<\/span><span class=\"NormalTextRun SpellingErrorV2 SpellingErrorHighlight SCXW248140167 BCX4\">optimize_something<\/span><span class=\"NormalTextRun SCXW248140167 BCX4\">\u201d to the directory structure.\u202f<\/span><\/span><span class=\"EOP SCXW248140167 BCX4\" data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;http:\/\/lucylabs.gatech.edu\/ml4t\/wp-content\/uploads\/2021\/08\/p2_optimize_something_file_structure.png&#8221; title_text=&#8221;p2_optimize_something_file_structure&#8221; admin_label=&#8221;Image&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;da784c99-9684-4a93-9ada-0d6c51279d65&#8243; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span data-contrast=\"auto\">Within the optimize_something folder are two files:\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<ul>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">optimization.py<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">grade_optimization.py<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<\/ul>\n<p><span data-contrast=\"auto\">You will modify the optimization.py file to implement the necessary functionality for this assignment. You must implement the optimize_portfolio() function. The existing code in the optimization.py file is best thought of as \u201cstub\u201d or \u201cstarter\u201d code that may contain ideas for functions and methods that might be used in your implementation. This file must remain and run from within the optimize_something directory using the following command:<\/span><\/p>\n<p>[\/et_pb_text][et_pb_code _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<script src=\"https:\/\/gist.github.com\/CS7646-ML4T\/63692242c9d688566fb3f4455bfd67d6.js\"><\/script>[\/et_pb_code][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span data-contrast=\"auto\">The grade_optimization.py file is discussed in the Testing Recommendations section below.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p><i><span data-contrast=\"auto\">Note: You can leverage the functions in the now deprecated (no longer assigned) <\/span><\/i><a href=\"https:\/\/www.dropbox.com\/s\/ouifx3kqb2g5k4y\/assess_portfolio_2022Fall.zip?dl=1\" target=\"_blank\" rel=\"noopener\"><i><span data-contrast=\"none\">assess portfolio<\/span><\/i><\/a><i><span data-contrast=\"auto\"> project that assessed the value of a portfolio with a given set of allocations. This is given only as a potential tool to use while completing the project to ensure you have your portfolio statistic calculations correct. Note that this code was written for Python 2.7 and may need to be updated to run with Python 3.6.<\/span><\/i><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h3><span data-contrast=\"auto\" xml:lang=\"EN-US\" lang=\"EN-US\" class=\"TextRun SCXW13267122 BCX4\"><span class=\"NormalTextRun SCXW13267122 BCX4\">3.2\u00a0<\/span><\/span><b><span data-contrast=\"none\">Implement the optimize_portfolio function\u00a0<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559738&quot;:170,&quot;335559739&quot;:170,&quot;335559740&quot;:340,&quot;469777462&quot;:[360],&quot;469777927&quot;:[0],&quot;469777928&quot;:[8]}\">\u00a0<\/span><\/h3>\n<p><span data-contrast=\"auto\">The function should accept as input a list of symbols as well as start and end dates and <\/span><b><span data-contrast=\"auto\">return a list of floats as a one-dimensional Numpy array<\/span><\/b><span data-contrast=\"auto\"> that represents the allocations to each of the equities. You can take advantage of routines developed in the optional assess portfolio (see note under Starter Code) project to compute daily portfolio value and statistics, and then by using cut-and-paste to move the code from the project for the necessary functions into optimization.py.\u00a0 Otherwise, you will need to create the functions within optimization.py.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">You are given the following inputs for optimizing a portfolio:\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<ul>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">A date range to select the historical data to use (specified by a start and end date)\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">Symbols for equities (e.g., GOOG, AAPL, GLD, XOM). Note: You should support any symbol in the data directory. Your code should support any number of assets &gt;= 2. Do not hardcode a specific number (e.g., 4) as the number of assets.\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<\/ul>\n<p><span data-contrast=\"auto\">Your goal is to find allocations to the symbols that optimize the criterion given above. Assume 252 trading days in a year and a risk-free return of 0.0 per day.\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">You will produce a single chart, as a .png file called \u201cFigure1.png\u201d, comparing the optimal normalized portfolio with SPY using the following portfolio parameters:\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<ul>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">Start Date: 2008-06-01, End Date: 2009-06-01, Symbols: [\u2018IBM\u2019, \u2018X\u2019, \u2018GLD\u2019, \u2018JPM\u2019].\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<\/ul>\n<p><span data-contrast=\"auto\">While four (4) symbols are used in the portfolio associated with Figure 1, the implementation must be robust enough to handle any number of symbols.\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">The chart must be correct, be properly titled, have appropriate axis labels, use consistent axis ranges, and have legends. You should use python\u2019s Matplotlib library.\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">The implementation will be evaluated using 10 test cases that will validate that the sum of the allocations to 1.0 (with a -\/+ 0.02 tolerance), the individual allocations range from 0.0 to 1.0 (with a -\/+ 0.02 tolerance), and that the standard deviation is correct (within 5% of the reference implementation).<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h4>3.2.1\u00a0Example<span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340,&quot;469777462&quot;:[518],&quot;469777927&quot;:[0],&quot;469777928&quot;:[8]}\">\u00a0<\/span><\/h4>\n<p>&nbsp;<\/p>\n<p>[\/et_pb_text][et_pb_code _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<script src=\"https:\/\/gist.github.com\/CS7646-ML4T\/76b9bc8624582bd24f140fea3f8ba5b2.js\"><\/script>[\/et_pb_code][et_pb_text _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span data-contrast=\"auto\">Where the returned output is:<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<ul>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">allocs: A 1-d NumPy NDArray of allocations to the stocks. All the allocations must be between 0.0 and 1.0 and they must sum to 1.0. Some of the allocations may be 0.\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">cr: Cumulative return\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span data-contrast=\"auto\">adr: Average daily return\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"4\" data-aria-level=\"1\"><span data-contrast=\"auto\">sddr: Standard deviation of daily return\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"4\" data-aria-level=\"1\"><span data-contrast=\"auto\">sr: Sharpe ratio\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<\/ul>\n<ul><\/ul>\n<p><span data-contrast=\"auto\">The input parameters are:\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<ul>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">sd: A DateTime object that represents the start date\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span data-contrast=\"auto\">ed: A DateTime object that represents the end date\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"4\" data-aria-level=\"1\"><span data-contrast=\"auto\">syms: A list of symbols that make up the portfolio (note that your code should support any symbol in the data directory)\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"4\" data-aria-level=\"1\"><span data-contrast=\"auto\">gen_plot: When gen_plot=True the implementation must generate and save the chart (as a .png file) that is found in your report. The Autograder will call your code with gen_plot=False (when conducting the performance tests) and gen_plot=True (when generating the chart found in your report).<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<\/ul>\n<ul><\/ul>\n<p><span data-contrast=\"auto\">An example chart that you might create for assessing your optimizer.\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;http:\/\/lucylabs.gatech.edu\/ml4t\/wp-content\/uploads\/2021\/08\/p2_optimize_chart.png&#8221; title_text=&#8221;p2_optimize_chart&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;da784c99-9684-4a93-9ada-0d6c51279d65&#8243; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text admin_label=&#8221;Text&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h4>3.2.2 Suggestions<\/h4>\n<ul>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">Refer to comments in the provided helper code for pointers regarding how to implement the SciPy minimize function. In order to specify bounds and constraints when using the scipy.optmize module, you\u2019ll need to use a special syntax explained here: <\/span><a href=\"http:\/\/docs.scipy.org\/doc\/scipy\/reference\/generated\/scipy.optimize.minimize.html\"><span data-contrast=\"none\">http:\/\/docs.scipy.org\/doc\/scipy\/reference\/generated\/scipy.optimize.minimize.html<\/span><\/a><span data-contrast=\"auto\">\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span data-contrast=\"auto\">For bounds, you simply need to pass in a sequence of 2-tuples (&lt;low&gt;, &lt;high&gt;). Just remember that you need to supply as many tuples as the number of stocks in your portfolio.<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span data-contrast=\"auto\">For constraints, it\u2019s a little tricky. You need to pass in a sequence of dicts (dictionaries), one dictionary per constraint. Each dictionary must specify the type of constraint (&#8216;eq&#8217; for equality, or &#8216;ineq&#8217; for inequality), and a function that returns 0 only when the input satisfies the constraint (this is the same input that is supplied to your evaluation function). E.g. to constrain the sum of all values in the input array to be less than 50, you could pass in the following (lambdas are just anonymous functions defined on-the-spot):<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<\/ul>\n<p style=\"padding-left: 80px;\"><span data-contrast=\"auto\">constraints = ({ &#8216;type&#8217;: &#8216;ineq&#8217;, &#8216;fun&#8217;: lambda inputs: 50.0 &#8211; np.sum(inputs) })<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:720,&quot;335559737&quot;:720,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p style=\"padding-left: 80px;\"><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:720,&quot;335559737&quot;:720,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\"><\/span><\/p>\n<ul>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">Use a uniform allocation of 1\/n to each of the n assets as your initial guess.<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<\/ul>\n<p>[\/et_pb_text][et_pb_text admin_label=&#8221;Text&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h3>3.3 Technical Requirements<\/h3>\n<p><span data-contrast=\"auto\">The following technical requirements apply to this assignment<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<ol>\n<li data-leveltext=\"%1.\" data-font=\"\" data-listid=\"23\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">The optimization.py file must implement this <\/span><a href=\"https:\/\/lucylabs.gatech.edu\/ml4t\/fall2022\/project-2-documentation\/\" target=\"_blank\" rel=\"noopener\"><span data-contrast=\"none\">API specification<\/span><\/a><span data-contrast=\"auto\"> (including the default arguments).<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"%1.\" data-font=\"\" data-listid=\"23\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">Use only the functions provided in the util.py file for reading historical stock data provided in the\u00a0 ..\/data folder. Do NOT modify, copy, or move the util.py file or its functions.\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"%1.\" data-font=\"\" data-listid=\"23\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">Your code must run in less than 5 seconds per test case in the university-provided Gradescope SUBMISSION environment.\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"%1.\" data-font=\"\" data-listid=\"23\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">A random seed may not be set for this assignment.\u00a0\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><span data-contrast=\"auto\"><\/span><\/li>\n<li data-leveltext=\"%1.\" data-font=\"\" data-listid=\"23\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">Watermarked Charts (i.e., where the GT Username appears over the lines) can be shared in the designated pinned (e.g., \u201cProject 2- Student Charts\u201d) thread alone. Charts presented in reports or submitted for grading must not contain watermarks.<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><span data-contrast=\"auto\"><\/span><\/li>\n<li data-leveltext=\"%1.\" data-font=\"\" data-listid=\"23\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">You must never directly use (or indirectly use via a util.py function) Matplotlib\u2019s plot.show function in the Gradescope environment. While you may test locally with this function, a deduction will be applied if it is used in the code submitted for grading.<\/span><\/li>\n<\/ol>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row module_id=&#8221;report&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text module_id=&#8221;report&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2>4\u00a0CONTENTS OF The REPORT<\/h2>\n<p><span data-contrast=\"auto\" xml:lang=\"EN-US\" lang=\"EN-US\" class=\"TextRun SCXW145972324 BCX4\"><span class=\"NormalTextRun SCXW145972324 BCX4\">In addition to submitting your <\/span><span class=\"NormalTextRun SCXW145972324 BCX4\">code<\/span><span class=\"NormalTextRun SCXW145972324 BCX4\"> to <\/span><span class=\"NormalTextRun SpellingErrorV2 SCXW145972324 BCX4\">Gradescope<\/span><span class=\"NormalTextRun SCXW145972324 BCX4\">, you will also <\/span><span class=\"NormalTextRun SCXW145972324 BCX4\">produce a <\/span><span class=\"NormalTextRun SCXW145972324 BCX4\">report <\/span><span class=\"NormalTextRun SCXW145972324 BCX4\">that<\/span><span class=\"NormalTextRun SCXW145972324 BCX4\"> will consist of a single page that contains the chart generated by your implementation. The charts must be generated by the code and saved <\/span><span class=\"NormalTextRun SCXW145972324 BCX4\">by the code <\/span><span class=\"NormalTextRun SCXW145972324 BCX4\">to a file. <\/span><span class=\"NormalTextRun SCXW145972324 BCX4\">The chart <\/span><span class=\"NormalTextRun SCXW145972324 BCX4\">can be imported (without additional post-processing) into the report document. The chart will be evaluated on its correctness (i.e., shape, scale, range, normalize<\/span><span class=\"NormalTextRun SCXW145972324 BCX4\">d<\/span><span class=\"NormalTextRun SCXW145972324 BCX4\"> lines, current number of lines) and textual completeness (i.e., appropriate title, legends, axis labels). All textual elements must be readable and non-overlapping.\u00a0<\/span><span class=\"NormalTextRun SCXW145972324 BCX4\">\u00a0<\/span><\/span><span class=\"EOP SCXW145972324 BCX4\" data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row module_id=&#8221;testing&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2>5\u00a0TESTING RECOMMENDATIONS<\/h2>\n<p><span data-contrast=\"auto\" xml:lang=\"EN-US\" lang=\"EN-US\" class=\"TextRun SCXW7185333 BCX4\"><span class=\"NormalTextRun SCXW7185333 BCX4\">To test your code, we will call the <\/span><span class=\"NormalTextRun SpellingErrorV2 SCXW7185333 BCX4\">optimize_<\/span><span class=\"NormalTextRun SpellingErrorV2 SCXW7185333 BCX4\">portfolio<\/span><span class=\"NormalTextRun SCXW7185333 BCX4\">(<\/span><span class=\"NormalTextRun SCXW7185333 BCX4\">) function only. You are encouraged to perform any tests necessary to build confidence that the code will run properly when submitted for grading and will produce the required results. To run and test that the file will run from within the <\/span><span class=\"NormalTextRun SpellingErrorV2 SCXW7185333 BCX4\">optimize_something<\/span><span class=\"NormalTextRun SCXW7185333 BCX4\"> directory, use the command given <\/span><span class=\"NormalTextRun SCXW7185333 BCX4\">below<\/span><span class=\"NormalTextRun SCXW7185333 BCX4\"> at the command prompt from within the <\/span><span class=\"NormalTextRun SpellingErrorV2 SCXW7185333 BCX4\">optimize_something<\/span><span class=\"NormalTextRun SCXW7185333 BCX4\"> directory:<\/span><\/span><span class=\"EOP SCXW7185333 BCX4\" data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p>[\/et_pb_text][et_pb_code _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<script src=\"https:\/\/gist.github.com\/CS7646-ML4T\/3d225e9b8ee32977856a816900aa765d.js\"><\/script>[\/et_pb_code][et_pb_text _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><span data-contrast=\"auto\" xml:lang=\"EN-US\" lang=\"EN-US\" class=\"TextRun SCXW266487750 BCX4\"><span class=\"NormalTextRun SCXW266487750 BCX4\">Additionally, we provide the grade_optimization.py file that can be used for <\/span><span class=\"NormalTextRun SCXW266487750 BCX4\">lightweight testing<\/span><span class=\"NormalTextRun SCXW266487750 BCX4\">.<\/span><span class=\"NormalTextRun SCXW266487750 BCX4\"> <\/span><span class=\"NormalTextRun SCXW266487750 BCX4\">This<\/span><span class=\"NormalTextRun SCXW266487750 BCX4\"> local grading\/pre-validation script<\/span><span class=\"NormalTextRun SCXW266487750 BCX4\"> is the same script that will be run when the code is submitted to <\/span><span class=\"NormalTextRun SpellingErrorV2 SCXW266487750 BCX4\">GradeScope<\/span><span class=\"NormalTextRun SCXW266487750 BCX4\"> TESTING. To run and test that the file will run from within the <\/span><span class=\"NormalTextRun SpellingErrorV2 SCXW266487750 BCX4\">optimize_something<\/span><span class=\"NormalTextRun SCXW266487750 BCX4\"> directory, use the command:<\/span><\/span><span class=\"EOP SCXW266487750 BCX4\" data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p>[\/et_pb_text][et_pb_code _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<script src=\"https:\/\/gist.github.com\/CS7646-ML4T\/55f33cc47a92ebff19ca3c1487903c5b.js\"><\/script>[\/et_pb_code][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>I<span data-contrast=\"auto\">n addition to testing on your local machine, you are encouraged to submit your files to Gradescope TESTING, where some basic pre-validation tests will be performed against the code. No credit will be given for coding assignments that do not pass this pre-validation. While you may see a result like the image below, <\/span><b><span data-contrast=\"auto\">Gradescope TESTING does not grade your assignment.<\/span><\/b><span data-contrast=\"auto\"> The Gradescope TESTING script is not a complete test suite and does not match the more stringent private grader that is used in Gradescope SUBMISSION. Thus, the maximum Gradescope TESTING score of 64, while instructional, does not represent the minimum score one can expect when the assignment is graded using the private grading script. You are encouraged to develop additional tests to ensure that all project requirements are met.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">You are allowed <\/span><b><span data-contrast=\"auto\">unlimited<\/span><\/b><span data-contrast=\"auto\"> resubmissions to Gradescope <\/span><b><span data-contrast=\"auto\">TESTING<\/span><\/b><span data-contrast=\"auto\">. Please refer to the <\/span><a href=\"https:\/\/lucylabs.gatech.edu\/ml4t\/fall2022\/gradescope\/\" target=\"_blank\" rel=\"noopener\"><span data-contrast=\"none\">Gradescope Instructions<\/span><\/a><span data-contrast=\"auto\"> for more information.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;http:\/\/lucylabs.gatech.edu\/ml4t\/wp-content\/uploads\/2021\/08\/p2_gradescope.png&#8221; title_text=&#8221;p2_gradescope&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;da784c99-9684-4a93-9ada-0d6c51279d65&#8243; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row module_id=&#8221;submission&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2>6\u00a0SUBMISSION REQUIREMENTS<\/h2>\n<p><b><span data-contrast=\"auto\">This is an individual assignment<\/span><\/b><span data-contrast=\"auto\">. All work you submit should be your own. Make sure to cite any sources you reference and use quotes and in-line citations to mark any direct quotes.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p><span>Assignment due dates in your time zone can be found by looking at the<\/span><span> Project in the Assignment menu item in Canvas (ensure your Canvas time zone settings are set up properly).\u00a0<\/span> <span>This date <\/span><span>is 23:59 AOE <\/span><span>converted to <\/span><span>your time zone.\u00a0 <\/span><span>Late submissions are allowed for a penalty.\u00a0 The times and penalties are as follows:<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<ul>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"2\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span>-10% Late Penalty: +1 Hour late: submitted by 00:59 AOE (next day)<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"2\" aria-setsize=\"-1\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span>-25% Late Penalty: +12 Hours Late: submitted by 11:59 AOE (next day)<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"2\" aria-setsize=\"-1\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span>-50% Late Penalty: +24 Hours Late: submitted by 23:59 AOE (next day)<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"2\" aria-setsize=\"-1\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span>-100% Late Penalty: &gt; 24+ Late: submitted after 23:59 AOE (next day)<\/span><span>\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<\/ul>\n<ul><\/ul>\n<p><span data-contrast=\"auto\">Assignments received after Monday at 23:59 AOE (even if only by a few seconds) are not accepted without advanced agreement except in cases of medical or family emergencies. In the case of such an emergency, please contact the <\/span><a href=\"https:\/\/gatech-advocate.symplicity.com\/care_report\/index.php\/pid986879?\" target=\"_blank\" rel=\"noopener\"><span data-contrast=\"none\">Dean of Students<\/span><\/a><span data-contrast=\"auto\">.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text admin_label=&#8221;Text&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h3><span data-contrast=\"auto\">6.1 Report Submission<\/span><\/h3>\n<p>\u200b<\/p>\n<p><span data-contrast=\"auto\">Complete your report using the <a href=\"https:\/\/drive.google.com\/drive\/folders\/1xDYIomn9e9FxbIeFcsclSbXHTtHROD1j\">JDF<\/a> format, then save your submission as a PDF. Name your report\u00a0<\/span><b><span data-contrast=\"auto\">p2_optimization_report.pdf<\/span><\/b><span data-contrast=\"auto\">. Reports should be submitted to the corresponding assignment submission page in Canvas. You should submit a single PDF for this assignment. Please submit the following file to Canvas in PDF format only:<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p style=\"padding-left: 40px;\"><b><span data-contrast=\"auto\">p2_optimization_report.pdf<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:720,&quot;335559737&quot;:720,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Do not submit any other files. The chart must be included in the report, not submitted as a separate file. Also note that when we run your submitted code, it should generate the chart. Not submitting a report will result in a penalty.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;http:\/\/lucylabs.gatech.edu\/ml4t\/wp-content\/uploads\/2021\/08\/p2_turnitin.png&#8221; title_text=&#8221;p2_turnitin&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;da784c99-9684-4a93-9ada-0d6c51279d65&#8243; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p>A<span data-contrast=\"auto\">fter submission, you may see a message like the one below. This is okay, as your project 2 report submission is retained within Canvas and this warning can be ignored.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">You are allowed unlimited submissions of the <\/span><b><span data-contrast=\"auto\">p2_optimization_report.pdf<\/span><\/b><span data-contrast=\"auto\"> file to <\/span><b><span data-contrast=\"auto\">Canvas<\/span><\/b><span data-contrast=\"auto\">.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h3>6.2 Code Submission<\/h3>\n<p><span data-contrast=\"auto\">This class uses Gradescope, a server-side auto-grader, to evaluate your code submission. No credit will be given for code that does not run in this environment and students are encouraged to leverage Gradescope TESTING prior to submitting an assignment for grading. <\/span><b><span data-contrast=\"auto\">Only code submitted to Gradescope SUBMISSION will be graded. If you submit your code to Gradescope TESTING and have not also submitted your code to Gradescope SUBMISSION, you will receive a zero (0).<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Please submit the following file to Gradescope <\/span><b><span data-contrast=\"auto\">SUBMISSION<\/span><\/b><span data-contrast=\"auto\">:<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p style=\"padding-left: 40px;\"><b><span data-contrast=\"auto\">optimization.py<\/span><\/b><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559685&quot;:720,&quot;335559737&quot;:720,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Do not submit any other files.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">You will see a message like this (immediately below) if your code was correctly submitted to Gradescope SUBMISSION.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p>[\/et_pb_text][et_pb_image src=&#8221;http:\/\/lucylabs.gatech.edu\/ml4t\/wp-content\/uploads\/2021\/08\/p2_gradescope_results.png&#8221; title_text=&#8221;p2_gradescope_results&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;da784c99-9684-4a93-9ada-0d6c51279d65&#8243; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][et_pb_text admin_label=&#8221;Text&#8221; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<p><strong><span data-contrast=\"auto\" xml:lang=\"EN-US\" lang=\"EN-US\" class=\"TextRun SCXW767142 BCX4\"><span class=\"NormalTextRun SCXW767142 BCX4\">Important<\/span><span class=\"NormalTextRun SCXW767142 BCX4\">: You are allowed a MAXIMUM of five (5) code submissions to <\/span><span class=\"NormalTextRun SpellingErrorV2 SpellingErrorHighlight SCXW767142 BCX4\">Gradescope<\/span><span class=\"NormalTextRun SCXW767142 BCX4\"> <\/span><\/span><span data-contrast=\"auto\" xml:lang=\"EN-US\" lang=\"EN-US\" class=\"TextRun Underlined SCXW767142 BCX4\"><span class=\"NormalTextRun SCXW767142 BCX4\">SUBMISSION<\/span><\/span><span data-contrast=\"auto\" xml:lang=\"EN-US\" lang=\"EN-US\" class=\"TextRun SCXW767142 BCX4\"><span class=\"NormalTextRun SCXW767142 BCX4\">.<\/span><\/span><span class=\"EOP SCXW767142 BCX4\" data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/strong><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row module_id=&#8221;grading&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2>7 Grading Information<\/h2>\n<p><span data-contrast=\"auto\">Your report is worth 20% of your grade. As such, it will be graded on a 20-point scale coinciding with a rubric design to mirror the criteria stated above.\u00a0The submitted code (which is worth 80% of your grade) is run as a batch job after the project deadline. The code will be graded using a rubric design to mirror the implementation details above, where each of the 10 implementation test cases is worth 8 points. Deductions will be applied for unmet implementation requirements or code that fails to run.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">We do not provide an explicit set timeline for returning grades, except that all assignments and exams will be graded before the institute deadline (end of the term). As will be the case throughout the term, the grading team will work as quickly as possible to provide project feedback and grades.\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Once grades are released, any grade-related matters must follow the <\/span><a href=\"https:\/\/lucylabs.gatech.edu\/ml4t\/fall2022\/assignment-follow-up\/\" target=\"_blank\" rel=\"noopener\"><span data-contrast=\"none\">Assignment Follow-Up guidelines and process<\/span><\/a><span data-contrast=\"auto\"> alone. Regrading will only be undertaken in cases where there has been a genuine error or misunderstanding. Please note that requests will be denied if they are not submitted using the <\/span><span data-contrast=\"auto\">Fall 2022<\/span><span data-contrast=\"auto\">\u00a0form or do not fall within the timeframes specified on the <\/span><a href=\"https:\/\/lucylabs.gatech.edu\/ml4t\/fall2022\/assignment-follow-up\/\" target=\"_blank\" rel=\"noopener\"><span data-contrast=\"none\">Assignment Follow-Up<\/span><\/a><span data-contrast=\"auto\"> page.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text admin_label=&#8221;Text&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h3>7.1 Grading Rubric<\/h3>\n<p>&nbsp;<\/p>\n<h4>7.1.1 Report [20 Points]<\/h4>\n<p><span data-contrast=\"auto\">Each chart line (i.e., SPY, Portfolio) is worth 10 points each. Deductions will be applied if any of the following occur:<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<ul>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">If no chart is provided or the chart is total nonsense. (-20 points).\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">If a plot is entirely incorrect (e.g., wrong shape, wrong time period) (-10 points).\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span data-contrast=\"auto\">If a plot is partly incorrect (e.g., chart begins correctly but midway or after is incorrect) (-5 points).\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"4\" data-aria-level=\"1\"><span data-contrast=\"auto\">1) If the chart is not normalized (-10 points) <\/span><b><span data-contrast=\"auto\">XOR<\/span><\/b><span data-contrast=\"auto\"> 2) If the chart data scale is substantially wrong (e.g., the right shape that is normalized to 1 but the max\/end values are wrong \u2013 for example, 3.5 instead of 2.5). (-5 points)\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"4\" data-aria-level=\"1\"><span data-contrast=\"auto\">If the chart is missing a required data series (i.e., the chart is missing the portfolio line or the SPY line) (-10 points per missing data series).\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"4\" data-aria-level=\"1\"><span data-contrast=\"auto\">If the chart is missing labels, text, or a legend; or if the labels, text, or legend are unreadable (e.g., too small, labels overlap a lot). (-2 points per instance).\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<\/ul>\n<ul><\/ul>\n<p><span data-contrast=\"auto\">The report score range is from a minimum of zero (0) to 20 points.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<h4><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">7.1.2 Code<\/span><\/h4>\n<p><span data-contrast=\"auto\">Code deductions will be applied if any of the following occur:<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<ul>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">If the code does not produce appropriate charts that are saved as .png files. (-10 points)<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">If the code displays any charts in a window or screen. (-10 points)<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<li><span><span data-contrast=\"auto\"><span>If the code saves in a directory outside\u00a0<\/span><\/span><\/span><span><span data-contrast=\"auto\"><span>the project\u00a0<\/span><\/span><\/span><span><span data-contrast=\"auto\"><span>directory<\/span><\/span><\/span><span><span data-contrast=\"auto\"><span>.\u00a0 (up to a max of \u201320 points)<\/span><\/span><\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\"><\/span><\/li>\n<\/ul>\n<h4><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">7.1.3\u00a0<\/span>Auto-Grader (Private Grading Script) [80 Points]<\/h4>\n<p><span data-contrast=\"auto\">We will test your code against 10 cases (8 points per case). Each case will be deemed \u201ccorrect\u201d if:\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<ul>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span data-contrast=\"auto\">sum(allocations) = 1.0 +- 0.02 (+2 points)\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<\/ul>\n<ul>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">Each allocation is between 0 and 1.0 +- 0.02 (negative allocations are allowed if they are very small) (+2 points)\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0d7\" data-font=\"Symbol\" data-listid=\"42\" aria-setsize=\"-1\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">Standard deviation of daily return of the allocated portfolio is within 5% of our reference solution or lower (+4 points)\u00a0<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<\/ul>\n<p><span data-contrast=\"auto\">There is no partial credit for the per-test-case points breakdown above if outside the threshold. If you are within the threshold, you get the point allocation, outside the threshold you get 0. The total score is additive, with a minimum score of zero (0) and a maximum score of 80.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row module_id=&#8221;guidelines&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2>8\u00a0DEVELOPMENT GUIDELINES (ALLOWED &amp; PROHIBITED)<\/h2>\n<p><span data-contrast=\"auto\">See the <\/span><a href=\"https:\/\/lucylabs.gatech.edu\/ml4t\/fall2022\/project-guidelines-2\/\" target=\"_blank\" rel=\"noopener\"><span data-contrast=\"auto\">Course Development Recommendations, Guidelines, and Rules<\/span><\/a><span data-contrast=\"auto\"> for the complete list of requirements applicable to all course assignments. <\/span><b><span data-contrast=\"auto\">The Project Technical Requirements are grouped into three sections: Always Allowed, Prohibited with Some Exceptions, and Always Prohibited<\/span><\/b><span data-contrast=\"auto\">.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">The following exemptions to the Development Recommendations, Guidelines, and Rules apply to this project:<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"49\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">Watermarked charts may be shared in the dedicated discussion forum thread alone.<\/span><span data-ccp-props=\"{&quot;134233279&quot;:true,&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/li>\n<\/ul>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row module_id=&#8221;optional&#8221; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.16&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;221ce88c-f148-4b33-9df8-3f8178b14fcd&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h2>9 Optional Resources<\/h2>\n<p><span data-contrast=\"auto\">Although the use of these or other resources is not required; some may find them useful in completing the project or in providing an in-depth discussion of the material.\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Sharpe (1994), <\/span><a href=\"https:\/\/web.stanford.edu\/~wfsharpe\/art\/sr\/sr.htm\" target=\"_blank\" rel=\"noopener\"><span data-contrast=\"none\">The Sharpe Ratio<\/span><\/a><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/www.dropbox.com\/s\/ouifx3kqb2g5k4y\/assess_portfolio_2022Fall.zip?dl=1\" target=\"_blank\" rel=\"noopener\"><span data-contrast=\"none\">(Deprecated) Assess Portfolio Files<\/span><\/a><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">SciPy.org, <\/span><a href=\"https:\/\/docs.scipy.org\/doc\/scipy-1.2.1\/reference\/generated\/scipy.optimize.minimize.html\" target=\"_blank\" rel=\"noopener\"><span data-contrast=\"none\">scipy.optimize.minimize<\/span><\/a><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">TutorialsPoint.com, <\/span><a href=\"https:\/\/www.tutorialspoint.com\/What-are-default-arguments-in-python\" target=\"_blank\" rel=\"noopener\"><span data-contrast=\"none\">What are default arguments in Python?<\/span><\/a><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Hilpisch (1<\/span><span data-contrast=\"auto\">st<\/span><span data-contrast=\"auto\"> or 2<\/span><span data-contrast=\"auto\">nd<\/span><span data-contrast=\"auto\"> edition), <\/span><a href=\"https:\/\/learning.oreilly.com\/library\/view\/python-for-finance\/9781492024323\/\" target=\"_blank\" rel=\"noopener\"><span data-contrast=\"none\">Python for Finance<\/span><\/a><span data-contrast=\"auto\"> (Chapter 9 \u2013 Mathematical Tools)<\/span><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Martelli, A. Ravenscroft, and S. Holden (2017), <\/span><a href=\"https:\/\/learning.oreilly.com\/library\/view\/python-in-a\/9781491913833\/\" target=\"_blank\" rel=\"noopener\"><span data-contrast=\"none\">Python in a Nutshell, 3rd Edition<\/span><\/a><span data-ccp-props=\"{&quot;201341983&quot;:1,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:170,&quot;335559740&quot;:340}\">\u00a0<\/span><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Project 2: Optimize SomethingRevisions This assignment is subject to change up until 3 weeks prior to the due date. We do not anticipate changes; any changes will be logged in this section.1. Overview In this project, you will write software that evaluates and prepares portfolio metrics. You will submit the code for the project to [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":3071,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"<!-- wp:divi\/placeholder \/-->","_et_gb_content_width":"","footnotes":""},"class_list":["post-3111","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/lucylabs.gatech.edu\/ml4t\/wp-json\/wp\/v2\/pages\/3111","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lucylabs.gatech.edu\/ml4t\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/lucylabs.gatech.edu\/ml4t\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/lucylabs.gatech.edu\/ml4t\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/lucylabs.gatech.edu\/ml4t\/wp-json\/wp\/v2\/comments?post=3111"}],"version-history":[{"count":8,"href":"https:\/\/lucylabs.gatech.edu\/ml4t\/wp-json\/wp\/v2\/pages\/3111\/revisions"}],"predecessor-version":[{"id":3568,"href":"https:\/\/lucylabs.gatech.edu\/ml4t\/wp-json\/wp\/v2\/pages\/3111\/revisions\/3568"}],"up":[{"embeddable":true,"href":"https:\/\/lucylabs.gatech.edu\/ml4t\/wp-json\/wp\/v2\/pages\/3071"}],"wp:attachment":[{"href":"https:\/\/lucylabs.gatech.edu\/ml4t\/wp-json\/wp\/v2\/media?parent=3111"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}