Options Volatility Training SVM Operators

jinghe_xiaojinghe_xiao Member Posts: 3 Contributor I
edited November 2018 in Help

I am new in RapidMiner and trying to run training model traing for historical volatility. I really don't know how to improve the accuracy rate because the highest I can get are only 60.6%. But after adding index series, all of sudden improved to 83.7%. I believe there must be something wrong. Can any expert tell me where I did something wrong because I am trying playing around to improve the accuracy rate for options volatility.

 

 

 

<?xml version="1.0" encoding="UTF-8"?><process version="7.4.000">
<context>
<input/>
<output/>
<macros/>
</context>
<operator activated="true" class="process" compatibility="7.4.000" expanded="true" name="Process">
<process expanded="true">
<operator activated="true" class="retrieve" compatibility="7.4.000" expanded="true" height="68" name="Retrieve Sugar3Yrs_5153050" width="90" x="45" y="85">
<parameter key="repository_entry" value="../data/Sugar3Yrs_5153050"/>
</operator>
<operator activated="true" class="set_role" compatibility="7.4.000" expanded="true" height="82" name="Set Role" width="90" x="179" y="85">
<parameter key="attribute_name" value="日期"/>
<parameter key="target_role" value="id"/>
<list key="set_additional_roles">
<parameter key="HV5" value="label"/>
</list>
</operator>
<operator activated="true" class="series:windowing" compatibility="7.4.000" expanded="true" height="82" name="Windowing" width="90" x="313" y="85">
<parameter key="window_size" value="5"/>
<parameter key="create_label" value="true"/>
<parameter key="label_attribute" value="HV5"/>
<parameter key="stop_on_too_small_dataset" value="false"/>
</operator>
<operator activated="true" class="series:index_series" compatibility="7.4.000" expanded="true" height="82" name="Index Series" width="90" x="447" y="85">
<parameter key="attribute_name" value="label"/>
</operator>
<operator activated="true" class="series:sliding_window_validation" compatibility="7.4.000" expanded="true" height="124" name="Validation" width="90" x="581" y="85">
<parameter key="training_window_width" value="5"/>
<parameter key="training_window_step_size" value="1"/>
<parameter key="test_window_width" value="5"/>
<parameter key="cumulative_training" value="true"/>
<process expanded="true">
<operator activated="true" class="support_vector_machine" compatibility="7.4.000" expanded="true" height="124" name="SVM" width="90" x="112" y="34">
<parameter key="convergence_epsilon" value="0.007"/>
</operator>
<connect from_port="training" to_op="SVM" to_port="training set"/>
<connect from_op="SVM" from_port="model" to_port="model"/>
<portSpacing port="source_training" spacing="0"/>
<portSpacing port="sink_model" spacing="0"/>
<portSpacing port="sink_through 1" spacing="0"/>
</process>
<process expanded="true">
<operator activated="true" class="apply_model" compatibility="7.4.000" expanded="true" height="82" name="Apply Model" width="90" x="112" y="34">
<list key="application_parameters"/>
</operator>
<operator activated="true" class="series:forecasting_performance" compatibility="7.4.000" expanded="true" height="82" name="Performance" width="90" x="313" y="34">
<parameter key="horizon" value="1"/>
</operator>
<connect from_port="model" to_op="Apply Model" to_port="model"/>
<connect from_port="test set" to_op="Apply Model" to_port="unlabelled data"/>
<connect from_op="Apply Model" from_port="labelled data" to_op="Performance" to_port="labelled data"/>
<connect from_op="Performance" from_port="performance" to_port="averagable 1"/>
<portSpacing port="source_model" spacing="0"/>
<portSpacing port="source_test set" spacing="0"/>
<portSpacing port="source_through 1" spacing="0"/>
<portSpacing port="sink_averagable 1" spacing="0"/>
<portSpacing port="sink_averagable 2" spacing="0"/>
</process>
</operator>
<connect from_op="Retrieve Sugar3Yrs_5153050" from_port="output" to_op="Set Role" to_port="example set input"/>
<connect from_op="Set Role" from_port="example set output" to_op="Windowing" to_port="example set input"/>
<connect from_op="Windowing" from_port="example set output" to_op="Index Series" to_port="example set input"/>
<connect from_op="Index Series" from_port="example set output" to_op="Validation" to_port="training"/>
<connect from_op="Validation" from_port="training" to_port="result 1"/>
<connect from_op="Validation" from_port="averagable 1" to_port="result 2"/>
<portSpacing port="source_input 1" spacing="0"/>
<portSpacing port="sink_result 1" spacing="0"/>
<portSpacing port="sink_result 2" spacing="0"/>
<portSpacing port="sink_result 3" spacing="0"/>
</process>
</operator>
</process>

 

Tagged:

Best Answer

  • Thomas_OttThomas_Ott RapidMiner Certified Analyst, RapidMiner Certified Expert, Member Posts: 1,761 Unicorn
    Solution Accepted

    I wrote an extensive process on predicting historical volatility for the S&P500 options, with optimization I got around the high 60's, low 70's. 

     

    What I see off the bat is that you're using a Dot kernel for the SVM. You'll need to use an RBF kernel and vary the gamma and C values while simultaneously adjust the window traning and testing widths. 

Answers

  • jinghe_xiaojinghe_xiao Member Posts: 3 Contributor I
    Hi Thomas,

    Finally can have you here. I did watch all of your video posted previously and very useful to me. Thank you for your advice and will try on it.
  • jinghe_xiaojinghe_xiao Member Posts: 3 Contributor I

    Sorry Thomas, If let's say I found a good result, what should I do to predict next 5 days volatility? Could you please further advise?

  • Thomas_OttThomas_Ott RapidMiner Certified Analyst, RapidMiner Certified Expert, Member Posts: 1,761 Unicorn

    Yes, you sure can. 

     

    Here's a link to my old Blot blog where I auto optimized my Volatility prediction process in RapidMiner and then autogenerated the blog post with images: http://neuralmarket.blot.im/2016-06-06-sandp500-historical-vol-prediction

     

     

     

     

     

     

     

Sign In or Register to comment.